Что означает сообщение "Compile thumb"?

Рейтинг: 2Ответов: 1Опубликовано: 04.03.2011

Берется пример HelloJNI и меняется makefile (добавляется опция marm для gcc):

LOCAL_CFLAGS += -marm

Проект собирается:

$ ndk-build

При сборке компилятор пишет сообщения:

Compile thumb : hello-jni <= hello-jni.c

При этом ассемблер показывает 32 битную адресацию.

000002dc <Java_com_example_hellojni_HelloJni_stringFromJNI>:
 2dc:   e52de004    push    {lr}        ; (str lr, [sp, #-4]!)
 2e0:   e24dd00c    sub sp, sp, #12 ; 0xc
 ...
 31c:   00000018    andeq   r0, r0, r8, lsl r0

Что это значит?

Ответы

▲ 2

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