2014-10-04 90 views
1

希望我问的是有道理的。我在某些汇编代码上运行gdb调试器。我碰到一条线,有非常简单的汇编寄存器比较

cmp %eax, (%ebx) 

现在,比较这两个寄存器有什么区别,因为有一个括号括起来吗?我所写的这本书并没有做出很好的解释。

+1

你在用什么书? – 2014-10-04 19:16:20

+5

获得一本新书。 – 2014-10-04 19:16:47

回答

3

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

+0

谢谢!开门见山。 – user2789945 2014-10-04 19:30:16

2

针对特定指令集的汇编语言有许多风格,通常语法不同。你没有告诉我们哪个汇编程序,所以我们不得不猜测。

我的猜测是

(<reg>) 

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

+0

对不起,我应该指定。它在x86中。感谢您的及时和简洁的回应! – user2789945 2014-10-04 19:30:00