2012-07-17 70 views
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中。在uboot中的死循環測試

回答

0

目前無法測試ARM交叉編譯器的缺失情況,但您似乎錯過了=。使用

ldr pc, =_start 

如果你想要的是「跳轉到即時」。否則,彙編程序會將上面的內容等同於ldr pc, [ pc, ... ],這很可能不是您想要的。

請注意ADRLDR僞指令之間的差異;在你的情況下,adr pc, _start會和ldr pc, =start一樣。