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

Registres banqués

Observons le comportement des registres R13 et R14 lorsque survient une interruption logicielle.

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 B main NOP ; "no-operation", donc ne fait rien si cette instruction est rencontrée! B interruptionLogicielle ; toutes les autres interruptions ne sont pas supportées SECTION CODE main ; Plaçons une valeur test dans R13 et R14 MOV R13, #0x13 MOV R14, #0x14 ; Déclenchons une interruption logicielle SVC #10 ; Vérifions que l'interruption n'a pas modifié la valeur de R13 et R14 ASSERT R13=0x13,R14=0x14 ; Déclenchons une autre interruption logicielle, pour voir si la valeur ; de R13_svc est toujours la même SVC #10 B main interruptionLogicielle ; début de la routine de traitement de l'interruption logicielle ; ici, les registres R13 et R14 sont « banqués », c'est-à-dire qu'ils ; sont différents de ceux que nous avions dans le code. ; vérifions que leur valeur n'est pas celle que nous avions placée ci-haut ; et modifions la valeur de R13_svc MOV R13, #0x26 ; nous devons faire attention de ne pas modifier R14_svc, car l'adresse ; de retour y est stockée! ; fin de la routine de traitement de l'interruption logicielle SUBS PC, LR, #4 SECTION DATA

Instruction courante

Mémoire

Suivre PC
Cycle courant :