3.58 long decode2(long x, long y, long z) { int result = x * (y - z); if((y - z) & 1) result = ~result; return result; } 3.59 这个题考察的是2.3.4和2.3.5节的一个定理:w比特长度的两个数相乘,会产生一个2w长度的数,不管这两个数是无符号数还是补码表示的有符号数,把结果截取的低w比特都是相同的. 所以我们可以用无符号数乘法指令mulq实现有符号数乘法:先把数有符号扩…
7.6 +-----------------------------------------------------------------------+ |Symbol entry? Symbol type Module where defined Section | | | | buf Y extern m.o .data | | | | bufp0 Y global swap.o .data | | | | bufp1 Y local swap.o .bss | | | | swap Y…
5.13 A. B. 由浮点数加法的延迟,CPE的下界应该是3. C. 由整数加法的延迟,CPE的下界应该是1. D. 由A中的数据流图,虽然浮点数乘法需要5个周期,但是它没有"数据依赖",也就是说,每次循环时的乘法不需要依赖上一次乘法的结果,可以各自独立进行.但是加法是依赖于上一次的结果的(sum = sum + 乘法结果),所以该循环的"关键路径"是加法这条链.而浮点数加法的延迟为3个周期,所以CPE为3.00. 5.14 A. 由5.13中分析的,关键路径是一…
8.9 关于并行的定义我之前写过一篇文章,参考: 并发与并行的区别 The differences between Concurrency and Parallel +----------------------------+ | Process pair Concurrent?| +----------------------------+ | AB N | | | | AC Y | | | | AD Y | | | | BC Y | | | | BD Y | | | | CD Y | +--…