Information Technology Reference
In-Depth Information
Exemple
vecteur : DS 50 définition de la variable vecteur et réservation de 50 mots
un : DC 1 définition d'une constante nommée un ayant pour valeur 1
4.3.2
Fonctionnement de l'assembleur
L'assembleur est un programme qui traduit le langage d'assemblage en langage
machine. Son fonctionnement est très proche de celui du compilateur en phase de
génération de code.
La traduction effectuée par l'assembleur ne peut pas se faire en une seule passe,
c'est-à-dire que l'assembleur ne peut pas travailler en traduisant directement une à
une les instructions du langage d'assemblage en instructions du langage machine,
ceci à cause du problème des références en avant , c'est-à-dire des références à des
étiquettes non encore connues de l'assembleur.
Exemple
JMP boucle
boucle : …
Lorsque l'assembleur traite l'instruction JMP boucle, il ne peut pas traduire le
symbole boucle par une adresse, puisque l'assembleur n'a pas encore rencontré la
définition de l'étiquette boucle. L'assembleur travaille donc en deux passes. Lors de
la première passe, l'assembleur rassemble l'ensemble des symboles et étiquettes
dans une table et leur associe une adresse dans le code. Lors de la deuxième passe,
l'assembleur résout les références en avant en utilisant la table construite lors de la
première passe.
Première passe de l'assembleur
La principale fonction de la première passe est de construire la table des symboles .
Cette table contient une entrée pour chaque nouveau symbole du code en langage
d'assemblage et met en correspondance le nom du symbole avec sa valeur dans le
code. Cette valeur est une adresse si l'étiquette est associée à une instruction ou à
une variable; c'est une valeur constante si l'étiquette est associée à une constante.
Pour pouvoir affecter une adresse à chacun des symboles du code en langage
d'assemblage, l'assembleur doit assigner une adresse à chacune des instructions et
des déclarations de variables. Pour ce faire, l'assembleur manipule un compteur
appelé compteur d'emplacement , mis à 0 au début de la première passe et incrémenté
de la longueur de l'instruction ou de la longueur de la variable à chaque instruction
ou déclaration traitée. L'assembleur réalise alors une allocation du programme machine
relativement à l'adresse 0. La première passe élimine également les commentaires.
 
 
Search WWH ::




Custom Search