2

私がやりたいこと(高レベル):Androidでqsort_rを使用します。

デフォルトの実装はありません。だから私はBSDから1つを取得しました。残念ながら、Androidでも利用できないfls関数が必要です。そこで、Apple Open Source Libcライブラリを入手し、ARM実装をインラインアセンブリにコピーしました。今私はこれを手に入れています:

Assembler messages:
Error: selected processor does not support Thumb mode `clz r3,r0'
Error: cannot honor width suffix -- `rsb r0,r3,#32'

AFAIRARM-6はThumbモードではサポートしていません。では、この1つのファイルに対して非Thumbモードを強制するにはどうすればよいですか、またはflsで純粋なC実装を使用できますか?

(そして神よ、なぜ私はqsort_rを持つためだけにそのような低レベルをプレイしなければならないのですか...)

4

1 に答える 1

2

Android.mkファイルで、thumb、arm、neonバージョンのコードをコンパイルするように設定する方法は次のとおりです。アセンブリ言語のソースファイルでは、makefileで「S」を大文字にする必要がありますが、実際の名前を大文字にする必要はありません。接尾辞「.arm」および「.arm.neon」はmakefileにのみ存在し、名前の一部ではありません(たとえば、以下のファイルの名前はmain.c、main_asm.s、test.c、およびtest_asm.sです)。

LOCAL_ARM_MODE := arm  # remove this if you want thumb mode
LOCAL_ARM_NEON := true # remove this if you want armv5 mode

# this flag will allow neon intrinsics in your C files
LOCAL_CFLAGS := -mfpu=neon -march=armv7

LOCAL_SRC_FILES := \
          main.c.arm \
          test.c.arm.neon \
          main_asm.S.arm \
          test_asm.S.arm.neon \
于 2013-09-16T14:53:01.503 に答える