Come capire compilatori C ++

May 24

Un compilatore è un programma che traduce il codice sorgente in un linguaggio simile a quella umana in istruzioni macchina. Il prodotto finale è un file eseguibile. I compilatori generano i programmi più efficienti. Si può costruire file di libreria che si nascondono implementazione in modo che questi possono essere collegati nel programma principale. compilazione C ++ è un processo che coinvolge diverse fasi.

istruzione

1 Comprendere la fase di preprocessore. Compilatori C ++ iniziano la compilazione eseguendo un semplice programma chiamato il preprocessore. Il preprocessore converte le direttive del preprocessore e scrive il risultato di un file intermedio. direttive del preprocessore sono formule che aumentano la leggibilità nel codice sorgente e risparmiare digitazione.

2 Comprendere la fase di scansione. Questo è anche chiamato la fase di analisi lessicale. Qui, il codice sorgente è suddiviso in sue quote ultime chiamate token. Il token può essere una parola chiave, un identificatore o un nome simbolico.

3 Identificare la fase di analisi. Questo è anche conosciuto come "analisi sintattica." Qui, la sequenza lineare dei token dalla fase precedente viene riorganizzata la in una struttura chiamata albero di analisi. Un albero sintattico è una struttura costruita secondo le regole della grammatica formale che definisce la sintassi del C ++.

4 Conoscere la fase di analisi semantica. Qui il compilatore aumenta l'albero sintattico e costruisce la tabella dei simboli. Questa fase prevede il tipo di controllo (prevenzione degli errori relativi al tipo di corrispondenza), oggetto associazione (collegamento di definizioni alle dichiarazioni per le funzioni e le classi), l'assegnazione definitiva (l'inizializzazione e l'elaborazione sovraccarico operatore) e l'individuazione di avvisi ed errori.

5 Afferrare la fase di ottimizzazione indipendente dalla macchina. Ecco un programma chiamato un ottimizzatore globale viene utilizzato per la produzione di codice intermedio che è ottimizzato per una migliore efficienza.

6 Rivedere la fase di generazione del codice. Questo è dove il codice intermedio si trasforma in linguaggio macchina del sistema. Questo può essere il linguaggio assembly o linguaggio macchina. Se si tratta di linguaggio assembly poi l'assemblatore, un programma, viene eseguito. In entrambi i casi il risultato è moduli di oggetto aventi estensione ".obj".

7 Acquisire familiarità con "ottimizzazione dipendente dalla macchina." In questa fase il codice macchina che è stato generato è ottimizzato ancora di più.

8 Familiarizzare con il collegamento. Qui, un programma chiamato linker combina i moduli di oggetto ottimizzati in un programma eseguibile con il familiare "exe" estensione che può essere caricato in memoria ed eseguito dal sistema operativo. Il linker risolve i riferimenti alle funzioni attraverso i file, quali moduli di oggetto o file di libreria.