我想在 Eclipse 中使用 ndk r10d 从 Android 源代码构建 libunwind。但是我在编译 "Gresume.c" 时失败了,并且在 asm 代码中失败了。我无法理解asm代码,我搜索了任何地方都找不到有同样问题的人,所以我希望有人能帮助我。
代码的错误行是:
asm __volatile__ (
"ldmia %0, {r4-r12, lr}\n"
"mov sp, r12\n"
"bx lr\n"
: : "r" (regs) ,
"m" (*(struct regs_overlay *)regs)
);
错误输出:
[armeabi] 编译拇指:MyBacktrace <= Gresume.c /var/folders/g7/9gd3cwy96z12qt3vlf7sc5q80000gn/T//cc6jsBSj.s:汇编程序消息:/var/folders/g7/9gd3cwy96z12qt3vlf7sc5q80000gn/T//cc6jsBSj.s:88:错误: lo 需要注册 -- `ldmia r2,{r4-r12,lr}' make: *** [obj/local/armeabi/objs/MyBacktrace/libunwind/src/arm/Gresume.o] 错误 1
完整的代码可以在下面的链接中找到。