chen1922 发表于 2013-07-06 15:58

一段汇编不懂,请指教。。

第3行,imull为啥有2个操作数?书上说只有一个啊,S x (%eax)然后高位存在%edx 低位存在%eax
第3行执行后,%eax的值应该是乘积的低32位, 不再是x了。为啥第4行,mull 16(%ebp) 直接乘了呢?
刚接触汇编,不是很懂请指教{:3_185:}


djsxut 发表于 2013-08-01 13:01

书没看仔细。 32位机:

单操作数, 其中一个存放 %eax, 结果位于 %edx, %eax
mull S => 无符号全64位乘法
imull S => 有符号全64位乘法

双操作数,两个32位操作数产生一个32位乘积:
imul S, D=> D = D * S

其它的应该就可以看懂了。

weishuo1999 发表于 2013-08-02 11:30

不同的系统上指令不同也没必要纠结,这个语法本来就差异很大

djsxut 发表于 2013-08-02 22:02

本帖最后由 djsxut 于 2013-08-02 22:06 编辑

这个看起来就是linux x86 32位的。。。并且题目的风格很像《深入理解计算机系统》里题目的风格。
页: [1]
查看完整版本: 一段汇编不懂,请指教。。