G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione VII Il compilatore e le sue opzioni...

Post on 02-May-2015

217 views 3 download

Transcript of G. Amodeo, C. Gaibisso Programmazione di Calcolatori Lezione VII Il compilatore e le sue opzioni...

G. Amodeo,C. Gaibisso Programmazione di Programmazione di

CalcolatoriCalcolatori

Lezione VIIIl compilatore e le sue

opzioni

Programmazione di Calcolatori: il compilatore e le sue opzioni 1

G. Amodeo,C. Gaibisso

I passi della compilazioneI passi della compilazione

1. Preprocessing1.1 rimozione dei commenti1.2 interpretazione delle

direttive per il preprocessore

2. Compilazione2.1 Generazione del codice

assembler2.2 Generazione dei moduli

oggetto

3. Linking

Programmazione di Calcolatori: il compilatore e le sue opzioni 2

G. Amodeo,C. Gaibisso

Il preprocessingIl preprocessing

Programmazione di Calcolatori: il compilatore e le sue opzioni 3

rimozione dei commenti

interpretazione delle direttive per il preprocessore

G. Amodeo,C. Gaibisso

CompilazioneCompilazione

Programmazione di Calcolatori: il compilatore e le sue opzioni 4

• Generazione del codice assembler:

traduzione del codice sorgente ricevuto dal preprocessore in linguaggio assembler

G. Amodeo,C. Gaibisso

CompilazioneCompilazione

Programmazione di Calcolatori: il compilatore e le sue opzioni 5

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

CompilazioneCompilazione

Programmazione di Calcolatori: il compilatore e le sue opzioni 6

• 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

10110000 01100001

G. Amodeo,C. Gaibisso

CompilazioneCompilazione

Programmazione di Calcolatori: il compilatore e le sue opzioni 7

• Riferimenti esterni:

minnieMOV ALMOV AL, minnie

10110000 ????????

riferimento esternoal modulo

G. Amodeo,C. Gaibisso

CPU: l’architetturaCPU: l’architettura

Architettura Hw dei sistemi 8

Program Counter (16 bit)

+1

Bu

ffer

In

dir

izzi

(16 b

it)

Bu

ffer

Dati

(8 b

it)

W(8

bit

)Z

(8 b

it)

Circuitidi

Controllo

Registro Istruzione (8 bit)

CU

Registro Aritmetico A Registro Aritmetico B

ALU

Sommatore

Memoria

Contiene l’indirizzo in memoria dell’istruzione in esecuzione

Registro contenente l’indirizzo della locazione interessata dalla prossima operazione di lettura/scrittura

Memorizza:1. Il risultato di

una elaborazione da parte della ALU

2. Il risultato di un’operazione di lettura

3. Un dato da memorizzare

Contiene il codice operativo dell’istruzione in esecuzione

Memorizzano dati o indirizzi durante le operazioni interne

G. Amodeo,C. Gaibisso

LinkingLinking

Programmazione di Calcolatori: il compilatore e le sue opzioni 9

• Linker:programma che combina uno o più moduli oggetto generati durante la fase di compilazione in un unico file eseguibile

• Problema:esistenza all’interno dei moduli oggetto di riferimenti ad altri moduli (chiamate di funzioni, salti, variabili, …)

G. Amodeo,C. Gaibisso

Riconoscere i fileRiconoscere i file

Programmazione di Calcolatori: il compilatore e le sue opzioni 10

Estensione Descrizione

.c file sorgente

.h file generalmente “copiato” dal preprocessore all’interno di un file sorgente

.o modulo oggetto

G. Amodeo,C. Gaibisso

Opzioni del compilatoreOpzioni del compilatore

Programmazione di Calcolatori: il compilatore e le sue opzioni 11

• Determinare la versione del compilatore :

gcc -v

G. Amodeo,C. Gaibisso

Opzioni del compilatoreOpzioni del compilatore

Programmazione di Calcolatori: il compilatore e le sue opzioni 12

• Assegnare un nome al file eseguibile:

gcc nome_sorgente –o nome_eseguibile

G. Amodeo,C. Gaibisso

Opzioni del compilatoreOpzioni del compilatore

Programmazione di Calcolatori: il compilatore e le sue opzioni 13

• Generazione modulo oggetto:gcc –c nome_sorgente

G. Amodeo,C. Gaibisso

Opzioni del compilatoreOpzioni del compilatore

Programmazione di Calcolatori: il compilatore e le sue opzioni 14

• Chiamare il preprocessoregcc –E nome_sorgente –o nome_destinazione

G. Amodeo,C. Gaibisso

Contenuto di stdio.h

Opzioni del compilatoreOpzioni del compilatore

Programmazione di Calcolatori: il compilatore e le sue opzioni 15

G. Amodeo,C. Gaibisso

Messaggi del compilatoreMessaggi del compilatore

Programmazione di Calcolatori: il compilatore e le sue opzioni 16

1. Messaggi di errore: indicativi di errori che

impediscono la generazione dell’eseguibile 

interrompono la compilazione

2. Warning: indicativi di condizioni che

potrebbero, tra l’altro, inficiare la portabilità del codice 

non interrompono la compilazione

G. Amodeo,C. Gaibisso

Messaggi di erroreMessaggi di errore

Programmazione di Calcolatori: il compilatore e le sue opzioni 17

G. Amodeo,C. Gaibisso

WarningWarning

Programmazione di Calcolatori: il compilatore e le sue opzioni 18

• Utilizzare il massimo livello di warning:

gcc –Wall nome_sorgente

G. Amodeo,C. Gaibisso

WarningWarning

Programmazione di Calcolatori: il compilatore e le sue opzioni 19

• Utilizzare il massimo livello di warning:

gcc –Wall nome_sorgente

G. Amodeo,C. Gaibisso

WarningWarning

Programmazione di Calcolatori: il compilatore e le sue opzioni 20

G. Amodeo,C. Gaibisso

WarningWarning

Programmazione di Calcolatori: il compilatore e le sue opzioni 21