12. assembleur ARM Flashcards
quelle différence en ARM comparé au TP1 pour addition-soustraction
rd <- RA + Rs
rd <- RA + const
on peut faire registre 1+registre 2 das registre 3
au lieu de r1 + r2 dans r2
pareil pour soustraction
Écrivons un programme qui additionne deux valeurs stockées en
mémoire:
* La première valeur est à une adresse de base (ex: 0x40 pour le TP1, 0x1000
pour l’ARM)
* La seconde valeur est à l’adresse mémoire —– (après la —– valeur).
* Le résultat est écrit dans l’adresse mémoire —- (après la —– valeur).
Écrivons un programme qui additionne deux valeurs stockées en
mémoire:
* La première valeur est à une adresse de base (ex: 0x40 pour le TP1, 0x1000
pour l’ARM)
* La seconde valeur est à l’adresse mémoire suivante (après la première valeur).
* Le résultat est écrit dans l’adresse mémoire suivante (après la seconde valeur).
On « travaille » sur 32 bits à la fois, et chaque adresse stocke — bits. Donc
chaque élément occupe —- adresses mémoire
On « travaille » sur 32 bits à la fois, et chaque adresse stocke 8 bits. Donc
chaque élément occupe 4 adresses mémoire
3 sections du code dans le simulateur
SECTION INTVEC (table des vecteurs d’interruption)
SECTION CODE
SECTION DATA (l’on place
des données utilisées par le code)
ex:
SECTION INTVEC
B main
SECTION CODE
main
MOV R0, #0x1000 ; Adresse de la première valeur
LDR R1, [R0] ; Lecture de la première valeur dans R0
ADD R0, R0, #4 ; Adresse de la deuxième valeur
LDR R2, [R0] ; Lecture de la deuxième valeur dans R1
ADD R1, R1, R2 ; R1 = R1 + R2
ADD R0, R0, #4 ; Adresse du résultat
STR R1, [R0] ; Écriture du résultat en mémoire
fin
B fin
SECTION DATA
; Valeurs stockées en mémoire
premiereValeur ASSIGN32 0x1
deuxiemeValeur ASSIGN32 0x2
; Résultat (on ne connait pas sa valeur a priori)
resultat ALLOC32 1
Adresses de chaque section
0x0: Adresse de début de la section INTVEC
0x7F: Adresse de fin de la section INTVEC
0x80: Adresse de début de la section CODE
0x0FFF: Adresse de fin de la section CODE
0x1000: Adresse de début de la section DATA