0
.globl _start
_start: bl      dead_loop
        ldr     pc, _start
        ldr     pc, _undefined_instruction
        ldr     pc, _software_interrupt
        ldr     pc, _prefetch_abort
        ldr     pc, _data_abort
        ldr     pc, _not_used
        ldr     pc, _irq
        ldr     pc, _fiq

dead_loop:
        nop
        mov pc, lr

我想做一个uboot死循环测试,但发现它跳出了假设的循环,我的代码有什么问题,它在start.S中。

4

1 回答 1

0

现在无法测试是否缺少 ARM 交叉编译器,但您似乎只是缺少一个=. 利用

ldr pc, =_start

如果您想要的是“立即跳转”。否则,汇编器会将上述内容视为等于,ldr pc, [ pc, ... ]这很可能不是您想要的。

ADR注意伪指令和LDR伪指令的区别;adr pc, _start在您的情况下,将与ldr pc, =start.

于 2012-07-17T10:25:51.907 回答