x86比较命令目标语法

时间:2013-10-13 03:38:49

标签: assembly x86

我正在“调试”一段x86代码 - 前言是从“解锁”它的代码中得到的一系列5个数字,它在内存和数学中跳了很多,并且数字包含它。 / p>

我在第一次“跳跃”之前跟踪了我需要输入的内容,它是:

cmp    %eax,0x80498d4(,%ebx,4)

我知道这个命令是cmp s, d,我正在拿d-s并设置EFLAGS。但是在这个例子中D 0x80498d4(, %ebx,4)是什么?显然正在注册%ebx,但我不知道是什么。

1 个答案:

答案 0 :(得分:4)

那是AT& T memory reference syntax

AT& T的displacement(base register, offset register, scalar multiplier)语法转换为英特尔的[base register + displacement + offset register * scalar multiplier]语法(我认为这更容易理解)。

因此,AT& T语法中的cmp %eax,0x80498d4(,%ebx,4)相当于英特尔语法中的cmp [80498d4h + ebx*4], eax

该指令以英文读取为“将寄存器EAX的内容与地址0x80498d4 +(EBX * 4)的内存内容进行比较”。