繁体   English   中英

汇编语言整数寄存器

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM