IA-32架构软件开发人员手册2C中abbr E和abbr M之间的区别

时间:2012-02-24 06:46:01

标签: architecture assembly x86 intel

我正在解码X86十六进制代码表示以回到程序集。 ISA manual 2C的A.2.1节提供了寻址方法的缩写代码(第A-2卷,第2C页)。谁能解释一下abbr E和abbr M之间有什么区别?

  

E - 操作码后面的ModR / M字节指定操作数。该   操作数是通用寄存器或存储器地址。如果   它是一个内存地址,地址是从一个段计算的   寄存器和以下任何值:基址寄存器,索引   寄存器,比例因子,位移。

     

M - ModR / M字节可能仅指内存(例如,BOUND,LES,   LDS,LSS,LFS,LGS,CMPXCHG8B)。

1 个答案:

答案 0 :(得分:1)

E可以允许驻留在内存或寄存器中的任何源或目标(例如MOV EAX, DWORD PTR DS:[ESI]MOV EAX, ESI),其中M只允许存储器地址,这意味着它不能寻址寄存器,但它可以寻址寄存器中值所指向的内存(CMPXCHG8b ESI无效,CMPXCHG8b QWORD PTR DS:[ESI]有效)。