0

ターゲットをARMプラットフォームとして、GNUアセンブラーを使用してアセンブリコードをコンパイルしようとしています。しかし、いくつかのエラーが表示されます。アセンブリ文法に慣れていません。

誰でもこのエラーを回避する方法を教えてもらえますか?

error: invalid operand in inline asm: 'str  ${2:Q}, $0  
str  ${2:R}, $1

このコンパイル エラーの原因となったインライン asm コードは次のとおりです。

static av_always_inline void AV_WN64(void *p, uint64_t v)
{
    __asm__ ("str  %Q2, %0  \n\t"
         "str  %R2, %1  \n\t"
         : "=m"(*(uint32_t*)p), "=m"(*((uint32_t*)p+1))
         : "r"(v));
}
4

1 に答える 1

0

試す:

__asm__ ("strd [%0], %1\n\t" : : "r"(p), "r"(v) : "memory");

vコンパイラは、64 ビットの数量にはレジスタ ペアが必要であることを認識する必要があります。

于 2012-01-30T13:02:48.233 に答える