与英特尔语法相比,AT& T语法中源操作数的顺序是什么?

时间:2011-09-25 20:50:30

标签: gcc assembly x86 att

此说明的英特尔ISA参考文档清晰明了:

VPBLENDVB xmm1, xmm2, xmm3/m128, xmm4
  

使用指定掩码寄存器xmm2中的掩码位从xmm3/m128xmm4中选择字节值,并将值存储到xmm1

     

xmm1是目的地,xmm2/3/4是源操作数

那么使用AT& T语法会变成什么呢?我们知道目标寄存器必须是最后一个,但源操作数的顺序是什么?

vpblendvb $xmm2, $xmm3, $xmm4, $xmm1

vpblendvb $xmm4, $xmm3, $xmm2, $xmm1

或其他什么?

1 个答案:

答案 0 :(得分:5)

汇总(注意GAS使用%代替$来表示寄存器)以下内容:

vpblendvb %xmm4, %xmm3, %xmm2, %xmm1

使用GNU汇编程序(x86_64 2.6.38 linux上的版本2.21.0.20110327),然后反汇编:

$ objdump -d a.out
    0:    c4 e3 69 4c cb 40     vpblendvb %xmm4,%xmm3,%xmm2,%xmm1
在intel语法中的

(如手册所示):

$ objdump -d -M intel a.out
    0:    c4 e3 69 4c cb 40     vpblendvb xmm1,xmm2,xmm3,xmm4

所以看起来所有参数的顺序都是相反的。