以下装配线中的0x4
是什么意思?
cmp 0x4(%esi),%ebx
je ...
当此比较返回相等且执行跳转时,寄存器具有以下值:
%esi
0xe944d6d0
%ebx
0xe94ceccc
很抱歉提出这么简单的问题,但我很难用google搜索这样的paranthesis符号。在时间压力下花了半个多小时。
答案 0 :(得分:3)
这是AT& T语法,在Intel语法中它将是:
cmp ebx,[esi+4]
请注意,操作数的顺序是相反的。
在Intel语法中,它是dest,src。在AT& T它是src,dest。
基本上,该指令通过从ebx
中减去存储在[esi+4]
中的双字值,将[esi+4]
与ebx
中存储的双字值进行比较,就像sub
一样会这样做,但cmp
只更新标志,它不会将结果存储在任何地方。