谁能解释一下:如何在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;
}
但是当我尝试使用__qadd 内在而不是像这样的 asm 时:
int add_result = __qadd(5,10);
LOGI("qadd='%d'", add_result);
我得到了错误:
错误:未定义对“__qadd”的引用
我做错了什么,如何在c代码中启用内在函数?
更新:
我有 ndk android-ndk-r8c
(windows 版本),默认 GCC 4.6:
GCC 4.6 编译器仍然是默认的,
除了我在 android.mk 中明确指定
NDK_TOOLCHAIN_VERSION=4.6
我的编译器标志是:
LOCAL_CFLAGS += -std=c99 -ffast-math -march=armv5te -mfpu=vfp -mfloat-abi=softfp
除了我通过 -S 编译器标志检查 gcc 生成的 asm 代码之外,它还生成 qadd 指令:
qadd r3, r3, r2