Quelle est la différence entre un compilateur Single Pass et Multipass

le différence principale entre compilateur passe unique et multipass est que un compilateur à un seul passage est un compilateur qui transmet le code source à chaque unité de compilation une seule fois, tandis qu'un compilateur à plusieurs passes sépare la compilation en plusieurs passages, chaque passage continuant avec le résultat du passage précédent..

Un programme informatique est un ensemble d'instructions permettant à l'ordinateur d'effectuer une tâche donnée. Habituellement, les programmeurs écrivent des programmes en utilisant des langages de programmation de haut niveau. Cependant, l'ordinateur ne comprend pas ces instructions. Par conséquent, il est nécessaire de convertir le code source en un code machine compréhensible par une machine. Un compilateur est un logiciel qui convertit le code source en code machine. Les compilateurs à passe unique et multipass sont deux types de compilateurs..

Zones clés couvertes

1. Qu'est-ce qu'un compilateur à un seul passage?
     - Définition, fonctionnalité
2. Qu'est-ce qu'un compilateur multipass?
     - Définition, fonctionnalité
3. Quelle est la différence entre un compilateur Single Pass et Multipass
     - Comparaison des différences clés

Mots clés

Compilateur Single Pass, Compilateur Multipass

Qu'est-ce qu'un compilateur à un seul passage?

Le processus de compilation comporte plusieurs étapes. Un compilateur en une passe effectue une seule passe dans le texte source, analysant, analysant et générant le code une seule fois. En d'autres termes, cela permet au code source de ne traverser chaque unité de compilation qu'une seule fois. Il traduit immédiatement chaque section de code en son code machine final. 

Figure 1: Compilateur

Les principales étapes du compilateur en une passe sont l'analyse lexicale, l'analyse syntaxique et le générateur de code. Dans un premier temps, l’analyse lexicale analyse le code source et le divise en jetons. Chaque langage de programmation a une grammaire. Il représente la syntaxe et les déclarations légales du langage. Ensuite, l'analyse syntaxique détermine les constructions de langage décrites par la grammaire. Enfin, le générateur de code génère le code cible. Globalement, le compilateur en une seule passe n'optimise pas le code. De plus, il n'y a pas de génération de code intermédiaire.  

Qu'est-ce que Multipass Compiler?

Un compilateur multipass oblige le code source à analyser, analyser, générer, etc. plusieurs fois tout en générant un code intermédiaire après chaque étape. Il convertit le programme en une ou plusieurs représentations intermédiaires en étapes entre le code source et le code machine. Il traite à nouveau l’ensemble de la compilation à chaque passage séquentiel..

Chaque passe prend en entrée le résultat de la passe précédente et crée une sortie intermédiaire. De même, à chaque passage, le code s'améliore jusqu'à ce que le passage final génère le code final. Un compilateur multipass effectue des tâches supplémentaires telles que la génération de code intermédiaire, l'optimisation du code dépendant de la machine et l'optimisation du code indépendant de la machine.

Figure 2: Compilateur multipass

Les compilateurs multipass présentent de nombreux avantages. Ils sont indépendants de la machine et incluent une structure modulaire. La génération de code se dissocie des autres étapes de la compilation. Par conséquent, les passes peuvent être réutilisées pour différentes machines ou matériels. De plus, il représente des langages plus complexes et expressifs.

Différence entre le compilateur Single Pass et Multipass

Définition

Un compilateur en une seule passe est un type de compilateur qui ne parcourt les parties de chaque unité de compilation qu’une seule fois, en traduisant immédiatement chaque section de code en son code machine final. Un compilateur multipass est un type de compilateur qui traite plusieurs fois le code source ou l'arborescence syntaxique abstraite d'un programme. Par conséquent, ces définitions expliquent la principale différence entre un compilateur mono-passe et multi-passe.

La vitesse

La vitesse est une différence majeure entre un compilateur à une passe et à plusieurs passes. Un compilateur multipass est plus lent qu'un compilateur à passe unique car chaque passe lit et écrit un fichier intermédiaire..

Synonymes

Un compilateur en une seule passe est également appelé compilateur étroit, tandis qu'un compilateur multipass est appelé compilateur étendu..

Portée

De plus, un compilateur à un seul passage a une portée limitée alors qu'un compilateur à plusieurs passes a une plus grande portée..

Optimisation du code

Une autre différence entre le compilateur passe unique et le passeport multiple est qu’il n’ya pas d’optimisation de code dans un compilateur passe simple, contrairement à un compilateur à passe multiples, qui dispose d’une optimisation de code..

Codes intermédiaires

Les codes intermédiaires font également la différence entre les compilateurs à passe unique et les passeport multiples. Il n'y a pas de génération de code intermédiaire dans les compilateurs à un seul passage. Cependant, il existe une génération de code intermédiaire dans les compilateurs multipass.

Temps de compilation

De plus, un compilateur en un seul passage prend un temps minimum à compiler par rapport à un compilateur multipass.

Consommation de mémoire

En outre, la consommation de mémoire dans un compilateur multipass est supérieure à celle d'un compilateur à un seul passage. C’est donc une autre différence entre un compilateur à passe unique et un passeport multiple..

Langages de programmation

Les langages de programmation tels que Pascal peuvent être implémentés à l'aide d'un compilateur à un seul passage, tandis que les langages de programmation tels que Java peuvent être implémentés à l'aide d'un compilateur multipass. C’est pourquoi c’est une autre différence entre le compilateur à passe unique et le passeport multiple..

Conclusion

Les compilateurs à un seul passage et à plusieurs passes sont deux types de compilateurs. La différence entre un compilateur passe unique et multipass réside dans le fait qu'un compilateur passe unique est un compilateur qui transmet le code source à chaque unité de compilation une seule fois, tandis qu'un compilateur multipass sépare la compilation en plusieurs passes, chaque passe continuant avec le résultat de la passe précédente..

Référence:

1. “pass1 And 2 Compiler.” Scribd, Scribd, disponible ici.
2. «Compilateur One-Pass». Wikipedia, Wikimedia Foundation, 23 mars 2018, disponible ici..
3. «Compilateur multi-passes». Wikipedia, Wikimedia Foundation, 8 février 2018, disponible ici..

Courtoisie d'image:

1. “Compilateur” de I, Surachit (CC BY-SA 3.0) via Commons Wikimedia
2. “Multi-passcompiler” de Kenstruys - Travail personnel (domaine public) via Commons Wikimedia