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

Correction

Soit la fonction MauvaiseFonction qui a R0 comme paramètre d’entrée et R0 comme paramètre de sortie. Comme l'indique son nom, cette fonction a un problème! Identifiez et corrigez-le.

SECTION INTVEC

B main

SECTION CODE

main
LDR SP, =maPile ; on charge la pile
ADD SP, SP, #40 

BL MauvaiseFonction
B fin

; Fonction qui incrémente R0 de 1. 
MauvaiseFonction
; Notre fonction modifie le registre R1, il faut sauvegarder sa valeur...
PUSH {R1}
MOV R1, #0x01
ADD R0, R0, R1
; ... et ensuite la restaurer comme si de rien n'était... 
POP {R1}
BX LR

fin
B fin

SECTION DATA 
; variable pour la pile
maPile ALLOC32 10; 

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 SECTION CODE main LDR SP, =maPile ; on charge la pile ADD SP, SP, #40 BL MauvaiseFonction B fin ; Fonction qui incrémente R0 de 1. MauvaiseFonction MOV R1, #0x01 ADD R0, R0, R1 BX LR fin B fin SECTION DATA ; variable pour la pile maPile ALLOC32 10;

Instruction courante

Mémoire

Suivre PC
Cycle courant :