0

GCC4.2(Xcode3)では、%R0/%Q0を使用して、インラインアセンブリでダブルワードオペランドの上位/下位を指定しています。しかし、次のコードは llvm-gcc (Xcode4) でエラーを生成します: error: invalid operand in 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 ビット値を 2 つの 32 ビット変数に分割し、シフトなどを使用して 64 ビット値を再構成することができます。生成されたコードは最終的に同じように見えるはずです。

于 2011-11-26T08:03:02.447 に答える