cmp%eax,0x80498d4(,%ebx,4)是什么意思?

时间:2015-03-02 02:52:22

标签: c assembly x86 gdb att

我知道还有其他类似的问题,但我仍然无法理解它的()部分。有人可以为我拼写这种语法吗?感谢。

1 个答案:

答案 0 :(得分:2)

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

cmp 是比较汇编指令。它通过签名从左侧减去右参数并设置CPU EFLAGS寄存器来执行两个参数之间的比较。然后可以使用该EFLAGS寄存器进行条件分支/移动等。

第一个参数:`%eax(%eax寄存器中的值)

第二个参数: 0x80498d4(,%ebx,4)。这被读作offset ( base, index, scale )在您的示例中,第二个参数的值是内存位置偏移0x80498d4 + base (which I believe defaults to zero if not included) + value in %ebx register * 4 (scaling factor)

注意:我认为此处的基数为空,默认值为0.

您可以查看http://docs.oracle.com/cd/E19120-01/open.solaris/817-5477/ennby/index.html,了解有关Intel x86汇编指令语法的更多信息。