Il modello di compilazione del linguaggio C -Parte 1Di Fusco Francesco :: 2011-03-22 Per modello di compilazione del linguaggio C intendiamo tutte le fasi attraverso cui un programma scritto in linguaggio C deve passare (e quindi anche tutti gli strumenti software che bisogna utilizzare) per poter ottenere un programma eseguibile.
Una rappresentazione grafica di tale processo la posiamo vedere dalla figura seguente:
Il Preprocessore
Il codice sorgente (il nostro programma scritto in linguaggio C) viene sottoposto alla pre-elaborazione del pre-processore
Il preprocessore accetta codice sorgente in input ed ha la funzione di:
:: rimuovere i commenti (che non devono essere tradotti)
:: interpreta speciali direttive al compilatore, denotate con il carattere #
Ad esempio:
#include -- include il contenuto di un file.
Ad esempio, in un programma possiamo avere:
#include -- la libreria matematica standard.
#include -- la libreria standard per le operazioni di Input/Output
#define -- definisce un nome simbolico o una costante. Serve anche per la sostituzione delle Macro
Ad esempio, possiamo scrivere:
#define PI_GRECO 3.14
Il compilatore C
l compilatore C traduce il codice sorgente in codice assembly. Il codice sorgente viene ricevuto dal preprocessore (quindi pre-elaborato).
L'assemblatore
L'assemblatore crea il codice oggetto. Su un sistema UNIX (ad es, Linux) possiamo vedere file con estensione .o oppure sui sistemi MSDOS file con estensione .OBJ e che indicano file di codice oggetto.
Il Link Editor
Se nel codice sorgente c'รจ un riferimento ad una funzione di una libreria o alla funzione definita in un altro file sorgente il link editor combina insieme queste funzioni (con la funzione main()) in modo da creare un file eseguibile.