Un Pass 1 ou Preprocessor Assembler est un programme informatique utilisé pour traiter le code source écrit dans un langage de programmation de bas niveau tel que l'assembleur avant qu'il ne soit traité par un assembleur principal. Il est conçu pour effectuer certaines tâches de prétraitement sur le code source de l'assembly avant que le processus d'assemblage lui-même n'ait lieu.
Fonctions d'un assembleur Pass 1
1. Traitement des macros : Pass 1 Assembler fournit généralement des capacités de traitement de macros, permettant aux programmeurs de définir et d'utiliser des macros dans leur code source d'assembly. Les macros peuvent être étendues avec les paramètres appropriés pour générer plusieurs lignes de code assembleur, contribuant ainsi à simplifier et à réduire les tâches de codage répétitives.
2. Assemblage conditionnel : Pass 1 Assembler peut prendre en charge les instructions d’assemblage conditionnel. Ces instructions permettent à l'assembleur d'inclure ou d'exclure sélectivement des parties du code source de l'assembly en fonction de conditions définies ou de directives du préprocesseur. Cela peut être utile pour créer différentes versions d'un programme ou pour créer un code assembleur compatible avec différentes configurations matérielles ou systèmes d'exploitation.
3. Génération de code : Dans certains cas, Pass 1 Assembler peut effectuer certaines tâches de génération de code. Cela inclut la génération de certains extraits de code ou constantes directement dans le code source de l'assembly.
4. Directives de prétraitement : Pass 1 Assembler traite les directives de prétraitement, qui fournissent des instructions ou des commandes qui ne sont pas des instructions d'assemblage mais affectent la façon dont l'assembleur interprète et traite le code source. Ces directives peuvent inclure INCLUDE pour incorporer un autre fichier source, EQUATE pour définir des constantes et COPY pour insérer un bloc de code textuellement.
5. Vérification des erreurs et diagnostic : Pass 1 Assembler peut effectuer une vérification des erreurs et fournir des diagnostics pour aider le programmeur à identifier et corriger les erreurs dans le code source de l'assembly.
Pass 2 Assembleur
Une fois que l'assembleur Pass 1 a traité le code source de l'assembly et que toutes les tâches de prétraitement ont été terminées, le code est alors prêt à être traité par l'assembleur principal, également connu sous le nom d'assembleur Pass 2.
Pass 2 Assembler se concentre principalement sur les tâches suivantes :
1. Résolution des symboles :Pass 2 Assembler résout tous les symboles définis dans le code source de l'assembly en leur attribuant des adresses mémoire spécifiques.
2. Génération de code et de données :Pass 2 Assembler génère les instructions de code machine réelles et les structures de données basées sur les instructions et directives d'assemblage du code source.
3. Calcul d'adresse :Pass 2 Assembler calcule les adresses mémoire de tous les symboles et instructions, en s'assurant qu'ils sont correctement placés en mémoire pour l'architecture cible.
4. Vérification des erreurs :Pass 2 Assembler vérifie en outre le code source de l'assembly pour détecter les erreurs, telles que des types de données incorrects, des instructions non valides ou des adresses incohérentes.
5. Assemblage final :une fois que toutes les erreurs ont été résolues et que le code source de l'assembly a été entièrement traité, Pass 2 Assembler génère le code binaire assemblé final, qui est prêt à être exécuté ou traité davantage par un éditeur de liens si nécessaire.
En résumé, Pass 1 Assembler, ou Preprocessor Assembler, effectue des tâches de prétraitement sur le code source de l'assembly avant le processus d'assemblage principal, telles que le traitement des macros, l'assemblage conditionnel, les directives de prétraitement et la vérification des erreurs. Pass 2 Assembler prend ensuite le relais pour gérer la résolution des symboles, la génération de code et de données, le calcul d'adresses, la vérification des erreurs et l'assemblage final, aboutissant à la génération du code binaire exécutable.
|