7

次のマクロを複数回呼び出すコードをコンパイルしようとしています:

#define MULADD(i, j) \
    asm( \
    " mullw  16,%6,%7       \n\t" \
    " addc   %0,%0,16       \n\t" \
    " mulhwu 16,%6,%7       \n\t" \
    " adde   %1,%1,16       \n\t" \
    " addze  %2,%2          \n\t" \
    :"=r"(c0), "=r"(c1), "=r"(c2):"0"(c0), "1"(c1), "2"(c2), "r"(i), "r"(j):"16");

MULAD が呼び出された場所で、

エラー: ':' トークンの前に ')' が必要です

エラー通知。

エラーコードは次のようになります。

../../src/math/mul.c: In function 'mul_comba':
../../src/math/mul.c:787: warning: implicit declaration of function 'asm'
../../src/math/mul.c:787: error: expected ')' before ':' token
../../src/math/mul.c: In function 'mul_comba_small':
../../src/math/mul.c:816: error: expected ')' before ':' token

何が間違っているのかわかりません。暗黙の宣言はどういう意味ですか? 私の知る限り、asm()コンパイラは予約済みであり、宣言する必要がある関数ではありませんよね? もしそうなら、私は何を含めなければなりませんでしたか?本当に知識不足です。

編集: gcc 4.2.1 を使用しています。アーキテクチャは powerpc (32Bit) とタグ付けされており、OS は freeBSD 9.2 です。

4

1 に答える 1