次のマクロを複数回呼び出すコードをコンパイルしようとしています:
#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 です。