Pass1 et Pass2 sont deux passes d'un assembleur à deux passes, un programme informatique utilisé dans les logiciels système pour traduire le langage assembleur en code machine. Voici une comparaison et un contraste entre les deux :
1. Objectif :
- Pass1 (Génération de table de symboles) : Le but de Pass1 est d'analyser l'intégralité du programme assembleur et de créer une table de symboles contenant les adresses et les attributs (type, portée) de tous les symboles (par exemple, variables, étiquettes) définis dans le programme.
- Pass2 (génération de code) : Le but de Pass2 est de générer réellement les instructions du code machine basées sur la table de symboles créée dans Pass1 et les instructions spécifiées dans le programme d'assemblage.
2. Fonctions exercées :
- Réussite 1 :
- Lit et analyse chaque instruction du programme d'assemblage ligne par ligne.
- Identifie et stocke les symboles dans la table des symboles.
- Attribue des adresses mémoire à chaque symbole.
- Effectue une analyse syntaxique et lexicale, en détectant les erreurs de syntaxe ou les symboles non définis.
- Pass2 :
- Utilise la table de symboles générée par Pass1 pour résoudre les références symboliques.
- Génère les instructions réelles du code machine correspondant à chaque instruction d'assemblage.
- Effectue une vérification finale des erreurs pour vérifier que tous les symboles ont été définis et utilisés correctement.
3. Résultat :
- Réussite 1 : La sortie de Pass1 est la table des symboles, qui est utilisée par Pass2 pour la génération de code.
- Pass2 : La sortie de Pass2 est le programme de code machine exécutable. Ce programme peut être directement chargé en mémoire et exécuté par le CPU.
En résumé, Pass1 d'un assembleur de logiciel système se concentre sur la création de la table de symboles et l'analyse des erreurs du programme d'assemblage, tandis que Pass2 utilise cette table de symboles pour générer les instructions de code machine correspondantes et produire le programme exécutable final.
|