wtyqm 发表于 2010-12-15 10:51:55

求助,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]
查看完整版本: 求助,ARM 手机上将程序载入内存后跳转执行出错