Accueil
Démo
Exercices formatifs
Travaux pratiques
Simulation libre
Sessions sauvegardées

Table des vecteurs d'interruption

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.

Registre Généraux (User)

Nom Valeur
R0
R1
R2
R3
R4
R5
R6
R7
R8
R9
R10
R11
R12
R13 (sp)
R14 (lr)
R15 (pc)

Registre Généraux (FIQ)

Nom Valeur
R0
R1
R2
R3
R4
R5
R6
R7
R8 FIQ
R9 FIQ
R10 FIQ
R11 FIQ
R12 FIQ
R13 FIQ (sp)
R14 FIQ (lr)
R15 (pc)

Registre Généraux (IRQ)

Nom Valeur
R0
R1
R2
R3
R4
R5
R6
R7
R8
R9
R10
R11
R12
R13 IRQ (sp)
R14 IRQ (lr)
R15 (pc)

Registre Généraux (SVC)

Nom Valeur
R0
R1
R2
R3
R4
R5
R6
R7
R8
R9
R10
R11
R12
R13 SVC (sp)
R14 SVC (lr)
R15 (pc)

État courant

 CPSRSPSR
Negatif (N)
Zero (Z)
Retenue (C)
Dépassement (V)
Ignore IRQ
Ignore FIQ

Configurations

Interruptions

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

Instruction courante

Mémoire

Suivre PC
Cycle courant :