ARM Bootloader: Interrupt Vector Table Understanding

Der folgende Code ist der erste Teil von u-boot, um eine Interrupt-Vektortabelle zu definieren, und meine Frage ist, wie jede Zeile verwendet wird. Ich verstehe die ersten 2 Zeilen, die der Ausgangspunkt und die erste Anweisung sind, die zu implementieren sind: Zurücksetzen, und wir definieren Zurücksetzen unten. Aber wann werden wir diese Anweisungen unten verwenden? Laut System.map hat jeder Befehl eine feste Adresse, also ist _fiq bei 0x0000001C. Wenn wir fiq ausführen wollen, werden wir diese Adresse in den PC kopieren und dann ausführen, richtig? Aber auf welche Weise können wir zu dieser Anweisung springen: ldr pc, _fiq? Es ist von Hardware oder Software realisiert? Hoffe ich mache mich richtig verständlich.

>.globl _start  
>_start:b         reset  
>       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  

>_undefined_instruction: .word undefined_instruction  
>_software_interrupt:    .word software_interrupt  
>_prefetch_abort:        .word prefetch_abort  
>_data_abort:            .word data_abort  
>_not_used:              .word not_used  
>_irq:                   .word irq  
>_fiq:                   .word fiq  

Antworten auf die Frage(2)

Ihre Antwort auf die Frage