当我尝试使用qadd
命令编译内联程序集时出现错误。
错误:不能接受宽度后缀 -- `qadd r7,r7,r1'
我知道ARMv5TEqadd
支持
这些 ARM 指令在 ARMv6 及更高版本以及 ARMv5T 的 E 变体中可用。
C/asm 代码:
inline int __qadd(int a, int b) {
__asm__ (
"qadd %0, %1, %2" : "=r" (a) : "r" (a), "r" (b));
return a;
}
我的cpu特点是:
LOGI("__ARM_ARCH__='%d'", __ARM_ARCH__);
LOGI("__ARM_HAVE_5TE='%d'", __ARM_HAVE_5TE);
输出:
__ARM_ARCH__='5'
__ARM_HAVE_5TE='1'
我有下一个编译器标志:
LOCAL_CFLAGS += -std=c99 -ffast-math -march=armv5te
此外,我尝试过替换add
而不是qadd
- 效果很好,但qadd
代码无法编译。
我做错了什么?谁能提供汇编中 qadd 命令的工作示例?