Я использую Marmalde и C / C ++, чтобы написать игру для Android. Теперь я хочу написать некоторые важные части на ассемблере, чтобы улучшить производительность. Но мне интересно, может ли это приложение работать на большинстве устройств Android? (около 90%). Поскольку в целом код ассемблера зависит от процессора, а разные телефоны Android могут иметь разные процессоры, например Intel или ARM, мне пришлось бы писать эти части на разных языках ассемблера для каждого процессора! ?
Написание частей приложения Android в сборке
Ответы (1)
Да, конечно, вам придется написать ассемблерный код для каждого процессора ABI.
Android NDK имеет специальную поддержку для различных ABI.
Имейте в виду, что, хотя в настоящее время поддерживаются только три семейства процессоров (Intel x86 / 64, ARM и MIPS), вы должны ориентироваться на все различные ABI, а не на сами семейства процессоров.
Вы можете безопасно отказаться от устройств MIPS, они очень редки.
Устройства Intel в основном представляют собой планшеты, но есть и телефоны.
Подавляющее большинство существующих устройств - это ARM.
Если вы посмотрите официальное руководство по оптимизации от ARM v8 или в очень полезном руководстве по оптимизации для Intel вы можете увидеть, что на самом деле потребуется какое-то время, чтобы написать хороший ассемблерный код.
Подсказка
Сначала напишите критические части на C ++, затем посмотрите на разборку и посмотрите, сможете ли вы добиться большего успеха или сможете ли вы распознать некоторые неоптимальные шаблоны.
Только после этого перепишите код в сборке.
Также, прежде чем делать такие микрооптимизации, попробуйте использовать более совершенные структуры данных, лучшие алгоритмы и лучшую обработку ресурсов.