Компиляция ассемблера для 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, которая является совершенно другим языком с совершенно другими кодами операций.

Кроме того, я бы рекомендовал не использовать сборку в первую очередь (ну, если у вас нет существующего кода, который вы пытаетесь портировать).

Другие вопросы по тегам