Mettons en place une table des vecteurs d'interruption permettant de traiter les interruptions suivantes:
Reset
Interruption logicielle
Interruption matérielle (IRQ)
Interruption matérielle rapide (FIQ)
Les autres types d'interruption ne sont présentement pas supportées par le simulateur. Le code de démonstration inclut donc également des exemples de ce qui survient lorsque les autres interruptions surviennent (instruction indéfinie, prefetch abort, data abort).
Notez que dans cet exemple, nous utilisons l'instruction NOP, qui veut dire "no-operation". Lorsque le micro-processeur exécute cette instruction, il ne fait rien.
Activer
Type
cycles
cycles (premier)
Vitesse d'exécution : ms
Français
SECTION INTVEC
; début de la table des vecteurs d'interruption
; reset
B main
; instruction indéfinie (non supportée)
NOP
; interruption logicielle
B interruptionLogicielle
; « prefetch abort », soit lecture invalide (non supportée)
NOP
; « data abort », soit accès mémoire invalide (non supportée)
NOP
; ne rien mettre ici!
NOP
; IRQ
B interruptionIRQ
; FIQ
B interruptionFIQ
SECTION CODE
main
NOP
NOP
; Générons les interruptions non supportées par le simulateur pour voir
; comment il traite ce genre de situation.
; Dans chaque cas, retirez les commentaires pour les activer.
; « Instruction indéfinie »
; a ASSIGN32 -1
; « Prefetch abort » (dé-commentez les deux lignes suivantes)
; MOV R0, #0x100
; BX R0
; « Data abort » (dé-commentez les deux lignes suivantes)
; MOV R0, #0x100
; LDR R1, [R0]
; nous voulons déclencher une interruption logicielle. Pour ce faire,
; nous pouvons utiliser l'instruction SVC, qui doit être accompagnée d'une
; constante (nous verrons plus tard à quoi sert cette constante)
SVC #10
NOP
NOP
; effectuons une boucle infinie, et testons la simulation des interruptions
; matérielles IRQ et FIQ via le panneau "configurations"
fin
B fin
interruptionLogicielle
; routine de traitement de l'interruption logicielle
; code de traitement ici...
NOP
NOP
; fin de la routine de traitement de l'interruption logicielle
SUBS PC, LR, #4
interruptionIRQ
; routine de traitement de l'interruption matérielle IRQ
; code de traitement ici...
NOP
NOP
; fin de la routine de traitement de l'interruption matérielle IRQ
SUBS PC, LR, #4
interruptionFIQ
; routine de traitement de l'interruption matérielle FIQ
; code de traitement ici...
NOP
NOP
; fin de la routine de traitement de l'interruption matérielle FIQ
SUBS PC, LR, #4
SECTION DATA