来自cmp 0x4(%esi)的0x4,%ebx汇编指令是什么意思?

时间:2013-02-14 15:42:41

标签: assembly x86 gdb g++ att

以下装配线中的0x4是什么意思?

cmp 0x4(%esi),%ebx
je ...

当此比较返回相等且执行跳转时,寄存器具有以下值: %esi 0xe944d6d0 %ebx 0xe94ceccc

很抱歉提出这么简单的问题,但我很难用google搜索这样的paranthesis符号。在时间压力下花了半个多小时。

1 个答案:

答案 0 :(得分:3)

这是AT& T语法,在Intel语法中它将是:

cmp ebx,[esi+4]

请注意,操作数的顺序是相反的。

在Intel语法中,它是dest,src。在AT& T它是src,dest。

基本上,该指令通过从ebx中减去存储在[esi+4]中的双字值,将[esi+4]ebx中存储的双字值进行比较,就像sub一样会这样做,但cmp只更新标志,它不会将结果存储在任何地方。