2012-07-17 2 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 데드 루프 테스트를하고 싶지만 예상 된 루프에서 벗어났습니다. 내 코드가 잘못되었습니다. 시작에 있습니다 .S.uboot에서의 데드 루프 테스트

답변

0

현재 ARM 크로스 컴파일러의 부족 여부를 테스트 할 수 없지만 단순히 =이 누락 된 것으로 보입니다.

ldr pc, =_start 

"즉시로 점프"하면됩니다. 그렇지 않으면 어셈블러가 위의 코드를 ldr pc, [ pc, ... ]과 동일하게 처리합니다.

ADRLDR 의사 명령어의 차이점에 유의하십시오. adr pc, _start은 귀하의 경우 ldr pc, =start과 동일하게 적용됩니다.

관련 문제