Assembly x86比较命令目标语法

Assembly x86比较命令目标语法,assembly,x86,Assembly,X86,我正在“调试”一段x86代码——序言中有一系列的5个数字可以“解锁”它,它在内存+数学中跳跃了很多,这些数字包含了它 在第一次“跳转”之前,我已经跟踪了我需要输入的内容,它是: 我知道这个命令是cmp s,d,我在这里取d-s并设置EFLAGS。但是在这个例子中,d0x80498d4(,%ebx,4)是什么?显然,正在采取措施注册ebx,但我不知道是什么。这就是AT&t AT&T的位移(基址寄存器、偏移寄存器、标量乘法器)语法转换为英特尔的[基址寄存器+位移+偏移寄存器*标量乘法器]语法(我认为

我正在“调试”一段x86代码——序言中有一系列的5个数字可以“解锁”它,它在内存+数学中跳跃了很多,这些数字包含了它

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

我知道这个命令是
cmp s,d
,我在这里取d-s并设置EFLAGS。但是在这个例子中,
d0x80498d4(,%ebx,4)
是什么?显然,正在采取措施注册ebx,但我不知道是什么。

这就是AT&t

AT&T的
位移(基址寄存器、偏移寄存器、标量乘法器)
语法转换为英特尔的
[基址寄存器+位移+偏移寄存器*标量乘法器]
语法(我认为这更容易理解)

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

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

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