首页 文章

x86_64 - 编码mov指令

提问于
浏览
1

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

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

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

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

1 回答

  • 3

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

相关问题