Un assembleur en un seul passage est un assembleur qui lit le code source une seule fois, générant du code machine au fur et à mesure. Un assembleur en deux passes, en revanche, lit le code source deux fois. La première étape consiste à générer une table de symboles, qui mappe les étiquettes et les variables à leurs adresses mémoire. La deuxième passe consiste à utiliser la table des symboles pour générer le code machine.
Le principal avantage d’un assembleur en une seule passe est qu’il est plus rapide qu’un assembleur en deux passes. En effet, il n’est pas nécessaire de lire le code source deux fois. Le principal inconvénient d’un assembleur en un seul passage est qu’il ne peut pas résoudre les références directes. Cela signifie que si une étiquette ou une variable est utilisée avant d'être définie, l'assembleur ne pourra pas générer le code machine correct.
Les assembleurs à deux passes peuvent résoudre les références directes, mais ils sont plus lents que les assembleurs à une passe. En effet, ils doivent lire le code source deux fois. Le principal avantage d’un assembleur à deux passes par rapport à un assembleur à une seule passe est qu’il peut produire un code machine plus efficace. En effet, il a accès à la table des symboles lors du deuxième passage, ce qui lui permet d'optimiser le code machine.
|