Macchine Astratte - LACAM - Università degli Studi di Bari

Download Report

Transcript Macchine Astratte - LACAM - Università degli Studi di Bari

Macchine
Astratte
Nicola Fanizzi
Corso di Linguaggi di Programmazione
Dipartimento di Informatica
Università degli Studi di Bari
4 marzo 2014
Sommario
1
Introduzione
Macchina astratta
Interprete
Implementazione del linguaggio
2
Implementazione di macchine astratte
Realizzazione
Realizzazione HW
Realizzazione SW
Realizzazione FW
Implementazione Interpretativa pura
Implementazione Compilativa Pura
Implementazione Ibrida – macchina intermedia
3
Gerarchia
N. Fanizzi
Linguaggi di prog.+Lab
Macchine Astratte
4 marzo 2014
2 / 24
Introduzione
Macchine e Linguaggi
Macchina fisica (calcolatore):
dispositivo elettronico capace di eseguire istruzioni
ossia algoritmi opportunamente formalizzati in un
linguaggio comprensibile per questo esecutore:
Linguaggio di macchina L
linguaggio compreso dalla macchina
Macchina astratta per L, indicata con ML :
insieme di algoritmi e strutture dati che permettono di
memorizzare ed eseguire programmi scritti in L
Programma: insieme di istruzioni scritte in L
N. Fanizzi
Linguaggi di prog.+Lab
Macchine Astratte
4 marzo 2014
3 / 24
Introduzione
Struttura di una macchina astratta
interprete
dati
controllo sequenza
operazioni
memoria
controllo dati
programma
gestione memoria
N. Fanizzi
Linguaggi di prog.+Lab
Macchine Astratte
4 marzo 2014
4 / 24
Introduzione
Interprete
Interprete
Componente della macchina che esegue le operazioni contenute
nei programmi:
1
Elaborazione dati primitivi
es. operazioni aritmetiche su numeri interi
2
Controllo della sequenza d’esecuzione
es. gestione salti (sotto condizioni)
es. PC registro con la prossima istruzione
3
Controllo trasferimento dati
es. indirizzamento ed ordine trasferimento dati
es. stack e operatori dedicati
4
Gestione della memoria
allocazione della memoria per dati/programmi
tramite opportune str. dati (es. pile)
op. per la gestione dinamica
N. Fanizzi
Linguaggi di prog.+Lab
Macchine Astratte
4 marzo 2014
5 / 24
Introduzione
Interprete
Interprete
Ciclo d’esecuzione
inizio
acquisizione
pross. istruzione
1
Acquisizione da memoria
prossima istruzione
decodifica
2
Decodifica:
operazione e operandi
3
Acquisizione operandi
4
Esecuzione operazione
5
Memorizzazione risultato
6
Se non era l’istr. HALT:
passa all’istruzione
successiva (vai a 1.)
acquisizione
operandi
selezione
op1
op2
...
opn
memorizzazione
risultato
N. Fanizzi
Linguaggi di prog.+Lab
Halt
fine
Macchine Astratte
4 marzo 2014
6 / 24
Introduzione
Interprete
Esempio – interprete hardware
PC
UC
R1
R2
IR
MAR
...
Rn
ALU
MDR
memoria principale
N. Fanizzi
Linguaggi di prog.+Lab
Macchine Astratte
4 marzo 2014
7 / 24
Introduzione
Implementazione del linguaggio
Implementazione del linguaggio
Una macchina astratta M corrisponde ad un preciso
linguaggio L (il suo linguaggio macchina)
Dato un linguaggio L,
ci sono diverse (infinite) macchine che possono adottarlo,
variando:
implementazione dell’interprete
strutture dati utilizzate
Implementare un linguaggio L =
realizzare una macchina astratta che abbia L come
linguaggio macchina
N. Fanizzi
Linguaggi di prog.+Lab
Macchine Astratte
4 marzo 2014
8 / 24
Implementazione di macchine astratte
Realizzazione
Realizzazione I
Realizzazione in hardware
Realizzazione tramite dispositivi fisici:
memorie„ unità aritmetico-logiche, bus, reti, . . .
Vantaggio esecuzione molto veloce
linguaggi a basso livello
linguaggi dedicati
Svantaggi non adatta a linguaggi di alto livello
complessità d ella progettazione
non modificabilità della realizzazione
influenzata dalla struttura dei linguaggi ad alto livello
N. Fanizzi
Linguaggi di prog.+Lab
Macchine Astratte
4 marzo 2014
9 / 24
Implementazione di macchine astratte
Realizzazione
Realizzazione II
Simulazione mediante software
Realizzazione mediante programmi in un (altro) linguaggio
(già implementato)
Data ML0 per L0 , si realizza ML per L,
simulando con un programma in L0 ,
i costrutti di L ossia le funzionalità di ML
Vantaggio massima flessibilità
Svantaggio prestazioni inferiori
l’esecuzione passa per l’interpretazione su ML0 ,
a prescindere dalla realizzazione di quest’ultima (HW,SW,FW)
N. Fanizzi
Linguaggi di prog.+Lab
Macchine Astratte
4 marzo 2014
10 / 24
Implementazione di macchine astratte
Realizzazione
Realizzazione III
Simulazione (emulazione) mediante firmware
Realizzazione intermedia ottenuta attraverso
microprogrammi che simulano algoritmi e str. dati di ML
Simile al caso SW ma con una macchina intermedia realizzata
come macchina fisica
con linguaggi di basso livello: micro-linguaggi
risiedono su (EP)ROM
Vantaggio elevata velocità
Svantaggi
minore flessibilità
maggiore complessità della programmazione
opportuni dispositivi di scrittura su ROM
N. Fanizzi
Linguaggi di prog.+Lab
Macchine Astratte
4 marzo 2014
11 / 24
Implementazione di macchine astratte
Realizzazione
Implementazione pura
Caso ideale: realizzazione di ML per L
si usa una macchina ospite MoLo per Lo
traduzione da L ad Lo
Implicita implementazione interpretativa pura
attraverso programmi in Lo per simulare ML
esecuzione della traduzione
istruzione per istruzione
Esplicita implementazione compilativa pura
traduzione dei programmi in L in programmi in Lo
N. Fanizzi
Linguaggi di prog.+Lab
Macchine Astratte
4 marzo 2014
12 / 24
Implementazione di macchine astratte
Realizzazione
Notazione
D dominio dei dati in input e output
programma in L:
PL : D → D
tale che
PL (Input) = Output
quando termina
altrimenti la funzione è indefinita
Prog L insieme dei programmi in L
N. Fanizzi
Linguaggi di prog.+Lab
Macchine Astratte
4 marzo 2014
13 / 24
Implementazione di macchine astratte
Implementazione Interpretativa pura
Interpretativa pura I
Interprete per ML realizzato tramite MoLo
programma scritto in Lo denotato con I(L, Lo )
sa tradurre ed eseguire tutte le istruzioni di L
per eseguire PL per certi dati in input D ∈ D,
si esegue I(L, Lo ) su MoLo con input PL e D
formalmente:
interprete I calcola la funz. parziale
I : (Prog L × D) → D
tale che
I(PL , Input) = PL (Input) = Output
NB MoLo può essere di qualunque natura
N. Fanizzi
Linguaggi di prog.+Lab
Macchine Astratte
4 marzo 2014
14 / 24
Implementazione di macchine astratte
Implementazione Interpretativa pura
Interpretativa pura II
programma
in L
input
interprete di L
scritto in Lo
output
esecuzione
macchina
ospite Mo
N. Fanizzi
Linguaggi di prog.+Lab
Macchine Astratte
4 marzo 2014
15 / 24
Implementazione di macchine astratte
Implementazione Compilativa Pura
Compilativa Pura I
Il programma in L viene tradotto esplicitamente in Lo
eseguendo il programma compilatore, denotato con CL,Lo
L linguaggio sorgente; Lo linguaggio oggetto
per eseguire PL con input D ∈ D
si esegue CL,Lo con input PL producendo PcLo in Lo
quindi si esegue PcLo su MoLo con input D
Formalmente:
CL,Lo calcola la funzione:
CL,Lo : Prog L → Prog Lo
tale che
PcLo = CL,Lo (PL ) e
∀Input ∈ D : PL (Input) = PcLo (Input)
N. Fanizzi
Linguaggi di prog.+Lab
Macchine Astratte
4 marzo 2014
16 / 24
Implementazione di macchine astratte
Implementazione Compilativa Pura
Compilativa Pura II
programma
in L
programma
in L
input
compilatore
da L a Lo
Linguaggi di prog.+Lab
output
esecuzione
esecuzione
macchina
ospite Ma
N. Fanizzi
programma
compilato
in Lo
Macchine Astratte
macchina
ospite Mo
4 marzo 2014
17 / 24
Implementazione di macchine astratte
Implementazione Compilativa Pura
Struttura di una macchina astratta
Implementazione
interpretativa
Implementazione
compilativa
Svantaggi
Vantaggi:
scarsa efficienza:
overhead per la
decodifica
replica della traduzione
Vantaggi:
maggiore flessibilità
facilità di sviluppo e
debugging
memoria ridotta (solo
sorgente)
N. Fanizzi
Linguaggi di prog.+Lab
Macchine Astratte
esecuzione più efficiente
una sola traduzione
Svantaggi:
minore flessibilità
perdita di informazioni
sul sorgente
minore facilità di
debugging degli errori a
run-time
4 marzo 2014
18 / 24
Implementazione di macchine astratte
Implementazione Ibrida – macchina intermedia
Ibrida – macchina intermedia
programma
in L
programma
in L
input
compilatore
da L a Li
programma
compilato
in Li
Linguaggi di prog.+Lab
output
esecuzione
esecuzione
macchina
ospite Mo
N. Fanizzi
interprete
Li
macchina
intermedia Mi
Macchine Astratte
4 marzo 2014
19 / 24
Implementazione di macchine astratte
Implementazione Ibrida – macchina intermedia
Livelli di implementazione
ML = MiLi implementazione puramente interpretativa
ML 6= MiLi 6= MoLo
se l’interprete della MiLi è molto diverso da quello della
MoLo allora l’implementazione è di tipo interpretativo
non tutti i costrutti di L vanno simulati:
per alcuni (pochi) il corrispettivo è diretto in Lo
se l’interprete della MiLi è molto simile a quello della MoLo
allora l’implementazione è di tipo compilativo
molti costrutti hanno un corrispettivo
pochi (es. I/O) vanno simulati in Lo
MiLi = MoLo implementazione puramente compilativa
N. Fanizzi
Linguaggi di prog.+Lab
Macchine Astratte
4 marzo 2014
20 / 24
Implementazione di macchine astratte
Implementazione Ibrida – macchina intermedia
Supporto a Run-Time
Insieme dei programmi che estendono le funzionalità di MoLo e
che simulano le funzionalità di Li (e quindi di L)
Per alcuni linguaggi la macchina intermedia non è esplicita
Per altri la macchina intermedia è definita formalmente per
questioni di portabilità
L’implementazione compilativa per un dato HW è più
complessa di quella interpretativa
Applicata per la prima volta per il PASCAL (P–code)
Analogamente in JAVA il byte–code è interpretato dalla JVM
N. Fanizzi
Linguaggi di prog.+Lab
Macchine Astratte
4 marzo 2014
21 / 24
Gerarchia
Gerarchia I
Per ogni livello i, una macchina MiLi
è implementata su / utilizza funzionalità di Mi−1
Li
offre le sue a quelle di livello superiore Mi+1
Li
permette di dominare la complessità
consente l’indipendenza dei vari livelli
N. Fanizzi
Linguaggi di prog.+Lab
Macchine Astratte
4 marzo 2014
22 / 24
Gerarchia
Gerarchia II
Macchina E-business
Macchina Web service
Macchina Web
Macchina Linguaggio
Macchina Intermedia
Macchina Sistema Operativo
Macchina Firmware
Macchina Hardware
N. Fanizzi
Linguaggi di prog.+Lab
Macchine Astratte
4 marzo 2014
23 / 24
Riferimenti
Gabbrielli & Martini: Linguaggi di Programmazione,
McGraw-Hill 2a edizione
N. Fanizzi
Linguaggi di prog.+Lab
Macchine Astratte
4 marzo 2014
24 / 24