Есть ли способ компиляции для ARM, а не для Thumb в Xcode 4?

Apple рекомендует компилировать для ARM, а не для большого пальца, если выполняется много операций с плавающей запятой. Все мое приложение представляет собой почти одну большую операцию с плавающей запятой.

Вот что они говорят в Руководстве по разработке приложений для iOS:

Устройства iOS поддерживают два набора инструкций, ARM и Thumb. Xcode использует Инструкции для большого пальца по умолчанию, потому что использование большого пальца обычно уменьшает размер кода примерно на 35 процентов по сравнению с ARM. Приложения, у которых есть обширный код с плавающей запятой мог бы работать лучше, если бы они использовали ARM инструкции, а не Thumb. Вы можете отключить Thumb для своего приложение, поэтому оно компилируется для ARM, установив параметр Compile for Thumb Для параметра сборки установлено значение Нет.

Однако я не могу найти параметр «Компилировать для большого пальца» в настройках сборки. Они его переименовали? Или это сейчас недоступно в Xcode 4?

28
задан openfrog 5 December 2011 в 20:44
поделиться

1 ответ

Относительно вашего исходного вопроса: я заметил, что «Compile for Thumb» (в разделе «Генерация кода» ваших «Настройки сборки проекта») в Xcode 4.2.1 доступен только в том случае, если вы используете LLVM GCC 4.2 (если установите в «Компилятор для C / C ++ / Objective-C»)!

Если вы компилируете с помощью Apple LLVM 3.0, вы не найдете опции «Compile for Thumb». Но, как уже сказал Брэд, вы все равно можете изменить опцию «Другие флаги С», чтобы отключить режим большого пальца.

Еще один интересный момент: я использую источник объединения sqlite в своем проекте (мне нужен fts - полнотекстовый поиск), и после компиляции с LLVM 3.0 у меня возникали странные и довольно случайные сбои на устройствах armv6 при каждом обращении к базе данных: по мере того, как это происходит Это произошло из-за того, что режим Thumb не был отключен при компиляции для устройств armv6.

3
ответ дан 28 November 2019 в 02:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: