Accueil > Autres réalisations (logiciels, etc.) > Amil : assembleur miniature pour l’informatique de licence > Mode d’emploi utilisateur

Mode d’emploi utilisateur

mardi 16 septembre 2008, par Pierre

Le langage assembleur amil repose sur l’idée d’utiliser les numéros de lignes d’un programme assembleur (un simple fichier texte) comme numéros d’adresses mémoires. Ainsi, chaque ligne contient une instruction ou une donnée et toutes les lignes comptent. Un programme commence à la première ligne, numérotée 1 et le simulateur commencera par exécuter l’instruction sur cette ligne. Les numéros de lignes ne doivent pas être composés dans le fichier texte. La taille de la mémoire disponible pour un programme est exactement le nombre de lignes du fichier texte contenant le programme. Il faut donc insérer dans le fichier texte autant de lignes que nécessaire (une ligne peut être vide).

Le programme suivant lit une donnée x à l’adresse 10, écrit 3x + 1 à l’adresse 11 et termine.

 Le voici dans amil, juste après avoir réalisé la multiplication :

amil mult

Le programme suivant trouve le maximum parmi deux données, x d’adresse 15 et y d’adresse 16, et écrit son résultat à l’adresse 17.

 Le voici dans amil, au moment où le résultat vient d’être écrit.

amil : écriture

 Et juste après avoir réalisé un saut.

amil : saut

Le petit film muet suivant montre amil en fonctionnement pas à pas sur ces deux programmes.

screencast demo amil
Une petite démo en 1’23 min (1,6Mo).
Les instructions amil
mnémoniqueaction
stop Arrête l’exécution du programme.
noop N’effectue aucune opération.
saut i Met le compteur ordinal à la valeur i.
sisaut ri j Si la valeur contenue dans le registre i est positive ou nulle, met le compteur ordinal à la valeur j.
init x ri Initialise le registre i avec la valeur x.
lecture i rj Charge, dans le registre j, le contenu de la mémoire d’adresse i.
lecture *ri rj Charge, dans le registre j, le contenu de la mémoire dont l’adresse est la valeur du registre i.
ecriture ri j Écrit le contenu du registre i dans la mémoire d’adresse j.
ecriture ri *rj Écrit le contenu du registre i dans la mémoire dont l’adresse est la valeur du registre j.
inverse ri Inverse le signe du contenu du registre i.
add x rj Ajoute x au contenu du registre j.
add ri rj Ajoute la valeur du registre i à celle du registre j.
mult, div, et Même syntaxe que pour add mais pour la multiplication, la division entière et le et bit à bit.