英特尔手册中的x86_64 Opcode编码格式

时间:2019-08-10 08:17:28

标签: assembly x86-64 intel

Intel x86_64 reference manual?中列出的“ Op / En”格式是什么 例如,在Add opcode中,我可以猜测诸如“ I” =立即数之类的内容,但是这些内容是否有详尽的清单?

1 个答案:

答案 0 :(得分:2)

Intel's vol.2 manual的简介部分介绍了如何阅读每个条目:

  

指令摘要表中的3.1.1.4节“操作数编码”列

     

“操作数编码”列在中缩写为Op / En   指令摘要表标题。指令操作数编码   使用以下命令为每种汇编指令语法提供信息:   交叉引用操作数编码中的行条目的字母   指令摘要表之后的定义表。 ...

     

注意

     
      
  • 指令的Op / En列中的字母仅适用于编码定义表   紧跟在指令摘要表之后。

  •   
  • ...

  •   

因此,它们只是每个指令附带的表的键。不,Intel似乎没有证明它们代表什么,但这很简单。

(相关:How to determine if ModR/M is needed through Opcodes?


是的,I代表即时。

对于MR字段,使用ModRM字节编码的显式操作数为r/mreg

V是由VEX.vvvv或EVEX编码的字段,为此类指令提供了非破坏性操作或FMA之类的3个操作数指令的第3个操作数。

vpblendvb xmm1, xmm2, xmm3/m128, xmm4用立即数对第4个操作数进行编码,并在Op / En列中使用RVMR。另请参阅What kind of address instruction does the x86 cpu have?-我认为这可能是唯一的x86指令,它具有4个单独的显式编码的操作数,位于AVX512的3 +掩码寄存器之外。

vextractf128 and the AVX512 versions of it对表的行使用AD,因为唯一的区别是缩放后的短位移和掩码的“元组类型”。如果他们使用MRI / MRI2 / MRI4等,那会很奇怪。


(rep) movs使用ZO:所有操作数都是隐式的(DF,RSI,RDI和它们所指向的内存),因此可能表示零操作数。 (至少不需要编码)。

cdq使用相同的ZO,是的,它可能是“零(显式)操作数”

x86只有几种方法可以指定显式操作数。