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: DIFFERENZA TRA FASE E NEUTRO, CORRENTE ELETTRICA, SPINA E PRESA SCHUKO 2024, Aprile
Anonim

Fase vs passaggio 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, la lingua di origine era un linguaggio di alto livello come il C ++ e la lingua 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 supera la sorgente (o una qualche forma di rappresentazione di essa). Un compilatore è suddiviso in parti per comodità di costruzione. La fase viene spesso utilizzata per chiamare una parte così singola indipendente di un compilatore.

Cos'è un passaggio in un compilatore?

Un modo standard per classificare i compilatori è il numero di "passaggi". Di solito, la compilazione è un processo relativamente dispendioso in termini di risorse e inizialmente i computer non disponevano di 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 sono stati suddivisi in sottoprogrammi più piccoli che hanno svolto il suo lavoro parziale superando il codice sorgente (ha effettuato un "passaggio" sul sorgente o in qualche altra forma di esso) ed eseguito l'analisi, trasformazioni e attività di traduzione separatamente. Quindi, a seconda di questa classificazione, i compilatori sono identificati come compilatori a un passaggio o multi-passaggio.

Come suggerisce il nome, i compilatori one-pass vengono compilati in un unico passaggio. È più facile scrivere un compilatore a un passaggio e inoltre sono più veloci dei compilatori a più passaggi. Pertanto, anche nel momento in cui avevi limitazioni di risorse, i linguaggi erano progettati in modo da poter essere compilati in un unico passaggio (ad esempio Pascal). D'altra parte, un tipico compilatore multi-pass è costituito da diverse fasi principali. Il primo stadio è lo scanner (noto anche come analizzatore lessicale). Lo 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 che interpreta 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 compare spesso quando si parla di costruzione del compilatore. Inizialmente, i compilatori erano tutti i semplici pezzi di un singolo software monolitico scritto da una persona per la compilazione di un linguaggio semplice. Ma quando il codice sorgente della lingua da tradurre diventa complesso e di grandi dimensioni, il compilatore è stato suddiviso in più fasi (relativamente indipendenti). Il vantaggio di avere fasi diverse è che lo sviluppo del compilatore può essere distribuito tra un team di sviluppatori. Inoltre, migliora la modularità e il riutilizzo consentendo di sostituire le fasi con altre migliorate o di aggiungere ulteriori fasi (come ulteriori ottimizzazioni) al compilatore. Il processo di suddivisione 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 Phase e Pass in Compiler?

Fase e Passaggio sono due termini utilizzati 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 chiamate front-end e back-end, mentre potrebbero essere one-pass o multi-pass. Phase viene utilizzato per classificare i compilatori in base alla costruzione, mentre pass viene utilizzato per classificare i compilatori in base a come operano.

Raccomandato: