【问题标题】:Difference between abbr E and abbr M in IA-32 Architectures Software Developer Manual 2CIA-32 Architectures Software Developer Manual 2C 中缩写 E 和缩写 M 的区别
【发布时间】:2012-02-24 06:46:00
【问题描述】:

我正在解码 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)。

【问题讨论】:

    标签: architecture assembly x86 intel


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-23
      • 1970-01-01
      • 2016-07-12
      • 2015-12-31
      • 2014-04-20
      • 2013-04-02
      • 1970-01-01
      相关资源
      最近更新 更多