3

我一直在想,是否有一些不可见的操作码或标志或任何告诉汇编指令如何处理其参数的东西?我有点困惑,因为显然相同的指令可以使用不同类型的操作数进行操作 - 支持寄存器、内存地址、偏移量和立即值。

汇编程序的“文本表示”中似乎没有任何额外的细节,但二进制文件中可能存在差异,例如切换某些位以便 CPU 知道使用哪种类型的操作数?

4

1 回答 1

6

指令在硬件中编码。这是如何完成的,具体取决于 CPU。在 x86 体系结构上,您有一些定义操作数寻址模式的位。有关更多详细信息,您应该参考英特尔程序员参考手册,其中对此进行了详细说明。

有时有一些指令的操作码不同,效果相同,这种情况下,汇编程序可以选择一个。

http://www.sandpile.org/x86/opc_rm.htm

于 2013-08-09T14:18:18.710 回答