未知使用没有大小后缀的指令助记符 (x86_64)

Unknown use of a instruction mnemonic without a size suffix (x86_64)

我在 llvm pass 模块中编写了一些内联汇编后出现此错误:

<inline asm>:1:2: error: unkown use of instruction mnemonic without a size suffix
        test %rsi, 
        ^

我的理解是这个错误意味着我正在尝试使用指令不支持的操作数大小,或者该大小不明确。我仔细阅读了英特尔 x86_64 软件开发手册,我相当确定我明确指定了 "REX.W + F7 /0 id" 或 "TEST r/m64, imm32" 操作。我需要更明确地表明我想要 REX 版本吗?怎么样?

正如 Michael Petch 所指出的,我混淆了 AT&T 和 Intel 的组装。操作数顺序颠倒了。切换到 test , %rsi 解决了问题。