Différence entre phase et passage dans le compilateur

Anonim

Phase dans le compilateur

En général, le compilateur 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ée la langue cible. Traditionnellement, la langue source était un langage de haut niveau tel que C ++ et la langue 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 à l'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 qu'il passe sur la source (ou une forme de représentation de celui-ci). Un compilateur est divisé en parties pour la commodité de la construction. La phase est souvent utilisée pour appeler une seule partie indépendante d'un compilateur.

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

Un moyen standard de classer les compilateurs est le nombre de "passes". Habituellement, la compilation est un processus relativement gourmand en ressources et initialement, les ordinateurs n'avaient pas assez de mémoire pour contenir un tel programme qui effectuait le travail complet. En raison de cette limitation des ressources matérielles dans les premiers ordinateurs, les compilateurs ont été divisés en sous-programmes plus petits qui ont fait leur travail partiel en passant par le code source (fait passer la source ou une autre forme), les transformations et les tâches de traduction séparément. Ainsi, en fonction de cette classification, les compilateurs sont identifiés comme des compilateurs à une ou plusieurs passes.

Comme son nom l'indique, les compilateurs en un passage compilent en un seul passage. Il est plus facile d'écrire un compilateur en une passe et aussi ils exécutent plus vite que les compilateurs multipasses. Par conséquent, même au moment où vous disposiez de ressources limitées, les langues ont été conçues de manière à pouvoir être compilées 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 syntaxique abstrait), qui capture la structure syntaxique du programme. Le stade suivant est celui qui interprète la sémantique de la structure syntaxique. Les étapes d'optimisation de code et l'étape de génération de code final suivent ceci.

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

Le terme phase apparaît souvent lorsque vous parlez de la construction d'un compilateur. Initialement, les compilateurs étaient tous des simples morceaux de logiciels monolithiques écrits par une personne pour la compilation d'un langage simple. Mais lorsque le code source de la langue à 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 de remplacer les phases par des améliorations 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 (Compiler Compiler-Compiler de production) à l'Université Carnegie Melon. Ils ont introduit les termes avant, arrière et arrière. La plupart des compilateurs ont au moins deux phases. Mais en général, l'extrémité arrière et l'extrémité avant 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. Un passage est une seule fois que le compilateur passe (traverse) le code source ou une autre représentation de celui-ci. Généralement, 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. La phase est utilisée pour classifier les compilateurs en fonction de la construction, tandis que le passage est utilisé pour classer les compilateurs en fonction de leur fonctionnement.