希望我所要求的是有道理的。我在一些汇编代码上运行gdb调试器。我遇到了一行
cmp %eax, (%ebx)
现在,比较这两个寄存器是否有区别,因为它周围有一个括号?我所做的这本书并没有很好地解释这一点。
答案 0 :(得分:3)
带括号的那个意味着寄存器%ebx
指向的内存地址中的值。没有括号的那个意味着寄存器本身的值。
答案 1 :(得分:2)
特定指令集的汇编程序有很多种,通常使用不同的语法。你没有告诉我们哪个汇编程序,所以我们不得不猜测。
我猜是
(<reg>)
表示“使用寄存器作为第二个操作数的内存指针。”应该有其他变体对应于可能是x86指令集(同样,你没有告诉我们)允许偏移和基本+偏移量索引,因为这些是x86非常常见的寻址模式。