有关矢量扩展的一些问题。
文件:Intel® Advanced Vector Extensions Programming Reference
国:
VPSRLD ymm1, ymm2, imm8
所以我继续前进:
__asm__ (
"vpsrld %ymm0, %ymm0, $0x4"
);
GCC 4.8.2-19ubuntu1 吐出:
Error: operand type mismatch for `vpsrld'
然后谷歌搜索后没有任何发现我开始改变周围的东西,这编译:
__asm__ (
"vpsrld $0x4, %ymm0, %ymm0"
);
任何人都知道为什么有人会比参考指南更改订单?
感谢您的帮助。
答案 0 :(得分:2)
我认为这是因为GCC工具链中最常使用的GNU汇编程序使用AT& T汇编语法,它的操作数顺序与英特尔不同。
例如,英特尔格式的mov eax, 5
在AT& T中变为mov $5, %eax
。
您可以在Wikipedia上找到有关这两个版本的一些信息。