Компиляция ассемблера для Android с использованием NDK - PullRequest
2 голосов
/ 16 мая 2011

Я пытаюсь скомпилировать некоторые данные файлы ассемблера (.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 ]

6 голосов
/ 16 мая 2011

Вы пытаетесь скомпилировать код x86. Большинство устройств Android работают на ARM, а общедоступный NDK компилируется только для ARM.

2 голосов
/ 16 мая 2011

Похоже, вы пытаетесь подключить сборку x86 к Android? Большинство современных устройств Android используют архитектуру ARM, которая является совершенно другим языком с совершенно другими кодами операций.

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

...