La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Generalità Linguaggio e Macchina Astratta M.A.: struttura e stati dellesecutore Costruire M.A.: Interprete, Compilatore Interprete: dentro Compilatore:

Presentazioni simili


Presentazione sul tema: "Generalità Linguaggio e Macchina Astratta M.A.: struttura e stati dellesecutore Costruire M.A.: Interprete, Compilatore Interprete: dentro Compilatore:"— Transcript della presentazione:

1 Generalità Linguaggio e Macchina Astratta M.A.: struttura e stati dellesecutore Costruire M.A.: Interprete, Compilatore Interprete: dentro Compilatore: il supporto RTS Compilatore: Macchine di sviluppo e Gerarchia Macchine Intermedie: costruzioni miste

2 Linguaggi, Macchine Astratte, Interpreti & Compilatori

3 linguaggio linguaggio di (programmazione) = = formalismo per esprimere (applicazioni di funzioni calcolabili) formalismo sintassi formalismo =sintassi (forma delle costruzioni permesse) + semantica semantica (significato loro associato) Definizioni: linguaggio e formalismo

4 1) per ogni P S, SEM(P) {N N} 2) per ogni f {N N}, esiste P S, tale che: per ogni n N, f(n) = SEM(P)(n) Esempio: Linguaggio di Programmazione L = e un linguaggio di progr. [dove: {N N} = funzioni calcolabili]

5 Macchina astratta Macchina astratta = Linguaggio (L= ) + Esecutore (E L ) Java Virtual Machine Landins SECD E L Control frame Data-Control Stack Heap PE L (P) Definizioni: Macchina Astratta Per ogni P S, SEM(P) E L (P)

6 P,n SEM(P)(n) I O P,n P,n [dove I,O funzioni iniettive su A e A* risp.] L M L M = è un linguaggio di programmazione E M E M è un esecutore di applicazioni di programmi M MM M = M E M : A A* per ogni P S, n N Macchina Astratta Astratta linguaggio SEM EMEMEMEM Esempio: Macchina Astratta, Linguaggio ed Esecutore

7 Macchina astratta - Esecutore Programma Dati Memoria Interprete Ciclo di interpretazione Op1 … Opk Fetch istruzione Controllo sequenza Fetch operandi Controllo dati Gestione memoria Modello statico-dinamico controllo Macchina Astratta: Struttura e Stati dellEsecutore

8 Macchina Astratta: Memoria, Controllo Memoria: Memoria: strutturata secondo un modello che dipende dal linguaggio della macchina array di parole, registri, stack heap - L. con allocazione dinamica (Pascal, C, C++, …,Java, grafo - L. con condivisione di strutture (funzionali) Controllo: Controllo: gestisce lo stato della macchina trova il successivo statement o espressione trova i dati su cui tale stat. o espr. opera gestisce la memoria

9 start fetch statement decodifica fetch operandi seleziona Op1Opnhalt stop Macchina Astratta: Interprete - cliclo di interpretazione

10 Utiliziamo macchine astratte gia definite Sia L 0 =(S 0,SEM 0 ) il nostro linguaggio Sia M 1 = (L 1 =,E L 1 ) una macchinainteprete definiamo lesecutore E L 0 come programma di L 1.compilatore trasformiamo ogni struttura (programma) di L 0 in una equivalente struttura (programma) di L 1. Costruire Macchine Astratte

11 Eseguire unaAPPLICAZIONE (P,n) di L 0, consiste: nell'eseguire l'applicazione L 0,(P,n) di L 1 L 1 P,n SEM(P)(n) L O,(P,n) L 1 ( L O,(P,n)) L O S 0 S 1 Interprete

12 Interprete: dentro E L0 Una collezione di procedure che realizzano: interpretazione i passi (decodifica) del ciclo di interpretazione per L0 memoria il modello di memoria di dati e programmi di L0 controllo lunità di controllo per fetch di codice e di dati di L0 primitive un implementazione delle primitive di L0

13 L 1 C L0 (P) L O S 0 S 1 E L1 (C L0,P) C L0 C L0,P P Il compilatore non opera su applicazioni bensì su strutture (programmi: P) C L O preserva la semantica: SEM O (P) = SEM 1 (C L O (P)) C Compilatore

14 Compilatore: Il Run Time Support Una collezione di procedure che realizzano: memoria il modello di memoria di dati e programmi di L0 trasferimento controllo strutture per trasferimento controllo primitive unimplementazione delle primitive di L0 Non dipende dallo specifico programma compilato Utilizzabile dalloggetto di ogni sorgente

15 EL 1 CL 0 EL 0 EL 1 (CL 0 (P),n) CL 0 (P),n CL 0 (P) S 1 EL 0 (P,n) P S 0 Compilatore: La Macchina Sottostante RTS

16 metalinguaggio EL 2 EL 0 Linguaggio target (object language) EL 1 CL 0 P S 0 CL 0 (P) S 1 oggetto per L 1sorgente di L 0 Macchina Host CL 0 (P),n EL 1 (CL 0 (P),n) Macchina Target C Compilatore: La Macchina di Sviluppo RTS

17 Linguaggio meno espressivo ha: - molti costrutti ma elementari - un esecutore piú semplice Quando la macchina target è concreta nessuna differenza concettuale tra astratta e concreta abbiamo però un esecutore effettivo per ogni macchina della gerarchia Gerarchia di Macchine riduce ad ogni livello lespressivitá semplifica la costruzione della macchina di un linguaggio molto espressivo Gerarchia di Macchine nello sviluppo

18 Linguaggi di Rete Macchina Rete Gerarchia di Macchine nella struttura Linguaggi di Browser Macchina WEB Java Bytecode Macchina Intermedia Java Bytecode Macchina Intermedia Linguaggio di Sistema Sistema Operativo Linguaggio di Sistema Sistema Operativo Linguaggio Microporgrammazione Firmware Linguaggio Microporgrammazione Firmware Linguaggio Macchina Hardware Linguaggio Macchina Hardware Java Macchina Java Scala Macchina Scala

19 In corrispondenza alle molte classi di linguaggi Imperativi Applicativi Object oriented Differiscono per il linguaggio e di conseguenza per: struttura dello stato, ovvero: - modello di memoria - metodi di fetch e di decodifica - operazioni primitive Classi di Macchine Concrete

20 Macchina Intermedia: Costruzioni Miste L 1 :Linguaggio target Macchina di L 1 interprete compilatore L 0 :Linguaggio sorgente Macchina di L 0 L I :Ling. Intermedio Macchina di L I Vantaggi: sviluppo ridotto portabilità aumentata dimensione c. oggetto: occ. memoria tempo esecuzione

21 Compilatore, Interprete: contesto, struttura componenti contesto operativo: preprocessing e loading Compilatore: Struttura, fasi e passi Interprete: Struttura standard Visitiamo le fasi: un esempio Compiler-Compiler: semplifichiamo la stesura Bootstrapping

22 Compilatore, Interprete: contesto, struttura componenti contesto operativo: preprocessing e loading Compilatore: Struttura, fasi e passi Interprete: Struttura standard Visitiamo le fasi: un esempio Compiler-Compiler: semplifichiamo la stesura Bootstrapping

23 Preprocessor Compiler Assembler Link-Loader Source program Object program Codice rilocabile Assoluto eseguibile Link e macros Librerie rts Struttura dei moduli Contesto del Compilatore: Font-end Back-end

24 Analisi Lessicale Analisi Sintattica Analisi Statica Codice Intermedio Ottimizzazione Codice target Tabella Simboli Errori Fasi e Passi: 6 fasi k(1) passi Compilatore: struttura, fasi e passi

25 Analisi Lessicale Analisi Sintattica Analisi Statica Emulatore su Codice target Tabella Simboli Errori Fasi e Passi: 4 fasi k(1) passi Interprete: La struttura standard

26 Analisi Lessicale Analisi Sintattica Analisi Statica Codice Intermedio Ottimizzazione Codice target Tabella Simboli Errori Fasi e Passi: 8 fasi k(1) passi Codice Intermedio Correttezza Terminazione - proprieta varie Compilatore: Una struttura per analisi di correttezza avanzate

27 Lo sviluppo di un compilatore (interprete), da un linguaggio L 0 a L t, coinvolge altri linguaggi L m. Distinguere tra: C 0 t m e C 0 t n I metalinguaggi sono utilizzati per esprimere le procedure di analisi e traduzione, e condizionano il compilatore che può essere eseguito solo sul meta scelto Combiniamo interprete e compilatore Compiler-Compiler: ridurre i metalinguaggi e semplificare la stesura di un compilatore

28 E 0 m costruiamo un interprete E 0 m (che valuta programmi di L 0 su una macchina M m ): strumento di sviluppo C 0 t 0 costruiamo compilatore C 0 t 0 : Il compilatore è scritto nel linguaggio L 0 stesso. E 0 m (C 0 t 0 )(C 0 t 0 )C 0 t t eseguiamo: E 0 m (C 0 t 0 )(C 0 t 0 ) otteniamo C 0 t t Il prodotto è ora indipendente dal meta Bootstrapping (m t) Bootstrapping

29 In questo corso Semantica formale e RTS Linguaggi studiati da 2 punti di vista: Semantica formale RTS: supporto a run time Semantica Formale sempre in forma eseguibile, (i.e. un interprete formalmente derivato) implementata ad altissimo livello (i.e. con il massimo di astrazioni possibili) definizione rigorosa (precisa, non ambigua) indipendente dallimplementazione: Progettista: la definisce Implementatore: la usa come specifica del linguaggio da implementare Programmatore: la usa come documentazione indipendente dallimplementazione scrivere programmi corretti e provare proprietà del programma, semplificazioni e modifiche RTS RTS focalizza le caratteristiche essenziali del linguaggio e della sua M.A. Progettista: sono le strutture semantiche con cui dare significato ai programmi del linguaggio Implementatore: le strutture base da realizzare Programmatore: le strutture da conoscere per usare bene il linguaggio


Scaricare ppt "Generalità Linguaggio e Macchina Astratta M.A.: struttura e stati dellesecutore Costruire M.A.: Interprete, Compilatore Interprete: dentro Compilatore:"

Presentazioni simili


Annunci Google