深入理解计算机系统 练习题2.38 答案与分析

就像我们将在第三章中看到的那样,LEA指令能够执行形如(a<<k)+b的计算,这里k等于0、1、2或3,而b等于0或者某个程序值。编译器尝尝用这条指令来执行常熟因子乘法。
考虑b等于0或者等于a、k为任意可能的值的情况,用一条LEA指令可以计算a的哪些倍数?
当b=0,(a<<k)+b=a* 2 k 2^k ,而k等于0、1、2或3,所以计算结果为a,2a,4a,8a
当b=1,(a<<k)+b=a*( 2 k 2^k +1),而k等于0、1、2或3,所以计算结果为2a,3a,5a,9a
所以综合结果为a,2a,3a,4a,5a,8a,9a

猜你喜欢

转载自blog.csdn.net/ciqingloveless/article/details/82840516