Intereting Posts
Android-приложение отладчика приложений сбой с прерыванием Запуск приложения с мгновенным запуском Android-студии очень медленный Отключить анимацию перехода между действиями Контролируя интенсивность вибрации в телефонах Android? Является ли это возможным? Как добавить параметры в HttpURLConnection с помощью POST Android: Как читать файл в байтах? Команды Gradle выходят из строя на API 23 Изображение эмулятора Google API (armeabi-v7a) Уведомление не отображается, когда setGroup () вызывается в Android KitKat Как получить таблицы столбцов arraylist на Android? Android – два предложения, два стиля, один TextView Android: запуск приложения из «последних приложений» запускает его с помощью последнего набора дополнительных функций, используемых в намерении Ant не перестраивает Android-приложение с помощью `ant debug install` Гетерогенный GridLayout Ошибка аутентификации при использовании HttpPost с DefaultHttpClient на Android Org.json.JSONObject не может быть преобразован в JSONArray в android

Почему код gcc emmiting выровнен с границей 2 байта для набора команд ARM?

Я проверяю вывод ассемблера программы C, которую я компилирую для платформы Android ARM, используя GCC (версия, включенная в Android NDK).

Я указываю набор команд ARM длиной 4 байта, а не THUMB, но удивительно, что код языка ассемблерных ассемблеров совмещает функции с 2-байтовой границей!

Вот пример сгенерированного кода, показывающий неправильную директиву .align:

.Ltext0: .global __aeabi_dmul .global __aeabi_d2iz .section .text.InitializeFIRFilter,"ax",%progbits .align 2 .global InitializeFIRFilter .type InitializeFIRFilter, %function InitializeFIRFilter: .fnstart 

Согласно этому документу , правильное выравнивание должно быть 4, что имеет смысл.

Я пытаюсь заставить выравнивание, используя -falign-functions = 4, но игнорируется.

Вот флагов сборки, которые я указываю в файле Android.mk

 LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_ARM_MODE := arm LOCAL_MODULE := nativeJadeMobile LOCAL_SRC_FILES := nativeJadeMobile.c fftasm.s LOCAL_LDLIBS := -llog LOCAL_CFLAGS += -marm -ffast-math -O2 -march=armv6 -falign-functions=4 -save-temps -S include $(BUILD_SHARED_LIBRARY) 

Кто-нибудь может понять, что я делаю неправильно, или знаю, как я могу обеспечить правильное выравнивание кода? Заранее большое спасибо!

Solutions Collecting From Web of "Почему код gcc emmiting выровнен с границей 2 байта для набора команд ARM?"