在 Intel 64 和 IA-32 架构软件开发人员手册中,行 F 表 A-4 附录 A.3 第 2C 卷(订单号 326018-045US 2013 年 1 月)的独特之处在于它有一个前缀子行,用于组合两个前缀:0x66 和 0xF2。
唯一与之相关的操作码是 0x0F38F1 (CRC32)。对于单独的前缀 0xF2,源操作数是 Ey(内存或通用寄存器;32 位或 64 位),而对于前缀 0x66 和 0xF2 一起,源操作数是 Ew(内存或通用寄存器;始终为 16 位)
但是,如果 0x66 只是可选的操作数大小覆盖前缀而不是两个强制前缀组合中的第一个,则这些源操作数与它们将是相同的。事实上,0x66 作为可选前缀是第 3.2 卷第 2A 章中记录 CRC32 指令的方式(隐含:16 位和 32 位源操作数的相同字节序列)。该表似乎可以省略 0x66 和 0xF2 行,并将源操作数记录为 0xF2 行中的 Ev(内存或通用寄存器;16 位或 32 位或 64 位)。
操作码映射以这种独特的方式记录操作码 0x0F38F1 的源操作数是否有原因?
编辑:添加了手册版本