4. FMA4/XOP 指令 opcode 描述方式
由于 FMA4 指令是 FMA 指令的 AMD 版本,支持 4 个操作数。
vfmaddpd xmm1, xmm2, xmm3/mem128, xmm4 |
上面这条指令形式,它的 opcode 描述为:
VEX RXB.mmmmm W.vvvv.L.pp Opcode |
可以很直观的看出:
这条指令有 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 提供寻址。
vphaddbd xmm1, xmm2/mem128 |
这是一条 XOP 指令,它的 opcode 描述为:
XOP RXB.mmmmmm W.vvvv.L.pp Opcode |
这条指令只有 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