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

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

Phase vs passage dans le compilateur

En général, Compiler est un programme informatique qui lit un programme écrit dans une langue, qui est appelé la langue source, et le traduit dans une autre langue, qui est appelé la 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 se traduisent d'une langue à une autre. Passer 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 en revue la source (ou une forme de représentation de celui-ci). Un compilateur est décomposé en pièces pour la commodité de la construction. La phase est souvent utilisée pour appeler une partie aussi indépendante d'un compilateur.

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

Un moyen standard de classer les compilateurs est le nombre de «passes». Habituellement, la compilation est un processus à forte intensité de ressources et initialement les ordinateurs n'avaient pas assez de mémoire pour organiser un tel programme qui a fait le travail complet. En raison de cette limitation des ressources matérielles dans les premiers ordinateurs, les compilateurs ont été décomposés dans des sous-programmes de petits sous-programmes qui ont fait son travail partiel en dépassant le code source (réalisé un «pass» sur la source ou une autre forme) et a effectué l'analyse , transformations et tâches de traduction séparément. Ainsi, selon cette classification, les compilateurs sont identifiés en tant que compilateurs à un passage ou à plusieurs passes.

Comme son nom l'indique, les compilateurs à un passage compilent en un seul passage. Il est plus facile d'écrire un compilateur à un passage et ils fonctionnent également plus rapidement que les compilateurs multi-passes. Par conséquent, même au moment où vous aviez des limitations de ressources, les langues ont été conçues pour qu'ils puissent être compilés en une seule pass (E.g. Pascal). D'un autre côté, un compilateur multi-pass typique est composé de plusieurs étapes principales. La première étape est le scanner (également connu sous le nom de l'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 une syntaxe abstraite), qui capture la structure syntaxique du programme. La prochaine étape est la qui interprète la sémantique de la structure syntaxique. Les étapes d'optimisations de code et la scène de génération de code finale suivent ceci.

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

Le terme phase apparaît souvent lorsque vous parlez de la construction du compilateur. Initialement, les compilateurs étaient tous les simples morceaux de logiciel monolithique unique écrit par une personne pour la compilation d'un langage simple. Mais lorsque le code source de la langue à traduire devient complexe et grand, le compilateur a été décomposé en plusieurs phases (relativement indépendantes). L'avantage d'avoir des phases différentes est que le développement du compilateur peut être distribué entre une équipe de développeurs. En outre, il améliore la modularité et la réutilisation en permettant aux phases d'être remplacées par des phases améliorées ou des phases supplémentaires (telles que d'autres optimisations) à ajouter au compilateur. Le processus de division de la compilation en phases a été introduit par le PQCC (Projet de compilateur-compilateur de la qualité de production) à l'Université Carnegie Melon. Ils ont introduit les termes avant, intermédiaire et arrière. La plupart des compilateurs ont au moins deux phases. Mais généralement, l'arrière et le front-end résument ces phases.

Quelle est la différence entre la phase et le pass dans le compilateur?

La phase et le passage sont deux termes utilisés dans la zone des compilateurs. Un pass est une seule fois où le compilateur passe (passe) le code des sources 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 avant et arrière, alors qu'elles pourraient être une seule voie ou multi-pass. La phase est utilisée pour classer les compilateurs en fonction de la construction, tandis que PASS est utilisé pour classer les compilateurs en fonction de la façon dont ils fonctionnent.