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

Tableaux avec mode d'adressage

Écrivons un programme qui copie le contenu d'un tableau source vers un tableau destination. Cette fois, utilisons l'un des modes d'adressage en ARM qui nous permettra d'éviter d'utiliser des instructions ADD après chaque transfert.

Questions et réponses:

  • Quelle est la valeur de R0 après les deux instructions précédentes? R0 contient la valeur 0x1004 car l'instruction l'a incrémenté après avoir effectué la lecture en mémoire.
  • Et R1? R1 contient la valeur 0x1010 car l'instruction l'a également incrémenté après avoir effectué la lecture en mémoire.
  • Qu'arriverait-il si on utilisait LDR R2, [R0, #4]! et STR R2, [R1, #4]! au lieu des deux instructions suivantes? On «sauterait» un élément du tableau car l'adresse utilisée pour la lecture en mémoire est R0+4 et non R0 comme l'instruction suivante.

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 ; Chargeons l'adresse de source LDR R0, =source ; Chargeons l'adresse de destination LDR R1, =destination ; Copions les éléments uns à uns ; Question: quelle est la valeur de R0 après les deux ; instructions suivantes? Et R1? LDR R2, [R0], #4 STR R2, [R1], #4 ; Question: qu'arriverait-il si on utilisait ; LDR R2, [R0, #4]! et STR R2, [R1, #4]! au lieu des ; deux instructions suivantes? LDR R2, [R0], #4 STR R2, [R1], #4 LDR R2, [R0], #4 STR R2, [R1], #4 ; Hmm... il me semble que ça serait plus simple de faire ; une boucle... nous y verrons la semaine prochaine! fin B fin SECTION DATA source ASSIGN32 0x48, 0x65, 0x6C destination ALLOC32 3

Instruction courante

Mémoire

Suivre PC
Cycle courant :