使用NDK编译Android的汇编程序

时间:2011-05-16 17:37:49

标签: android assembly android-ndk

我正在尝试使用NDK为Android编译一些给定的汇编程序文件(.S)。不幸的是,每行都会出现相同的错误:错误:错误指令

代码摘录:

#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 个答案:

答案 0 :(得分:6)

您正在尝试编译x86代码。大多数Android设备在ARM上运行,而公共NDK仅在ARM上运行。

答案 1 :(得分:2)

看起来你正试图将x86程序集插入Android?目前大多数Android设备都使用ARM架构,这是一种完全不同的语言,具有完全不同的操作码。

除此之外,我建议首先不要使用Assembly(好吧,除非你有现有的代码试图移植。)