使用 NDK 编译适用于 Android 的汇编程序



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

代码摘录:

#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

我想我还没有理解汇编程序编程的基础知识。有人可以帮助我吗?

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

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

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

最新更新