Assembly 英特尔手册中的x86_64操作码编码格式

Assembly 英特尔手册中的x86_64操作码编码格式,assembly,x86-64,intel,Assembly,X86 64,Intel,表中列出的“Op/En”格式是什么 例如,在中,我可以猜测一些,如“I”=立即,但是否有一个全面的列表?的介绍部分解释如何阅读每个条目: 指令汇总表中的第3.1.1.4节操作数编码列 “操作数编码”列在中缩写为Op/En 说明摘要表标题。指令操作数编码 使用 在操作数编码中交叉引用行条目的字母 指令汇总表后面的定义表 注释 指令的Op/En列中的字母仅适用于编码定义表 紧跟在说明汇总表之后。 所以它们只是每个指令对应的表的键。不,英特尔似乎没有记录它们代表什么,但它非常简单 (相关:)

表中列出的“Op/En”格式是什么 例如,在中,我可以猜测一些,如“I”=立即,但是否有一个全面的列表?的介绍部分解释如何阅读每个条目:

指令汇总表中的第3.1.1.4节操作数编码列

“操作数编码”列在中缩写为Op/En 说明摘要表标题。指令操作数编码 使用 在操作数编码中交叉引用行条目的字母 指令汇总表后面的定义表

注释

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

所以它们只是每个指令对应的表的键。不,英特尔似乎没有记录它们代表什么,但它非常简单

(相关:)


是的,
I
表示立即

对于
R/M
reg
字段,使用ModRM字节编码的显式操作数为
M
R

V
是由VEX.vvv或EVEX编码的字段,为此类指令提供非破坏性操作的第三个操作数,或类似FMA的三个操作数指令

使用立即数字节对第四个操作数进行编码,并在to Op/En列中使用
RVMR
。另请参阅-我认为这可能是唯一一条在AVX512的3+掩码寄存器之外具有4个独立显式编码操作数的x86指令

对表格的行使用
A
D
,因为唯一的区别是用于缩放短位移和掩蔽的“元组类型”。如果他们使用MRI/MRI2/MRI4/等等,那就太奇怪了


uses
ZO
:所有操作数都是隐式的(DF、RSI、RDI以及它们指向的内存),因此可能代表零操作数。(至少不需要编码)

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


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

是的,我想,在你所说的第二卷手册的介绍部分。@PeterCordes如果你说的是第2.1节,我只看到对整个指令编码方式的参考,不是我在文章中显示的列的含义。@Mdren:也许你在看一份旧的PDF副本,或者是旧的HTML和英特尔手册的摘录。还是说AMD的手册?当前的英特尔PDF(它记录了现代的x86,通常包括x86-64长模式)和从中提取的HTML(就像我链接的那些)都说
ZO
。除非他们在我没看过的其他指令中使用
NP
?但不管怎样,我假设这表示没有参数。