【问题标题】:What does 0x4 from cmp 0x4(%esi),%ebx assembly instruction mean?cmp 0x4(%esi),%ebx 汇编指令中的 0x4 是什么意思?
【发布时间】:2013-02-14 15:42:40
【问题描述】:

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

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

当此比较返回相等并执行跳转时,寄存器具有以下值: %esi0xe944d6d0 %ebx0xe94ceccc

很抱歉提出这么简单的问题,但我很难用谷歌搜索这样的括号符号。在时间紧迫的情况下花了半个多小时。

【问题讨论】:

标签: assembly x86 gdb g++ att


【解决方案1】:

这是 AT&T 语法,在 Intel 语法中应该是:

cmp ebx,[esi+4]

注意操作数的顺序是颠倒的。

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

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

【讨论】:

    猜你喜欢
    • 2021-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-24
    • 2011-07-31
    • 2011-02-02
    • 1970-01-01
    相关资源
    最近更新 更多