誰が説明できますか:cコードで組み込み関数を有効にする方法は?
armv5TEで特別なdsp命令を使用したい
命令を検討してくださいqadd
。次のように、アセンブラアプローチを使用するとうまく機能します。
inline int function_qadd(int a, int b) {
__asm__ (
"qadd %0, %1, %2" : "=r" (a) : "r" (a), "r" (b));
return a;
}
しかし、私が次のようにasmの代わりに__qadd組み込みを使用しようとしたとき:
int add_result = __qadd(5,10);
LOGI("qadd='%d'", add_result);
エラーが発生しました:
エラー:「__qadd」への未定義の参照
私が間違っていること、cコードで組み込み関数を有効にする方法は?
アップデート:
私はndk android-ndk-r8c
(Windowsバージョン)を持っています、それはデフォルトとしてGCC 4.6を持っています:
GCC4.6コンパイラは引き続きデフォルトです。
それに加えて、android.mkで明示的に指定します
NDK_TOOLCHAIN_VERSION=4.6
私のコンパイラフラグは次のとおりです。
LOCAL_CFLAGS += -std=c99 -ffast-math -march=armv5te -mfpu=vfp -mfloat-abi=softfp
gcc throught -Sコンパイラフラグによって生成されたasmコードをチェックすることに加えて、qadd命令を生成します。
qadd r3, r3, r2