15.2.2 Il compilatore
Il compilatore è un programma in grado di tradurre in linguaggio macchina uno o più file
sorgenti scritti in un particolare linguaggio di programmazione. Esso fornisce come output un
file eseguibile. Tale file è il risultato della traduzione dei file sorgenti ed è quindi direttamente
comprensibile dalla CPU. Quindi per la sua esecuzione non è necessario avere il
compilatore.
La compilazione scinde la fase di traduzione delle istruzioni contenute nei file
sorgenti da quella di esecuzione. Essa è relativa soltanto alla fase traduzione di un
programma in linguaggio macchina ma non è legata in alcun modo alla sua esecuzione.
In particolare, la compilazione di un programma si compone di due fasi distinte
(v. fig. 15.5):
-
compilazione
è la fase di traduzione dei file sorgenti in linguaggio macchina e fornisce come
risultato dei file intermedi detti file oggetto che non sono comprensibili dal
sistema, ma servono per la fase di linking;
-
linking
è la fase di collegamento (link) dei file oggetto e delle librerie (statiche) per la
produzione del file eseguibile;
In genere un programma si appoggia a delle librerie di sistema (ed eventualmente
anche a delle librerie specifiche) per poter essere avviato, terminato ed eseguito.
Il codice eseguibile presente in tali librerie deve essere inserito nel file eseguibile,
risultato della compilazione del programma, in maniera tale che il file stesso risulti
indipendente.
Di seguito sono elencati i vantaggi e gli svantaggi dell’utilizzo di un compilatore
-
• il compilatore è necessario soltanto in fase di traduzione dei file sorgenti, non
durante l’esecuzione del programma. Il tempo di compilazione è generalmente non
trascurabile;
-
• durante l’esecuzione del programma la memoria del sistema viene occupata
soltanto dal programma da eseguire;
-
• poiché il file eseguibile prodotto dalla compilazione è già comprensibile dalla
CPU, il tempo di esecuzione è quello strettamente necessario all’esecuzione delle
istruzioni. Non ci sono tempi morti durante l’esecuzione;
-
• l’utilizzo del compilatore rende un po’ lenta la gestione della correzione e verifica
dei programmi in fase di test (perché il tempo di compilazione può essere lungo);
[da completare ...]
15.2.2.1 Le librerie
[da completare ...]