- 论坛徽章:
- 0
|
3、 opcode
AMD 对 opcode 进行较详的叙述,opcode 里包含了指令的后缀,这个后缀定义了指令操作数据元素的大小。
上面是 opcode 的格式,其中 opcode[1:0] 定义了指令后缀
看看下面几条指令:
(1) vfmaddpd xmm1, xmm2, xmm3/m128, xmm4
(2) vfmaddps xmm1, xmm2, xmm3/m128, xmm4
(3) vfmaddsd xmm1, xmm2, xmm3/m64, xmm4
(4) vfmaddss xmm1, xmm2, xmm3/m32, xmm4
----------------------------------------------------------------------------
它们都是执行同一操作: dest = src1 * src2 + src3
所不同的是,它们操作的对象元素大小之间的区别:pd、ps、sd和 ss
pd 是 packed double-precision(压缩的双精度)
ps 是 packed single-precision(压缩的单精度)
sd 是 double-precision (非压缩的双精度)
ss 是 single-precision(非压缩的单精度)
它们对应的 opcode 是:
69: 011010 01 ==> pd
68: 00 ==> ps
6B: 11 ==> sd
6A: 10 ==> ss
-------------------------------------------------
不同后缀的指令使用不同 OES 码
注:
Intel 的指令在汇编代码级上有不同的指令后缀,但表现出来的 opcode 码却是相同的,也就是说:在 opcode 没体现出 OES 这个概念。
:wink: |
|