0

在 GCC4.2(Xcode3) 中,我使用 %R0/%Q0 来指定内联汇编中双字操作数的高/低部分。但以下代码在 llvm-gcc (Xcode4) 中产生错误:错误:inline asm 中的操作数无效:'mov ${0:D}, $1

有人可以指出我的解决方案吗?

    long long v1 = 0;
    long v2 = 1;
    __asm__(
        "mov %R0, %1\n\t"
        : "=&r" (v1)
        : "r" (v2)
    );
4

1 回答 1

0

当前版本的 llvm-gcc 或 clang(Apple LLVM 编译器)不支持它。作为一种解决方法,您可以将 64 位值拆分为两个 32 位变量,并通过移位等重新组合 64 位值。生成的代码最终应该看起来相同。

于 2011-11-26T08:03:02.447 回答