0

可能重复:
在 x86 程序集中混淆 add 命令

我想了解这两行汇编:

8048d74:       03 44 9e fc             add    -0x4(%esi,%ebx,4),%eax
8048d78:       39 04 9e                cmp    %eax,(%esi,%ebx,4)

我认为(%esi,%ebx,4)是一个有效的地址形式 (BASE, INDEX, SCALE)

我相信 add 命令正在获取 %eax 的值,将其添加到 [esi + ebx*4 + mem_location] 的值并将其存储在同一位置。

然后,cmp 指令测试 [esi + ebx*4 + mem_location] 处的值是否等于 %eax 处的值。

所以,只有当添加的两个值之一是 0 时,这才会返回 true,对吗?

4

1 回答 1

1

这似乎是 AT&T 格式的源代码,其中的顺序是op source, dest. 这意味着第一个是将有效地址处的值添加eax。然后,第二行将第二个值与 eax 进行比较。

于 2012-04-20T22:34:13.217 回答