求助,ARM 手机上将程序载入内存后跳转执行出错
CDMA手机,BREW系统,可以跑ADS编译链接,fromelf转换的Plain Binary程序。下面一段汇编程序在高通QSC1110芯片组的手机上一跑手机就重启,但是其它芯片组的手机就没有问题AREA Init,CODE,READONLY
CODE32
ENTRY
stmdb sp!, {r3, lr}
ldr r0,
str r0,
nop
nop
nop
nop
nop
mov lr, pc
bx sp
ldmia sp!, {r3, lr}
mov r0, #1
bx lr
bx lr
end
程序做的事情是运行时在堆栈上放置一条bx lr返回指令,并跳转过去执行。但是现在在QSC1110芯片组手机上一跑就重启。将bx sp指令替换为其它无关指令,也不会重启。
怀疑重启和CPU的代码预读有关,所以中间加了些nop指令,但是没有效果。
苦于没有远程调试设备,手机上也看不出引起了那类异常,有些束手无策。渴求帮助
页:
[1]