4. FMA4/XOP 指令 opcode 描述方式


上一页 返回目录 下一页

 

1、FMA4 指令的 opcode 描述

由于 FMA4 指令是 FMA 指令的 AMD 版本,支持 4 个操作数。

vfmaddpd xmm1, xmm2, xmm3/mem128, xmm4

上面这条指令形式,它的 opcode 描述为:

VEX  RXB.mmmmm  W.vvvv.L.pp   Opcode
C4     RXB.03   0.xsrc1.0.01  69 /r /is4

可以很直观的看出:

  1. VEX.C4

  2. VEX.mmmmm = 11

  3. VEX.W = 0

  4. VEX.vvvv 对 src1 进行寻址

  5. VEX.L = 0

  6. VEX.pp = 01

  7. opcode = 69

  8. imm8[7:4] 提供寻址

 

(1)operands 寻址表

这条指令有 4 个 operands,这 4 个 operands 的寻址情况是:

ModRM.reg
VEX.vvvv
ModRM.r/m
imm8[7:4]
提供 first operand 寻址
提供 second operand 寻址
提供 third operand 寻址
提供 fouth operand 寻址

/r:表示 destination operand(first operand)由 ModRM.reg 提供寻址。

 

 

2、XOP 指令的 opcode 描述

vphaddbd xmm1, xmm2/mem128

这是一条 XOP 指令,它的 opcode 描述为:

XOP    RXB.mmmmmm    W.vvvv.L.pp    Opcode
8F     RXB.09        0.1111.0.00    c2 /r

  1. 8F:这是 XOP prefix

  2. XOP.mmmmmm = 09 : 表示不需要 imm8

  3. XOP.W = 0 :2 个 operands 时为 0

  4. XOP.vvvv = 1111 :表示不需要 XOP.vvvv 提供寻址,它必须为 1111

  5. XOP.L = 0 : 128 位

  6. XOP.pp = 00 :不需要 SIMD prefix

  7. opcode = c2

  8. /r :ModRM.reg 提供 destination operand 寻址

 

(2)operands 寻址表

这条指令只有 2 个 operands,那么它的寻址就简单多了

ModRM.reg
VEX.vvvv
ModRM.r/m
imm8[7:4]
提供 first operand 寻址
不需要,必须为 1111
提供 second operand 寻址
不需要

只有 2 个 operands,它不需要 imm8 字节。

 

随着 Opcode 的复杂化,无论是 Intel 还是 AMD 的 opcode 描述,都是旨在使用很容易对 Opcode 掌握清楚。

相对比通用指令集中的 opcode 描述要复杂。关于通用指令的 opcode 描述,详见:指令 opcode 码

 

 

上一页 返回目录 下一页


mik 写于 2009-05-17 00:38