gpt4 book ai didi

c - 使用 LLVM : Unknown token in expression 的 intel 语法内联汇编

转载 作者:太空狗 更新时间:2023-10-29 15:27:02 27 4
gpt4 key购买 nike

在 Xcode 中使用 Apple LLVM 4.1 编译此代码时出现错误:

#include <stdio.h>

int main(int argc, const char * argv[])
{
int a = 1;
printf("a = %d\n", a);

asm volatile(".intel_syntax noprefix;"
"mov [%0], 2;"
:
: "r" (&a)
);

printf("a = %d\n", a);
return 0;
}

错误是Unknown token in expression

如果我使用 AT&T 语法,它工作正常:

asm volatile("movl $0x2, (%0);"
:
: "r" (&a)
: "memory"
);

第一段代码有什么问题?

最佳答案

看起来编译器正在将 %0 翻译成 %reg(在我的机器上是 %rcx)并且汇编器不喜欢%(因为它处于英特尔模式)。

我不知道是否可以将自动寄存器分配功能 ( extended asm ) 与 intel 语法混合使用,因为我还没有看到任何示例。

关于 gcc 内联汇编的良好文档通常很难获得,clang 在其 documentation 中声明它在这方面主要与 gcc 兼容......

关于c - 使用 LLVM : Unknown token in expression 的 intel 语法内联汇编,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14092215/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com