Phase vs Pass dans le compilateur
En règle générale, 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, 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 Assembly. Ainsi, en général, les compilateurs peuvent être considérés comme des traducteurs traduisant d’une langue à l’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 méthode standard pour classer les compilateurs est le nombre de «passes». Habituellement, la compilation nécessite beaucoup de ressources et au départ, les ordinateurs n’avaient pas assez de mémoire pour contenir un tel programme exécutant 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 effectuaient leur travail en partie en examinant le code source (effectuant un «passage» au-dessus du source ou d’une autre forme) 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 en tant que compilateurs mono-passe ou multi-passes.
Comme son nom l'indique, les compilateurs à une passe sont compilés en une seule passe. Il est plus facile d'écrire un compilateur à une passe et ils s'exécutent plus rapidement que les compilateurs à passes multiples. Par conséquent, même à l’époque où vos ressources étaient limitées, 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. 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.
Qu'est-ce qu'une phase dans un compilateur??
La phase de terme revient souvent lorsque vous parlez de la construction du compilateur. À l'origine, les compilateurs étaient tous des éléments simples d'un logiciel monolithique écrit par une seule personne pour la compilation d'un langage simple. Mais lorsque le code source de la langue à traduire devient complexe et volumineux, le compilateur est décomposé 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 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 projet PQCC (Production Quality Compiler-Compiler) 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 in Compiler?
Phase et Pass sont deux termes utilisés dans le domaine des compilateurs. Une passe est un passage unique du compilateur au 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 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.