汇编指令如何区分寄存器、内存地址、立即值或偏移量参数



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

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

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

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

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

相关内容

最新更新