Description simplifiée de l’assembleur ARMLite #
ARMLite est une machine disposant d’une architecture de Von Neumann qui exécute du code saisi en mnémoniques.
- Elle dispose de 13 registres généraux :
R0 à R12
. On les noteraRx, Ry
etc. - Les nombres littéraux sont notés
#val
, par exemple#20
désigne le nombre 20, vingt. - Sa mémoire est initialisée avec le code du programme.
- Les autres registres sont utilisés pour le fonctionnement interne, quelques bits indiquent l’état de la dernière opération
C’est donc un émulateur de processeur respectant une version légère du modèle ARM. On peut lui faire exécuter des programmes et intéragir avec elle via une interface web dans laquelle on écrit de l’assembleur et exécute les instructions.
Instructions #
Les instructions les plus couramment employées sont les suivantes :
-
Déplacement de contenu
MOV Rx, val
: déplaceval
dans le registreRx
.val
peut-être un registre ou un littéral.LDR Rx, adresse
: charge dans le registreRx
le contenu de l’adresse mémoire indiquée,STR Rx, adresse
: écrit le contenu du registreRx
à l’adresse mémoire indiquée,
Attention, seules les adresses multiples de 4 sont valides. En effet, ARMLite fonctionne avec des mots de 4 octets et chaque octet dispose d’une adresse.
Donc
LDR R0, 40
est valide maisLDR R0, 41
est invalide, car 41 n’est pas multiple de 4. -
Opérations arithmétiques et logiques
ADD Rx, Ry, val
: effectue l’additionRy + val
et écrit le résultat dansRx
.val
peut être un registre ou un littéral.- Les instructions
SUB
,AND
,ORR
,EOR
(respectivement soustraire, ET logique, OU logique, OU EXCLUSIF) ont un fonctionnement similaire.
-
Rupture de séquence
-
CMP Rx, Ry
: effectue la comparaison entreRx
etRy
-
BGT label
: saute vers l’instruction précédée du nomlabel:
SEULEMENT si la précédente comparaison était “plus grand que.”
Par exemple :- si on a comparé 4 et 2, alors
BGT label
va sauter enlabel:
, - si on a comparé 4 et 10, alors
BGT label
va passer à l’instruction suivante.
- si on a comparé 4 et 2, alors
-
BEQ label
: saute vers l’instruction précédée du nomlabel:
SEULEMENT si les valeurs comparées étaient égales, -
BLT label
: saute seulement si la dernière comparaison était “plus petit que”, -
B label
: saute, sans condition verslabel:
, -
HALT
: arrête la machine.
-
Exemple de programme #
1| MOV R1, #10 // R1 contient 10
2| MOV R2, #5 // R2 contient 5
3| ADD R3, R1, R2 // R3 contient 5 + 10 = 15
4| CMP R3, R1 // Comparaison de 15 et 5
5| BGT more // 15 > 5 donc on va en "more", ligne 08.
6| HALT // Fin du programme (ne sera pas exécuté dans l'exemple)
7| // Rien, on va à la ligne
8| more: // pas de code après l'étiquette, on ne fait rien
9| ADD R3, R1, R3 // R3 contient 15 + 10 = 25
10| HALT // Fin du programme