非常简单的汇编寄存器比较

时间:2014-10-04 19:14:55

标签: assembly x86

希望我所要求的是有道理的。我在一些汇编代码上运行gdb调试器。我遇到了一行

cmp %eax, (%ebx)

现在,比较这两个寄存器是否有区别,因为它周围有一个括号?我所做的这本书并没有很好地解释这一点。

2 个答案:

答案 0 :(得分:3)

带括号的那个意味着寄存器%ebx指向的内存地址中的值。没有括号的那个意味着寄存器本身的值。

答案 1 :(得分:2)

特定指令集的汇编程序有很多种,通常使用不同的语法。你没有告诉我们哪个汇编程序,所以我们不得不猜测。

我猜是

 (<reg>) 

表示“使用寄存器作为第二个操作数的内存指针。”应该有其他变体对应于可能是x86指令集(同样,你没有告诉我们)允许偏移和基本+偏移量索引,因为这些是x86非常常见的寻址模式。

相关问题