2010-03-04 1 views
9

Мне было предложено оценить платформу Android для нашего продукта, и я рассматриваю различные варианты, я просто просто царапаю поверхность сейчас, и одна вещь, которая есть Меня беспокоит, что я не могу понять, как скомпилировать код как прямой ARM-код (no Thumb), я знаю, что Thumb работает медленнее, и нам потребуется производительность в ключевых разделах нашего кода.Android NDK - он поддерживает прямой код ARM или просто Thumb

Я думаю это должно быть просто установив -march флаг в LOCAL_CFLAGS файла Android.mk, но я не могу получить, чтобы работать ...

Может кто-нибудь помочь?

ответ

16

Указание следующего флага для модуля в Android.mk скомпилирует прямой код ARM.

LOCAL_ARM_MODE := arm 

Включение оптимизации может также помочь:

LOCAL_CFLAGS := -O3 
16

Вы можете построить в ARM, Thumb или сочетание двух.

В файле makefile в LOCAL_SRC_FILES, где вы бы указали MyFile.c, укажите MyFile.c.arm (не переименовывайте файл на диск, просто делайте это в списке исходных файлов). Это соглашение используется во всем Android для кода, который критичен по производительности (или по какой-то причине должен быть ARM).

Обычные примечания применяются, конечно же: Код Thumb имеет тенденцию требовать больше инструкций для выполнения чего-либо, но каждая команда имеет половину размера, поэтому код обычно немного медленнее, а также справедливый бит меньше. В некоторых ситуациях меньший размер позволяет лучше подойти к (крошечным) кэшам в процессорах ARM и может быть быстрее.