我正在尝试组装以使用我以前从未真正使用过的向量操作,并且我承认在掌握一些语法时遇到了一些麻烦。
相关代码如下。
unit16_t asdf[4];
asdf[0] = 1;
asdf[1] = 2;
asdf[2] = 3;
asdf[3] = 4;
uint16_t other = 3;
__asm__("movq %0, %%mm0"
:
: "m" (asdf));
__asm__("pcmpeqw %0, %%mm0"
:
: "r" (other));
__asm__("movq %%mm0, %0" : "=m" (asdf));
printf("%u %u %u %u\n", asdf[0], asdf[1], asdf[2], asdf[3]);
在这个简单的示例中,我尝试对数组中的每个元素进行 16 位“3”比较。我希望输出是“0 0 65535 0”。但它甚至不会组装。
第一条汇编指令给了我以下错误:
错误:内存输入 0 不可直接寻址
第二条指令给了我一个不同的错误:
错误:“pcmpeqw”的后缀或操作数无效
任何帮助,将不胜感激。