内联汇编中的 vpcmpeqb

vpcmpeqb in inline assembly

目前我正在尝试从使用 NASM 转向使用 c 中的内联汇编,因为这将使将来的链接更容易(尤其是使用内联)。但是,我无法让我的矢量指令很好地发挥作用。在 Intel 汇编中,我能够执行以下操作:

vpcmpeqb    ymm0, [rdi]

这将从 rdi 中读取 32 个字节,与 ymm0 进行比较并标记相等的字节。对于 AT&T,我尝试在 c 内联 asm 中执行以下操作,但它不起作用,它一直抱怨操作数大小不匹配(其中 %1 是输入 "r"(s)):

vpcmpeqb    %%ymm0, %%ymm0, (%1)

我正在编译 gcc 版本 9.2.1

AT&T 使用不同的操作数顺序。要解决您的问题,您应该使用

vpcmpeqb    (%1), %%ymm0, %%ymm0

此外,请阅读对话下的主题以了解有关此主题的更多信息。