[英]Assembly Language Integer registers
我不明白该汇编指令的作用。 它的作用是什么?为什么?
imull $16, (%eax, %edx,4)
寄存器的初始值为
%eax= 0x100x
%edx= 0x3
我假设您正在尝试了解如何解释该AT&T样式的汇编指令,尤其是寻址部分。 我敢肯定,您不需要帮助就可以了解imull $16
部分-它只是执行有符号乘法,最后一个l
代表long
词。
(%eax, %edx, 4)
是寻址,在这里有一个基地址,一定量的元件中的一个偏移量,以及用于通过每一个的大小的元素的数量乘以一个比例/乘法器的形式: (base, offset, offset scale/multiplier)
。
您最终得到的是(base + (offset * multiplier)
,因此在这种情况下它将是:
(%eax + (%edx * 4))
(0x100 + (0x3 * 4))
(0x100 + 0xC)
(0x10C)
因此,指令imull $16, (%eax, %edx,4)
执行16
的有符号乘法与地址0x10C
字的值的0x10C
。
该指令的结果将是存储在地址0x10c
dword
乘以16(或者,如果您愿意,向左移4位)的任何dword
。 结果也将写入该地址。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.