在向量扩展方面有些问题困扰着我。
文件:Intel® Advanced Vector Extensions Programming Reference
国家:

VPSRLD ymm1, ymm2, imm8

所以我继续说:
__asm__ (
    "vpsrld %ymm0, %ymm0, $0x4"
);

合同一般条件4.8.2-19ubuntu1:
Error: operand type mismatch for `vpsrld'

在没有任何发现的情况下,我在谷歌上搜索了一下,然后我开始改变周围的东西,这本书汇编了:
__asm__ (
    "vpsrld  $0x4, %ymm0, %ymm0"
);

有人知道为什么有人会改变顺序相比,参考指南?
谢谢你的帮助。

最佳答案

我认为这是因为GCC工具链中最常用的GNU汇编程序使用a T&T汇编程序语法,它的操作数顺序与Intel不同。
例如,Intel格式的mov eax, 5在AT&T中变为mov $5, %eax
您可以在Wikipedia上找到关于这两个版本的一些信息。

10-07 15:42