-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

ここでの解決策Android用のqsort_rはありません(または、ThumbがAndroid ARMコードでCLZを使用するように強制する方法)

Android.mkファイルで、ファイル名に「.arm」を追加すると、ThumbモードではなくARMモード(sort.c.armなど)としてコンパイルされます。AndroidネイティブライブラリにThumb/ARMコードを混在させましたが、正常に機能しました。

質問は終了しました。

于 2013-01-04T23:28:21.130 に答える