.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。
答案 0 :(得分:0)
目前无法测试缺少ARM交叉编译器,但您似乎只是缺少=
。使用
ldr pc, =_start
如果您想要的是“立即跳转”。否则,汇编程序会将上述内容视为等于ldr pc, [ pc, ... ]
,这很可能不是您想要的。
注意ADR
和LDR
伪指令之间的差异;在您的情况下,adr pc, _start
会与ldr pc, =start
相同。