Vectors LDR PC, Reset_Addr
LDR PC, Undef_Addr
LDR PC, SWI_Addr
LDR PC, PAbt_Addr
LDR PC, DAbt_Addr
NOP ; Reserved Vector
; LDR PC, IRQ_Addr
LDR PC, [PC, #-0x0FF0] ; Vector from VicVectAddr
LDR PC, FIQ_Addr
Reset_Addr DCD Reset_Handler
Undef_Addr DCD Undef_Handler
SWI_Addr DCD SWI_Handler
PAbt_Addr DCD PAbt_Handler
DAbt_Addr DCD DAbt_Handler
DCD 0 ; Reserved Address
IRQ_Addr DCD IRQ_Handler
FIQ_Addr DCD FIQ_Handler
Undef_Handler B Undef_Handler
SWI_Handler B SWI_Handler
PAbt_Handler B PAbt_Handler
DAbt_Handler B DAbt_Handler
IRQ_Handler B IRQ_Handler
FIQ_Handler B FIQ_Handler
以上是MDK平台自带的LPC21XX的启动代码的一部分。
我想问,为什么LDR PC,[PC,Reset_Addr]这条指令会放在0x00000000的地址处。
而且Reset_Addr这个标号的值为什么就是0x18。我知道0x18是LPC21XX的向量表。
51单片机的汇编里面有ORG指令,指明一段程序存放的地址。而ARM汇编里面却没有这样的指令。我想知道ARM汇编的指令的存放的地址是由什么指令决定的,还是由编译器决定的。可能是我用51用惯了,一直用51的思维去理解ARM的一些东西。思维一时转不过来,忘大侠指教。 |