
Principes et Techniques de Compilation, N. Chenfour
4
1.1.3.2 Langage d’assemblage
Un code en langage d’assemblage est une version mnémonique du code
machine ou langage binaire, dans lequel on emploi des mots significatifs au lieu du
code binaire pour designer les opérateurs, ainsi que des noms pour repérer les adresses
mémoires (variables) et les registres (AX, BX, …).
Exemple :
MOV AX, X
ADD AX, Y
MOV Z, AX
1.1.3.3 Assembleur
C’est le premier module pouvant être considéré comme un compilateur (de
base), qui fait la traduction d’un programme écrit dans le langage d’assemblage en
son équivalent en code machine. La forme la plus simple d’un assembleur effectue
deux passes sur le texte d’entrée.
- 1
ère
passe : Consiste à lire le fichier d’entrée et assigner des adresses
mémoires au identificateurs qui seront stockés dans une table appelée
Table de Symboles.
Exemple :
Table de Symboles
X 1000
Y 1010
Z 1100
- 2
ème
passe : Consiste à relire le texte est traduire chaque code opération
(exemple MOV) et chaque nom de registre en la suite binaire qui le
représente, et chaque identificateur en son adresse mémoire indiquée dans
la table des symboles.
Exemple :
Le code assembleur de l’exemple précédent sera traduit comme suit :
0001 0011 1000
0010 0011 1010
0001 1100 0011
1.1.3.4 Interprète ou interpréteur
Un interpréteur ne produit pas du code final comme le cas des compilateurs,
mais il procède lui même à l’exécution des instructions du programme source après
leur interprétation. Il existe plusieurs langage qui disposent d’un interpréteur au lieu
d’un compilateur.
Exemple :
Basic, Dbase, Lisp.