2010-03-04 11 views
9

Ich wurde gebeten, die Android-Plattform für unser Produkt zu bewerten, und ich betrachte verschiedene Optionen, ich bin nur gerade die Oberfläche gerade jetzt kratzen und die eine Sache, die ist Mich stört, dass ich nicht sehen kann, wie man Code als geraden ARM-Code (kein Thumb) kompiliert, ich weiß, dass Thumb langsamer läuft und wir die Leistung in Schlüsselbereichen unseres Codes benötigen.Android NDK - unterstützt es gerade ARM-Code oder nur Thumb

ich denke, es sollte nur in den LOCAL_CFLAGS der Android.mk Datei die -march Flagge wird Einstellung, aber das kann ich nicht an der Arbeit ...

Kann jemand helfen?

Antwort

16

Durch Angabe des folgenden Flags für ein Modul in Android.mk wird der gerade ARM-Code kompiliert.

LOCAL_ARM_MODE := arm 

Aktivieren der Optimierung kann auch helfen:

LOCAL_CFLAGS := -O3 
16

Sie können ARM, Thumb oder eine Mischung aus beiden verwenden.

In der Makefile, in LOCAL_SRC_FILES, wo Sie MyFile.c auflisten, geben Sie MyFile.c.arm (nicht umbenennen Sie die Datei auf der Festplatte, tun Sie es einfach in der Liste der Quelldateien). Diese Konvention wird in ganz Android für Code verwendet, der performancekritisch ist (oder aus irgendeinem Grund nur ARM sein muss).

Die üblichen Hinweise gelten natürlich: Thumb-Code neigt dazu, mehr Anweisungen zu erfordern, um etwas zu erreichen, aber jede Anweisung ist halb so groß, so dass der Code in der Regel ein wenig langsamer ist, aber auch ein bisschen kleiner. In einigen Situationen ermöglicht die kleinere Größe eine bessere Anpassung an die (winzigen) Caches in den ARM-CPUs und könnte sogar schneller sein.