我将本指南用于VEX前缀:http://wiki.osdev.org/X86-64_Instruction_Encoding#REX_prefix
我迷失了如何编码实际的VEX指令。 ADDPD指令(Intel x64第459页)操作码如下所示:VEX.NDS.128.66.0F.WIG 58 / r
嗯嗯什么? VEX指南对NDS' NDS'或者' WIG'。我错过了什么?答案 0 :(得分:3)
您缺少3.1.1.2"说明摘要表中的操作码列(带有VEX前缀的说明)" (我在电脑上的手册第64页,其他版本可能略有不同)
对于这个例子,重要的部分是:
VEX
(显然)表示有一个VEX前缀。NDS
,VEX.vvvv字段指定一个寄存器(它不总是,有时它是未使用的,必须设置为全部)并且它是一个只读的第一个源操作数。 128
相当明显,它是128位宽版本55
,它没有说,它说66
或至少它应该。其他选择是F2,F3和"没有"。指示VEX.pp字段的值应该是什么,对应于旧编码中的必需前缀。0F
,操作码映射说明符,对应于旧编码中的0F前缀(也有0F3A和0F38)WIG
(其他选项为W1
和W0
),表示忽略VEX.W字段(W0
,W1
表示{{1} } bit必须分别为0或1)