-1

当我尝试使用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 命令的工作示例?

4

1 回答 1

0

此处的解决方案No qsort_r for Android(或如何禁用强制 Thumb 在 Android ARM 代码中使用 CLZ)

在您的 Android.mk 文件中,将“.arm”添加到文件名中,它们将被编译为 ARM 模式而不是 Thumb 模式(例如 sort.c.arm)。我在 Android 本机库中混合了 Thumb/ARM 代码,它运行良好。

问题已关闭。

于 2013-01-04T23:28:21.130 回答