Компиляция ассемблера для Android с использованием NDK
Я пытаюсь скомпилировать некоторые данные файлы ассемблера (.S) для Android, используя NDK. К сожалению, я получаю одинаковую ошибку для каждой строки: Ошибка: плохая инструкция
Извлечение кода:
#define FLAG_C 70(%ebx)
lsr_carry:
cmpb $32, %cl
jae lsr_carry_32
testb %cl, %cl
je lsr_carry_zero
shrl %cl, %eax
setc FLAG_C
lsr_carry_zero:
ret
lsr_carry_32:
jne ls_carry_33
shll $1, %eax
setc FLAG_C
xorl %eax, %eax
ret
ls_carry_33:
xorl %eax, %eax
movb %al, FLAG_C
ret
Я думаю, что я не понял основы программирования на ассемблере. Кто-нибудь может мне помочь?
2 ответа
Вы пытаетесь скомпилировать код x86. Большинство устройств Android работают на ARM, а общедоступный NDK компилируется только для ARM.
Похоже, вы пытаетесь подключить сборку x86 в Android? Большинство современных Android-устройств используют архитектуру ARM, которая является совершенно другим языком с совершенно другими кодами операций.
Кроме того, я бы рекомендовал не использовать сборку в первую очередь (ну, если у вас нет существующего кода, который вы пытаетесь портировать).