Compilar ensamblador para Android usando NDK

Estoy tratando de compilar algunos archivos ensambladores (.S) para Android usando el NDK. Desafortunadamente, recibo el mismo error para cada línea: Error: mala instrucción

Extracto del código:

#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

Creo que no he entendido los conceptos básicos de la programación en ensamblador. ¿Alguien me puede ayudar?

preguntado el 16 de mayo de 11 a las 17:05

3mx si no lo sabe, ¡no diga cosas incorrectas! agregue a Application.mk esta línea: APP_ABI: = x86 y su código se compilará para plataformas x86. -

2 Respuestas

Estás intentando compilar código x86. La mayoría de los dispositivos Android se ejecutan en ARM y el NDK público se compila solo para ARM.

contestado el 16 de mayo de 11 a las 21:05

¿Es posible convertirlo para ARM? ¿O hay grandes diferencias entre los dos? - 3mx

No. Son arquitecturas completamente diferentes, con diferentes códigos de operación, registros, banderas, modos. - EboMike

¿Parece que estás intentando conectar el ensamblaje x86 a Android? La mayoría de los dispositivos Android actuales utilizan la arquitectura ARM, que es un lenguaje completamente diferente con códigos de operación completamente diferentes.

Aparte de eso, recomendaría no usar Assembly en primer lugar (bueno, a menos que tenga un código existente que esté intentando portar).

contestado el 16 de mayo de 11 a las 22:05

No es del todo cierto. Algunos televisores de Google ejecutan Android en x86. - Igor Skochinsky

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.