编码x64 VEX前缀

时间:2015-03-14 00:37:48

标签: 64-bit machine-code

我将本指南用于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'。我错过了什么?

1 个答案:

答案 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(其他选项为W1W0),表示忽略VEX.W字段(W0W1表示{{1} } bit必须分别为0或1)