Amusons-nous avec les différents modes d'adressage en ARM.
Questions et réponses:
Quelle serait l'adresse de la variable tableau si elle était placée dans cette section? 0x80.
Quel élément est lu par... la version 1? Le premier élément, soit 0x1234.
Quel élément est lu par... la version 2? Le second élément, soit 0x4567.
Quel élément est lu par... la version 3? Le second élément, soit 0x4567.
Quel élément est lu par... la version 4? Le premier élément, soit 0x1234.
Quel élément est lu par... la version 5? Le troisième élément, soit 0x89AB.
Quelle est la différence entre ces deux dernières instructions? La version 4 modifie le contenu de R0 _après_ l'accès mémoire, tandis que la version 5 incrémente R0 de 4 _avant_ d'effectuer l'accès mémoire.
Qu'est-ce que fait cette dernière instruction? Elle place l'instruction courante (son code binaire) dans R5.
Quelle est l'adresse de la variable tableau? 0x1000.
Activer
Type
cycles
cycles (premier)
Vitesse d'exécution : ms
Français
SECTION INTVEC
B main
SECTION CODE
; Question: quelle serait l'adresse de la variable
; tableau si elle était placée dans cette section?
main
; Tout d'abord, commençons par visualiser le contenu de
; la mémoire à l'adresse 0x1000
; Chargeons l'adresse de la variable tableau dans R0
LDR R0, =tableau
; Questions:
; - Quel élément est lu par chacune de ces versions?
; Version 1
LDR R1, [R0]
; Version 2
LDR R2, [R0, #4]
; Version 3
MOV R5, #4
LDR R3, [R0, R5]
; Version 4
LDR R4, [R0], #4
; Version 5
LDR R5, [R0, #4]!
; Question: quelle est la différence entre ces deux
; dernières instructions?
; Question: qu'est-ce que fait cette dernière instruction?
LDR R5, [PC, #-8]
B main ; Et on recommence!
SECTION DATA
; Question: quelle est l'adresse de la variable tableau?
tableau ASSIGN32 0x1234, 0x4567, 0x89AB, 0xCDEF