【发布时间】:2012-04-22 00:08:18
【问题描述】:
如果我说:
lea (%eax,%eax,2), %edx
我被教导它本质上意味着:
edx = eax + eax * 2
这个格式是如何工作的?
我猜这会引出第二个问题。如果我有这样的事情:
add -0x4(%esi, %ebx, 4), %eax
我知道第一个操作数被添加到第二个操作数然后存储在第二个操作数中,但是我不明白的是第一个操作数的符号。另一个例子是如果我有:
cmp %eax, (%esi, %ebx, 4)
...,这是否意味着正在将 %eax 的值与以下值进行比较:
esi + ebx * 4
...?我尝试搜索了很多这样的东西,但我想我没有使用正确的词来找到有意义的答案,所以我决定在这里发帖。
【问题讨论】:
-
您的行是“AT&T 汇编器语法”,正如 Gnu 汇编器 (GAS) 使用的那样。网上有一些手册。
标签: assembly x86 addressing-mode