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

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

Embed Size (px)

Citation preview

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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, …)

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

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

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

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

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

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

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

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

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

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

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

G. Amodeo,C. Gaibisso

Contenuto di stdio.h

Opzioni del compilatoreOpzioni del compilatore

Programmazione di Calcolatori: il compilatore e le sue opzioni 15

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

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

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

G. Amodeo,C. Gaibisso

Messaggi di erroreMessaggi di errore

Programmazione di Calcolatori: il compilatore e le sue opzioni 17

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

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

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

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

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

G. Amodeo,C. Gaibisso

WarningWarning

Programmazione di Calcolatori: il compilatore e le sue opzioni 20

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

G. Amodeo,C. Gaibisso

WarningWarning

Programmazione di Calcolatori: il compilatore e le sue opzioni 21