Android NDK - поддерживает ли он прямой код ARM или просто Thumb - PullRequest
9 голосов
/ 04 марта 2010

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

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

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

Ответы [ 2 ]

16 голосов
/ 06 июня 2011

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

LOCAL_ARM_MODE := arm

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

LOCAL_CFLAGS := -O3
16 голосов
/ 19 марта 2010

Вы можете встроить ARM, Thumb или их комбинацию.

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...