我正在尝试编译一些给定的汇编程序文件(.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(好吧,除非您有尝试移植的现有代码。