Intel x86_64 reference manual?中列出的“ Op / En”格式是什么 例如,在Add opcode中,我可以猜测诸如“ I” =立即数之类的内容,但是这些内容是否有详尽的清单?
答案 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
代表即时。
对于M
或R
字段,使用ModRM字节编码的显式操作数为r/m
或reg
。
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对表的行使用A
至D
,因为唯一的区别是缩放后的短位移和掩码的“元组类型”。如果他们使用MRI / MRI2 / MRI4等,那会很奇怪。
(rep) movs
使用ZO
:所有操作数都是隐式的(DF,RSI,RDI和它们所指向的内存),因此可能表示零操作数。 (至少不需要编码)。
cdq
使用相同的ZO
,是的,它可能是“零(显式)操作数”
x86只有几种方法可以指定显式操作数。