x86_64 - 编码mov指令

时间:2017-03-27 18:17:06

标签: assembly x86 x86-64 opcode mov

编码x86_64指令mov rcx,rdx(使用https://defuse.ca/online-x86-assembler.htm)输出48 89 D1

this reference检查操作码显示该字节序列如何编码指令。

然而,该表中的两行(操作码8B)是一个非常相似的mov指令,但是操作数的顺序被翻转。
事实上,我能够使用48 8b ca对相同的指令进行编码(通过反编译验证)。

为什么两个操作码都存在?他们的差异是否超过了我能够解决的问题?什么时候可以挑选另一个?

1 个答案:

答案 0 :(得分:3)

modr / m字节最多只能编码一个内存操作数。所有支持源或目标中的存储器操作数的指令因此被编码两次,一次是源可能是存储器操作数,一次是目的地可能是存储器操作数。当然,这意味着您可以对两个操作数都是寄存器两次的助记符进行编码。