G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione VII Il compilatore e le sue opzioni Programmazione di Calcolatori: il compilatore e le sue opzioni 1
G. Amodeo, C. Gaibisso I passi della compilazione 1.Preprocessing 1.1rimozione dei commenti 1.2interpretazione delle direttive per il preprocessore 2.Compilazione 2.1Generazione del codice assembler 2.2Generazione dei moduli oggetto 3.Linking Programmazione di Calcolatori: il compilatore e le sue opzioni2
G. Amodeo, C. Gaibisso Il preprocessing Programmazione di Calcolatori: il compilatore e le sue opzioni3 rimozione dei commenti interpretazione delle direttive per il preprocessore
G. Amodeo, C. Gaibisso Compilazione Programmazione di Calcolatori: il compilatore e le sue opzioni4 Generazione del codice assembler: traduzione del codice sorgente ricevuto dal preprocessore in linguaggio assembler
G. Amodeo, C. Gaibisso Compilazione Programmazione di Calcolatori: il compilatore e le sue opzioni5 MOV AL, #61h Esempio: memorizza il valore esadecimale 61 nel registro di nome AL Linguaggio assembler: linguaggio di basso livello che fornisce un minimo livello di astrazione (utilizzo di codici mnemonici in luogo di codici numerici) rispetto alle istruzioni eseguibili dal microprocessore
G. Amodeo, C. Gaibisso Compilazione Programmazione di Calcolatori: il compilatore e le sue opzioni6 Esempio: #61hMOV AL Generazione dei moduli oggetto : traduzione del codice assembler in una sequenza di istruzioni macchina non ancora eseguibili a causa, anche, di riferimenti esterni MOV AL, #61h
G. Amodeo, C. Gaibisso Compilazione Programmazione di Calcolatori: il compilatore e le sue opzioni7 Riferimenti esterni: minnieMOV AL MOV AL, minnie ???????? riferimento esterno al modulo
G. Amodeo, C. Gaibisso CPU: larchitettura Architettura Hw dei sistemi8 Program Counter (16 bit) +1 Buffer Indirizzi (16 bit) Buffer Dati (8 bit) W (8 bit) Z (8 bit) Circuiti di Controllo Registro Istruzione (8 bit) CU Registro Aritmetico ARegistro Aritmetico B ALU Sommatore Memoria Contiene lindirizzo in memoria dellistruzione in esecuzione Registro contenente lindirizzo della locazione interessata dalla prossima operazione di lettura/scrittura Memorizza: 1.Il risultato di una elaborazione da parte della ALU 2.Il risultato di unoperazione di lettura 3.Un dato da memorizzare Contiene il codice operativo dellistruzione in esecuzione Memorizzano dati o indirizzi durante le operazioni interne
G. Amodeo, C. Gaibisso Linking Programmazione di Calcolatori: il compilatore e le sue opzioni9 Linker: programma che combina uno o più moduli oggetto generati durante la fase di compilazione in un unico file eseguibile Problema: esistenza allinterno dei moduli oggetto di riferimenti ad altri moduli (chiamate di funzioni, salti, variabili, …)
G. Amodeo, C. Gaibisso Riconoscere i file Programmazione di Calcolatori: il compilatore e le sue opzioni10 EstensioneDescrizione.cfile sorgente.h file generalmente copiato dal preprocessore allinterno di un file sorgente.o modulo oggetto
G. Amodeo, C. Gaibisso Opzioni del compilatore Programmazione di Calcolatori: il compilatore e le sue opzioni11 Determinare la versione del compilatore : gcc -v
G. Amodeo, C. Gaibisso Opzioni del compilatore Programmazione di Calcolatori: il compilatore e le sue opzioni12 Assegnare un nome al file eseguibile: gcc nome_sorgente –o nome_eseguibile
G. Amodeo, C. Gaibisso Opzioni del compilatore Programmazione di Calcolatori: il compilatore e le sue opzioni13 Generazione modulo oggetto: gcc –c nome_sorgente
G. Amodeo, C. Gaibisso Opzioni del compilatore Programmazione di Calcolatori: il compilatore e le sue opzioni14 Chiamare il preprocessore gcc –E nome_sorgente –o nome_destinazione
G. Amodeo, C. Gaibisso Contenuto di stdio.h Opzioni del compilatore Programmazione di Calcolatori: il compilatore e le sue opzioni15
G. Amodeo, C. Gaibisso Messaggi del compilatore Programmazione di Calcolatori: il compilatore e le sue opzioni16 1.Messaggi di errore: indicativi di errori che impediscono la generazione delleseguibile interrompono la compilazione 2.Warning: indicativi di condizioni che potrebbero, tra laltro, inficiare la portabilità del codice non interrompono la compilazione
G. Amodeo, C. Gaibisso Messaggi di errore Programmazione di Calcolatori: il compilatore e le sue opzioni17
G. Amodeo, C. Gaibisso Warning Programmazione di Calcolatori: il compilatore e le sue opzioni18 Utilizzare il massimo livello di warning: gcc –Wall nome_sorgente
G. Amodeo, C. Gaibisso Warning Programmazione di Calcolatori: il compilatore e le sue opzioni19 Utilizzare il massimo livello di warning: gcc –Wall nome_sorgente
G. Amodeo, C. Gaibisso Warning Programmazione di Calcolatori: il compilatore e le sue opzioni20
G. Amodeo, C. Gaibisso Warning Programmazione di Calcolatori: il compilatore e le sue opzioni21