VEX 前缀可以与通用指令一起使用吗?
Can VEX prefixes be used with general-purpose instructions?
我发现 Intel 和 AMD 手册都不清楚 VEX
前缀是否可以用在没有定义特殊行为的指令上,它出现的方式 REX
可以。比如CPUID
是0F A2
,我可以把它编码成VEX.LIG.0F.WIG A2
(C4 E1 78 A2
)吗? NOP
使用 VEX.LIG.WIG 90
(C5 F8 90
) 的 2 字节 VEX
形式怎么样?
如果允许,是否必须将未使用的字段设置为特定值? EVEX
呢?
没有
Intel 的 insn ref 手册(第 2 卷)非常清楚。请参阅 x86 wiki 中的 link。它列出了每个指令助记符的所有有效编码。例如,它分别列出了 PSHUFB
的非 VEX 和 VEX 编码。同样,Intel Future Extensions pdf 列出了每个 EVEX 指令的所有有效编码。
它只列出了imul
的非VEX编码,因为没有VEX编码。
仅列出了 pext r64a, r64b, r/m64
的 VEX 编码,因为 BMI2 整数指令仅适用于 VEX 编码。
我发现 Intel 和 AMD 手册都不清楚 VEX
前缀是否可以用在没有定义特殊行为的指令上,它出现的方式 REX
可以。比如CPUID
是0F A2
,我可以把它编码成VEX.LIG.0F.WIG A2
(C4 E1 78 A2
)吗? NOP
使用 VEX.LIG.WIG 90
(C5 F8 90
) 的 2 字节 VEX
形式怎么样?
如果允许,是否必须将未使用的字段设置为特定值? EVEX
呢?
没有
Intel 的 insn ref 手册(第 2 卷)非常清楚。请参阅 x86 wiki 中的 link。它列出了每个指令助记符的所有有效编码。例如,它分别列出了 PSHUFB
的非 VEX 和 VEX 编码。同样,Intel Future Extensions pdf 列出了每个 EVEX 指令的所有有效编码。
它只列出了imul
的非VEX编码,因为没有VEX编码。
仅列出了 pext r64a, r64b, r/m64
的 VEX 编码,因为 BMI2 整数指令仅适用于 VEX 编码。