Diferència entre la fase i la passada al compilador

Diferència entre la fase i la passada al compilador
Diferència entre la fase i la passada al compilador

Vídeo: Diferència entre la fase i la passada al compilador

Vídeo: Diferència entre la fase i la passada al compilador
Vídeo: FANBOYS: Coordinating Conjunctions 2024, Juliol
Anonim

Fase vs Pass al compilador

En general, el compilador és un programa informàtic que llegeix un programa escrit en un idioma, que s'anomena llengua d'origen, i el tradueix a un altre idioma, que s'anomena llengua de destinació. Tradicionalment, el llenguatge d'origen era un llenguatge d' alt nivell com el C++ i el llenguatge de destinació era un llenguatge de baix nivell com el llenguatge assemblador. Així, en general, els compiladors es poden veure com a traductors que tradueixen d'un idioma a un altre. Pass i Phase són dos termes que s'utilitzen sovint amb compiladors. El nombre de passades d'un compilador és el nombre de vegades que passa per la font (o alguna forma de representació d'aquesta). Un compilador es divideix en parts per a la comoditat de la construcció. La fase s'utilitza sovint per cridar una part independent d'un compilador.

Què és una passada en un compilador?

Una manera estàndard de classificar els compiladors és pel nombre de "passes". En general, la compilació és un procés relativament intensiu en recursos i inicialment els ordinadors no tenien prou memòria per contenir un programa d'aquest tipus que fes la feina completa. A causa d'aquesta limitació dels recursos de maquinari en els primers ordinadors, els compiladors es van dividir en subprogrames més petits que feien la seva feina parcial repassant el codi font (feien una "passa" sobre la font o alguna altra forma d'aquest) i realitzaven anàlisis., transformacions i tasques de traducció per separat. Per tant, depenent d'aquesta classificació, els compiladors s'identifiquen com a compiladors d'una passada o de múltiples passades.

Com el seu nom indica, els compiladors d'una sola passada es compilen en una sola passada. És més fàcil escriure un compilador d'una sola passada i també funcionen més ràpid que els compiladors de múltiples passades. Per tant, fins i tot en el moment en què teníeu limitacions de recursos, els llenguatges es van dissenyar de manera que es poguessin compilar d'una sola passada (per exemple, Pascal). D' altra banda, un típic compilador multipass està format per diverses etapes principals. La primera etapa és l'escàner (també conegut com a analitzador lèxic). Scanner llegeix el programa i el converteix en una cadena de fitxes. La segona etapa és l'analitzador. Converteix la cadena de fitxes en un arbre d'anàlisi (o un arbre de sintaxi abstracta), que captura l'estructura sintàctica del programa. La següent etapa és la interpretació de la semàntica de l'estructura sintàctica. Les etapes d'optimització de codi i la fase final de generació de codi segueixen aquesta.

Què és una fase en un compilador?

El terme fase apareix sovint quan parles de la construcció del compilador. Inicialment, els compiladors eren peces senzilles de programari monolític i únic escrit per una persona per a la compilació d'un llenguatge senzill. Però quan el codi font de l'idioma a traduir esdevé complex i gran, el compilador es va dividir en múltiples fases (relativament independents). L'avantatge de tenir diferents fases és que el desenvolupament del compilador es pot distribuir entre un equip de desenvolupadors. A més, millora la modularitat i la reutilització permetent que les fases es substitueixin per altres millorades o que s'afegeixin fases addicionals (com ara optimitzacions addicionals) al compilador. El procés de dividir la compilació en fases va ser introduït pel PQCC (Production Quality Compiler-Compiler Project) de la Carnegie Melon University. Van introduir els termes front end, middle end i back end. La majoria dels compiladors tenen almenys dues fases. Però normalment, la part posterior i la part frontal encapsulen aquestes fases.

Quina diferència hi ha entre Phase i Pass al compilador?

Phase i Pass són dos termes utilitzats a l'àrea de compiladors. Una passada és una única vegada que el compilador passa per sobre (passa) el codi font o alguna altra representació d'aquest. Normalment, la majoria dels compiladors tenen almenys dues fases anomenades front-end i back-end, mentre que podrien ser d'una passada o de múltiples passades. Phase s'utilitza per classificar compiladors segons la construcció, mentre que pass s'utilitza per classificar compiladors segons com funcionen.

Recomanat: