Différence entre la phase et la passe dans le compilateur

Différence entre la phase et la passe dans le compilateur
Différence entre la phase et la passe dans le compilateur

Vidéo: Différence entre la phase et la passe dans le compilateur

Vidéo: Différence entre la phase et la passe dans le compilateur
Vidéo: Différence entre diplôme accrédité et autorisé ? Quels types de diplômes existent-ils au Maroc? 2024, Novembre
Anonim

Phase vs Pass in Compiler

En général, un 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 passages d'un compilateur est le nombre de fois qu'il passe sur la source (ou une forme de représentation de celle-ci). Un compilateur est décomposé en plusieurs parties pour la commodité de la construction. Phase est souvent utilisé pour appeler une telle partie indépendante d'un compilateur.

Qu'est-ce qu'un Pass dans un compilateur ?

Une manière standard de classer les compilateurs est par le nombre de "passes". Habituellement, la compilation est un processus relativement gourmand en ressources et, au départ, les ordinateurs n'avaient pas assez 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 parcourant le code source (fait un "passage" sur la source ou une autre forme de celui-ci) et effectué une analyse, les transformations et les tâches de traduction séparément. Ainsi, selon cette classification, les compilateurs sont identifiés comme des compilateurs à une passe ou à plusieurs passes.

Comme leur nom l'indique, les compilateurs en une passe compilent en une seule passe. Il est plus facile d'écrire un compilateur en une seule passe et ils fonctionnent également plus rapidement que les compilateurs multi-passes. Par conséquent, même à l'époque où les ressources étaient limitées, les langages étaient conçus pour pouvoir être compilés en une seule passe (par exemple, Pascal). D'un autre côté, un compilateur multipasse typique est composé de plusieurs étapes principales. La première étape est le scanner (également connu sous le nom d'analyseur lexical). 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. La prochaine étape est celle qui interprète la sémantique de la structure syntaxique. Les étapes d'optimisation du code et l'étape finale de génération du code suivent ceci.

Qu'est-ce qu'une phase dans un compilateur ?

Le terme phase revient souvent lorsque vous parlez de la construction d'un compilateur. Initialement, les compilateurs étaient tous de simples morceaux de logiciels simples et monolithiques écrits 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 se décompose 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. De plus, il améliore la modularité et la réutilisation en permettant de remplacer les phases par des phases améliorées ou d'ajouter des phases supplémentaires (telles que des optimisations supplémentaires) 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 où le compilateur passe (parcourt) 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'elles peuvent être en une 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.

Conseillé: