Differenza tra fase e passare nel compilatore

Anonim

Phase vs Pass in Compiler

In generale il compilatore è un programma per computer che legge un programma scritto in una sola lingua, che viene chiamata la lingua di origine e la traduce in un'altra lingua, che viene chiamata la lingua di destinazione. Tradizionalmente, la lingua di origine era un linguaggio di alto livello come C ++ e la lingua di destinazione era un linguaggio a basso livello come la lingua dell'Assemblea. Quindi, in generale i compilatori possono essere considerati come traduttori che traducono da una lingua all'altra. Pass e Phase sono due termini usati spesso con i compilatori. Il numero di passaggi di un compilatore è il numero di volte che va oltre la fonte (o una qualche forma di rappresentazione di esso). Un compilatore è suddiviso in parti per la convenienza della costruzione. La fase è spesso utilizzata per chiamare una singola parte indipendente di un compilatore.

Che cosa è un pass in un compilatore?

Un modo standard per classificare i compilatori è il numero di "pass". Di solito, la compilazione è un processo relativamente intensivo di risorse e in un primo momento i computer non avevano abbastanza memoria per tenere un programma che ha fatto il lavoro completo. A causa di questa limitazione delle risorse hardware nei primi computer, i compilatori sono stati suddivisi in sottoprogrammi più piccoli che hanno fatto il suo lavoro parziale passando sopra il codice sorgente (fatto un "pass" sulla sorgente o in qualche altra forma) e l'analisi eseguita, trasformazioni e compiti di traduzione separatamente. Quindi, a seconda di questa classificazione, i compilatori vengono identificati come compilatori di un pass o multi-pass.

Come suggerisce il nome, i compilatori di un pass possono compilare in un solo passaggio. È più facile scrivere un compilatore a un passante e anche eseguire più veloce dei compilatori a più passaggi. Pertanto, anche al momento in cui avevi limitazioni delle risorse, le lingue sono state progettate in modo che possano essere compilate in un passaggio (ad esempio Pascal). D'altra parte, un tipico compilatore a più passaggi è composto da diverse tappe principali. La prima fase è lo scanner (noto anche come analizzatore lessicale). Lo scanner legge il programma e lo converte in una serie di gettoni. La seconda fase è il parser. Trasforma la stringa di gettoni in un albero di analisi (o un albero di sintassi astratto), che cattura la struttura sintattica del programma. La fase successiva è quella che interpreta la semantica della struttura sintattica. Le fasi di ottimizzazione dei codici e la fase finale di generazione di codice seguono questa operazione.

Che cosa è una fase in un compilatore?

La fase di termine si presenta spesso quando si parla di costruzione del compilatore. Inizialmente, i compilatori erano ogni semplice pezzo di software singolo monolitico scritto da una persona per la compilazione di un semplice linguaggio. Ma quando il codice sorgente della lingua da tradurre diventa complesso e grande, il compilatore è stato suddiviso in più fasi (relativamente indipendenti).Il vantaggio di avere fasi diverse è che lo sviluppo del compilatore può essere distribuito in una squadra di sviluppatori. Inoltre migliora la modularità e il riutilizzo consentendo di sostituire le fasi con quelle migliorate o altre fasi (come ulteriori ottimizzazioni) da aggiungere al compilatore. Il processo di divisione della compilazione a fasi è stato introdotto dal PQCC (Project Quality Compiler-Compilatore di Produzione) presso la Carnegie Melon University. Essi hanno introdotto i termini front end, mid end e back end. La maggior parte dei compilatori hanno almeno due fasi. Ma di solito, la parte posteriore e la parte anteriore incapsulano queste fasi.

Qual è la differenza tra Phase and Pass in Compiler?

Fase e Pass sono due termini utilizzati nell'area dei compilatori. Un pass è una sola volta che il compilatore passa (passa) il codice sorgente o un'altra rappresentazione di esso. Tipicamente, la maggior parte dei compilatori hanno almeno due fasi denominate front end e back end, mentre potrebbero essere un one-pass o un multi-pass. La fase è utilizzata per classificare i compilatori in base alla costruzione, mentre il pass è utilizzato per classificare i compilatori in base al modo in cui operano.