Traduction de la documentation d’AQA #
Contexte #
L’objectif de ce simulateur est de permettre aux étudiants de se familiariser avec le langage assembleur spécifié par AQA et utilisé dans les niveaux AS et A des examens de science informatique.
Remarque du traducteur : AQA est un centre d’examen qui offre aux lycéens du royaume uni un diplome équivalent du baccalauréat. Il comporte une option science informatique. A level ~ baccalauréat. AS level ~ baccalauréat technologique.
Suppositions #
AQA ne spécifie pas son langage assez précisemment pour créer un assembleur donc certaines suppositions ont dû être faites.
Remarque du traducteur : cette partie n’intéresse que les enseignants qui cherchent à créer un sujet et le tester dans l’assembleur.
Le jeu instructions AQA #
-
LDR Rd, <memory ref>charge une valeur enregistrée en mémoire à une adresse précisée par<memory ref>dans un registred -
STR Rd, <memory ref>enregistre la valeur du registreddans la mémoire à l’adresse<memory ref>. -
ADD Rd, Rd, <operand2>ajoute la valeur spécifiée dans<operand2>à celle enregistrée dans le registrenet l’enregistre dans le registred -
SUB Rd, Rd, <operand2>soustraie la valeur spécifiée dans<operand2>à celle enregistrée dans le registrenet l’enregistre dans le registred -
MOV Rd, <operand2>copie la valeur spécifiée par<operand2>dans le registred. -
B <label>(branch) réalise un saut (sans condition) jusqu’à l’instruction située à la position<label>dans le programme. -
B<condition> <label>réalise un saut jusqu’à la position<label>si la dernière comparaison réalisée vérifie une condition. Les valeurs possibles pour<condition>sont :EQ(équal, égal),NE(not equal, différent),GT(Greater Than, plus grand que),LT(Less than, plus petit que). -
AND Rd, Rn, <operand2>réalise un ET logique bit à bit entre la valeur du registrenet<operand2>et l’enregistre dans le registred -
ORR Rd, Rn, <operand2>réalise un OU logique bit à bit entre la valeur du registrenet<operand2>et l’enregistre dans le registred -
EOR Rd, Rn, <operand2>réalise un OU exclusif (XOR) logique bit à bit entre la valeur du registrenet<operand2>et l’enregistre dans le registred -
MVN Rd, <operand2>réalise un NON logique bit à bit de<operand2>et l’enregistre dans le registred -
LSL Rd, Rn, <operand2>Réalise un décalage à gauche (logical shift left) de<operand2>bits sur la valeur du registrenet l’enregistre dans le registred. RQ cela revient à multiplier par2 ** <operand2> -
LSR Rd, Rn, <operand2>Réalise un décalage à droite (logical shift right) de<operand2>bits sur la valeur du registrenet l’enregistre dans le registred. RQ cela revient à faire la division entière par2 ** <operand2> -
HALTarrête le programme -
<operand2>peut être un nombre noté#234pour $234$ ou un registre, notéRd. -
Les registres vont de
R0àR12.
Extensions INP et OUT #
-
INP Rd, 2lit un nombre depuis la zone de saisie et l’enregistre en registred,OUT Rd, 4affiche un nombre.Changer le numéro
4change le mode :- 4 : nombre signé
- 5 : nombre non signé
- 6 : hex
- 7 : caractère
Commentaire #
Tout ce qui suit un / est un commentaire. J’ai partout utilisé // dont l’usage est fréquent dans les langages haut niveau.
Suite #
beaucoup de commentaires trop techniques pour nous.
boucle Récupérer et exécuter (Fetch / Execute cycle) #
Elle est animée par des blocs qui se déplacent. Ainsi qu’on peut s’en douter, certains navigateurs ont des soucis avec les blocs de nombre trop grands.
Sources #
Auteur : peterhigginson
Traducteur : qkzk