Phase vs Pass dans le compilateur
En général, le compilateur est un programme informatique qui lit un programme écrit dans une langue, appelée langue source, et le traduit dans une autre langue, appelée langue cible. Traditionnellement, le langage source était un langage de haut niveau tel que C ++ et le langage cible était un langage de bas niveau tel que le langage d'assemblage. Ainsi, en général, les compilateurs peuvent être considérés comme des traducteurs qui traduisent d'une langue à une autre. Pass et Phase sont deux termes souvent utilisés avec les compilateurs. Le nombre de passes d'un compilateur est le nombre de fois où il passe sur la source (ou une forme de représentation de celle-ci). Un compilateur est divisé en plusieurs parties pour faciliter la construction. Phase est souvent utilisé pour appeler une seule partie indépendante d'un compilateur.
Qu'est-ce qu'une passe dans un compilateur?
Une manière standard de classer les compilateurs est le nombre de «passes». Habituellement, la compilation est un processus relativement gourmand en ressources et au départ, les ordinateurs ne disposaient pas de suffisamment de mémoire pour contenir un tel programme qui faisait le travail complet. En raison de cette limitation des ressources matérielles dans les premiers ordinateurs, les compilateurs ont été décomposés en sous-programmes plus petits qui ont fait leur travail partiel en passant en revue le code source (en passant par-dessus la source ou une autre forme de celui-ci) et en effectuant une analyse, transformations et tâches de traduction séparément. Ainsi, en fonction de cette classification, les compilateurs sont identifiés comme des compilateurs à un ou plusieurs passages.
Comme son nom l'indique, les compilateurs en un seul passage se compilent en un seul passage. Il est plus facile d'écrire un compilateur en un seul passage et ils sont également plus rapides que les compilateurs en plusieurs passes. Par conséquent, même au moment où vous aviez des limitations de ressources, les langages étaient conçus pour pouvoir être compilés en un seul passage (par exemple Pascal). D'autre part, un compilateur multi-passes typique est composé de plusieurs étapes principales. La première étape est le scanner (également appelé analyseur lexical). Le scanner lit le programme et le convertit en une chaîne de jetons. La deuxième étape est l'analyseur. Il convertit la chaîne de jetons en un arbre d'analyse (ou un arbre de syntaxe abstraite), qui capture la structure syntaxique du programme. L'étape suivante est celle qui interprète la sémantique de la structure syntaxique. Les étapes d'optimisation de code et l'étape finale de génération de code suivent ceci.
Qu'est-ce qu'une phase dans un compilateur?
Le terme phase apparaît souvent lorsque vous parlez de construction du compilateur. Au départ, les compilateurs étaient des morceaux simples d'un logiciel monolithique unique écrit par une seule personne pour la compilation d'un langage simple. Mais lorsque le code source du langage à traduire devient complexe et volumineux, le compilateur a été divisé en plusieurs phases (relativement indépendantes). L'avantage d'avoir différentes phases est que le développement du compilateur peut être réparti entre une équipe de développeurs. En outre, il améliore la modularité et la réutilisation en permettant le remplacement des phases par des phases améliorées ou des phases supplémentaires (telles que des optimisations supplémentaires) à ajouter au compilateur. Le processus de division de la compilation en phases a été introduit par le PQCC (Production Quality Compiler-Compiler Project) de l'Université Carnegie Melon. Ils ont introduit les termes front end, middle end et back end. La plupart des compilateurs ont au moins deux phases. Mais généralement, le back-end et le front-end encapsulent ces phases.
Quelle est la différence entre Phase et Pass dans Compiler?
Phase et Pass sont deux termes utilisés dans le domaine des compilateurs. Une passe est une seule fois que le compilateur passe (passe par) le code source ou une autre représentation de celui-ci. En règle générale, la plupart des compilateurs ont au moins deux phases appelées front-end et back-end, alors qu'ils peuvent être à un passage ou à plusieurs passes. Phase est utilisé pour classer les compilateurs en fonction de la construction, tandis que pass est utilisé pour classer les compilateurs en fonction de leur fonctionnement.