Differenza tra fase e passaggio nel compilatore

Differenza tra fase e passaggio nel compilatore
Differenza tra fase e passaggio nel compilatore

Video: Differenza tra fase e passaggio nel compilatore

Video: Differenza tra fase e passaggio nel compilatore
Video: Accredited vs. Qualified Purchaser – What’s the Difference? | 60-Second Question 2024, Dicembre
Anonim

Fase vs Pass nel compilatore

In generale, il compilatore è un programma per computer che legge un programma scritto in una lingua, chiamata lingua di origine, e lo traduce in un' altra lingua, chiamata lingua di destinazione. Tradizionalmente, il linguaggio di origine era un linguaggio di alto livello come C++ e il linguaggio di destinazione era un linguaggio di basso livello come il linguaggio Assembly. Quindi, in generale, i compilatori possono essere visti 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 in cui va oltre il sorgente (o qualche forma di rappresentazione di esso). Un compilatore è suddiviso in parti per comodità di costruzione. La fase viene spesso utilizzata per chiamare una tale singola parte indipendente di un compilatore.

Cos'è un pass in un compilatore?

Un modo standard per classificare i compilatori è in base al numero di "passaggi". Di solito, la compilazione è un processo relativamente dispendioso in termini di risorse e inizialmente i computer non avevano memoria sufficiente per contenere un programma del genere che svolgeva il lavoro completo. A causa di questa limitazione delle risorse hardware nei primi computer, i compilatori venivano suddivisi in sottoprogrammi più piccoli che svolgevano il loro lavoro parziale esaminando il codice sorgente (facendo un "passo" sul sorgente o qualche altra forma di esso) ed eseguivano l'analisi, trasformazioni e attività di traduzione separatamente. Quindi, a seconda di questa classificazione, i compilatori vengono identificati come compilatori a passaggio singolo o multipasso.

Come suggerisce il nome, i compilatori a passaggio singolo vengono compilati in un passaggio singolo. È più facile scrivere un compilatore a passaggio singolo e inoltre funzionano più velocemente dei compilatori a passaggio multiplo. Pertanto, anche nel momento in cui avevi limitazioni di risorse, i linguaggi sono stati progettati in modo da poter essere compilati in un passaggio (ad es. Pascal). D' altra parte, un tipico compilatore multi-pass è costituito da diversi stadi principali. Il primo stadio è lo scanner (noto anche come analizzatore lessicale). Scanner legge il programma e lo converte in una stringa di token. La seconda fase è il parser. Converte la stringa di token in un albero di analisi (o un albero di sintassi astratto), che cattura la struttura sintattica del programma. La fase successiva è quella di interpretare la semantica della struttura sintattica. Seguono le fasi di ottimizzazione del codice e la fase finale di generazione del codice.

Cos'è una fase in un compilatore?

Il termine fase viene spesso fuori quando si parla di costruzione di compilatori. Inizialmente, i compilatori erano semplici pezzi di un unico software monolitico scritto da una sola persona per la compilazione di un linguaggio semplice. Ma quando il codice sorgente del linguaggio da tradurre diventa complesso e di grandi dimensioni, il compilatore è stato suddiviso in più fasi (relativamente indipendenti). Il vantaggio di avere diverse fasi è che lo sviluppo del compilatore può essere distribuito tra un team di sviluppatori. Inoltre, migliora la modularità e il riutilizzo consentendo la sostituzione delle fasi con altre migliorate o l'aggiunta di fasi aggiuntive (come ulteriori ottimizzazioni) al compilatore. Il processo di divisione della compilazione in fasi è stato introdotto dal PQCC (Production Quality Compiler-Compiler Project) presso la Carnegie Melon University. Hanno introdotto i termini front-end, middle-end e back-end. La maggior parte dei compilatori ha almeno due fasi. Ma di solito, il back-end e il front-end incapsulano queste fasi.

Qual è la differenza tra Fase e Passa nel compilatore?

Phase e Pass sono due termini usati nell'area dei compilatori. Un passaggio è una singola volta che il compilatore passa (passa attraverso) il codice sorgente o qualche altra rappresentazione di esso. In genere, la maggior parte dei compilatori ha almeno due fasi denominate front-end e back-end, mentre possono essere a passaggio singolo o multiplo. Phase viene utilizzato per classificare i compilatori in base alla costruzione, mentre pass viene utilizzato per classificare i compilatori in base al modo in cui operano.

Consigliato: