理解操作数形式

逆向工程 部件 x86-64
2021-06-25 10:29:25

9(%rax, %rdx):这里发生了什么?9偏移?你把这两个寄存器加在一起了吗?

我正在阅读 Randal E. Bryant 和 David R. O'Hallaran 的“计算机系统 - 程序员的视角”

在第 209 页,我们看到了一个表格(操作数形式):

在此处输入图片说明


然后可以做一个小任务,我必须用值填充空表。我尽力了,但如您所见,卡住了:

在此处输入图片说明

9(%rax,%rdx)。9偏移?你在这里添加两个寄存器吗?不太确定要添加什么。如果有人能引导我完成我需要填充的最后一个空值,我将不胜感激。


以下是解决方案:

在此处输入图片说明

1个回答

欢迎来到 AT&T 组装的奇妙世界!9 in9(%rax, %rdx)通常称为位移或有时称为base,您确实应该将所有三个值相加:

9+rax+rdx = 9+0x100+0x3 ​​= 0x10C

然后取消引用该地址,以便从地址 0x10C 加载值 0x11。

如果您打算坚持使用 AT&T,或者只是切换到 Intel 语法,我建议您阅读 Solaris x86 汇编语言参考手册,因为它使用更广泛(尤其是在处理器文档中)。