可能重复:
在 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,对吗?