Macchina Astratta: struttura e realizzazione.

Documenti analoghi
Macchine Astratte. Nicola Fanizzi Dipartimento di Informatica Università degli Studi di Bari. Linguaggi di Programmazione feb, 2016

Traduzione ed Interpretazione

Macchine astratte, linguaggi, interpretazione, compilazione

Corso di Linguaggi di Programmazione + Laboratorio

Macchine Astratte. Luca Abeni. February 22, 2017

Lez. 5 La Programmazione. Prof. Salvatore CUOMO

La Programmazione. Programmare Macchine Astratte Compilazione / Interpretazione Java. Laboratorio di Programmazione - Luca Tesei

Macchina di von Neumann/Turing

Linguaggi di programmazione e astrazione

Metodologie di Programmazione. ovvero, Principi e Tecniche per la costruzione di programmi

Cosa è un programma. Informatica di Base -- R.Gaeta 18

Il Software programmabili programma algoritmo

AXO - Architettura dei Calcolatori e Sistema Operativo. organizzazione strutturata dei calcolatori

Cosa è l Informatica?

Linguaggi di alto livello, compilatori e interpreti

I Linguaggi di Programmazione

la traduzione dei programmi ed introduzione a Java

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

In passato, occuparsi di informatica era sinonimo di programmare computer

Introduzione alla programmazione. Walter Didimo

Cos è la programmazione?

Corso di Architettura degli Elaboratori

Laboratorio di Calcolo Linguaggi di programmazione

Linguaggi, compilatori e interpreti

Introduzione alla Programmazione. Giselda De Vita

Che cos e l Informatica. Informatica generale. Caratteristiche fondamentali degli algoritmi. Esempi di algoritmi. Introduzione

Elementi di programmazione

Linguaggi di programmazione

Linguaggi di Programmazione

Programmazione. Andrea Passerini Informatica. Programmazione

LINGUAGGI DI ALTO LIVELLO

LINGUAGGI DI ALTO LIVELLO. Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware

10: I LINGUAGGI di PROGRAMMAZIONE PARTE 1

3. Programmi e algoritmi

Corso di Laurea Magistrale in Ingegneria Informatica A.A Linguaggi Formali e Compilatori. Introduzione. Giacomo PISCITELLI

Il linguaggio di programmazione Python

Algoritmo. La programmazione. Algoritmo. Programmare. Procedimento di risoluzione di un problema

Algoritmi e Linguaggi

MIPS & SPIM. Modulo del Corso di Architettura degli Elaboratori. Nicola Paoletti. Università di Camerino Scuola di Scienze e Tecnologie

Davide Cervi Classe : 3E I.T.E Agostino Bassi - Lodi

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Architettura degli Elaboratori

Esempio. Le istruzioni corrispondono a quelle di sopra, ma sono scritte in modo simbolico. E indipendente dalla machina

Corso di Fondamenti di Informatica Linguaggi di Programmazione

Algoritmi e Programmi

Struttura del calcolatore

Introduzione a Java. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi132 Sesto San Giovanni

Corso di Laurea Ingegneria Informatica Laboratorio di Informatica

Programmazione: Sommario

La suddivisione lezione/esercitazione è orientativa Martedì Lezione Aula A4 Martedi Esercitazione Aula A2 Mercoledì Laboratorio

Architettura dei calcolatori

Introduzione alla programmazione

Astrazione e Macchine Virtuali. parte 1: in generale

Sistemi Operativi: Concetti Introduttivi

INFORMATICA. L informatica comprende:

Corso di Fondamenti di Informatica Linguaggi di Programmazione

Informatica Generale 07 - Sistemi Operativi:Gestione dei processi

Informatica 3. LEZIONE 1: Introduzione. Modulo 1: Introduzione al corso Modulo 2: Introduzione ai linguaggi di programmazione

Assembler. In verde sono evidenziati i comandi del debug. Attiva la scrittura di istruzioni assembler nella locazione 0100.

Programmazione C Massimo Callisto De Donato

Informatica 3. Informatica 3. Lezione 1- Modulo 1. LEZIONE 1: Introduzione. Concetti di linguaggi di programmazione. Introduzione

Come funzionano i computer

COMPILAZIONE. Tarsformazione di linguaggi

Prof. Rossella Cancelliere

Il Ciclo Fetch-Decode-Execute. C Nyssen/Aberdeen College 2003

Metodi Avanzati di Programmazione (II Anno) a.a. 2011/2012 Docente: Annalisa Appice Dipartimento di Informatica Università degli Studi Bari Aldo Moro

Teoria dell Informazione

STORIA E CARATTERISTICHE

Linguaggi di programmazione

Calcolatori Elettronici Parte VIII: linguaggi assemblativi

C++ Barriera di astrazione. Barriera di astrazione. Basic. Basic. Lisp. Lisp. Pascal. Prolog. Pascal. Prolog. Cobol. Fortran IMPERATIVI FUNZIONALI

DAGLI ALGORITMI AI LINGUAGGI. Linguaggi di Programmazione

Il calcolatore. Architettura di un calcolatore (Hardware)

interoperabilità fra dispositivi forniti da diversi produttori; superare i problemi legati alla limitazione del numero di risorse.

Linguaggi di Programmazione

Concetti di Base sulla Programmazione. Prof.Ing.S.Cavalieri

Elementi di Architettura

Concetti introduttivi

Fondamenti di Informatica T. Il Software

Cos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia

PROBLEMI ALGORITMI E PROGRAMMAZIONE

AMBIENTI DI PROGRAMMAZIONE

Cos è. In un linguaggio di programmazione si possono distinguere:

LA CODIFICA DELLE INFORMAZIONI

Introduzione al funzionamento di un calcolatore elettronico

Software. Algoritmo. Algoritmo INFORMATICA PER LE DISCIPLINE UMANISTICHE 2 (13042)

Architettura degli Elaboratori

Fondamenti di Algoritmi

Algoritmi, linguaggi e programmi. Emilio Di Giacomo e Walter Didimo

Introduzione al software. Maurizio Gabbrielli Università di Bologna

Fondamenti di Informatica. Definizione di Algoritmo. Algoritmo Euclideo. Prof.V.L.Plantamura Informatica e Comunicazione Digitale a.a.

INFORMATICA. Scienza dei calcolatori elettronici (computer science) Scienza dell informazione (information science)

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura

Elementi di informatica

Primi passi col linguaggio C

Strutture dati nel supporto a run time

Fondamenti di programmazione!! Parte 2!

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe.

Sistemi di Elaborazione delle Informazioni 6 CFU. Il software di sistema

Transcript:

Macchina Astratta: struttura e realizzazione. Sommario Macchina Astratta e l interprete di Macchina Hight e Low Level Languages Implementazione di un Linguaggio Macchina Intermedia Gerarchia di Macchine Trasformazioni di Programmi 1/17

Struttura di una Abstract Machine /1 Una AM è l esecutore di un Linguaggio Eseguibile (inclusi i L. di Programmazione) AM di un Linguaggio di Programmazione ha la struttura in figura ed è un astrazione per un computer Tre Componenti principali: Memoria, Interprete della macchina, Operazioni, in comunicazione Discussione: Cosa non ci aspetteremmo di trovare se fosse una calcolatrice invece di un computer? Discussione: Analisi dei componenti 2/17

Struttura di una Abstract Machine /2 Definition (Macchina Astratta) Una macchina astratta per un linguaggio L, denotata con M L è un qualsiasi insieme di strutture dati e di algoritmi che permettono di memorizzare ed eseguire i programmi di L Definition (Linguaggio Macchina) Il linguaggio macchina è il linguaggio L di una macchina M L 3/17

Ciclo di Esecuzione generico di un Interprete di Macchina Discussione: Questa struttura potrebbe essere il nucleo di un chip di un pocessore Discussione: Commentiamola su istruzioni di 2AC (2 address code language machine): ADD R5 R0 Fetch coinvolge controllo di sequenza, controllo di memoria e memoria (sezione programma), Decode coinvolge controllo dati e secondo le modalit di indirizzamento degli operandi... Fetch operandi coinvolge... e consiste in... 4/17

Realizzazione di una Macchina Astratta /1 Quando vogliamo usare un LP L dobbiamo realizzare il suo esecutore, ovvero M L Implementare L significa realizzare M L Discussione: Che relazione intercorre tra realizzare M L e la funzione U L, introdotta in slide...? 3 realizzazione principali: Hardware: Costruiamo una macchina ad hoc: Una struttura a K-chip che realizza tutti i componenti (RAM, CASHE, CPU e interfaccia BUS) Software: Utilizziamo una macchina esistente M LO e scriviamo opportuni programmi in L O implementare U L. Firmware: Adattiamo ad hoc una macchina esistente molto simile (utilizzando microcodice caricato su ROM) 5/17

Realizzazione di una Macchina Astratta /2 Definition (Low-Level Programming Language) È un LP con basso livello espressivo dove la struttura dei programmi e dei costrutti utilizzati è condizionata dalla realizzazione della sua AM. La costruzione della AM di un Linguaggio Low-Level nasce contestualmente alla definizione del linguaggio La sua costruzione non presenta problemi La somiglianza della AM con la struttura in 3 componenti e con lo schema di Interprete di macchina, visti nelle slides, è quasi totale. Definition (Hight-Level Programming Language) È un LP con alto livello espressivo dove la struttura dei programmi e dei costrutti utilizzati è condizionata dalle metodologie di programmazione supportate piuttosto che dalla realizzazione della sua AM. 6/17

Realizzazione di una Macchina Astratta /3 Definition (Hight Level Programming Language) È un LP con alto livello espressivo dove la struttura dei programmi e dei costrutti utilizzati è condizionata dalle metodologie di programmazione supportate piuttosto che dalla realizzazione della sua AM. Per LP ad alto livello solo la soluzione Software è praticabile. Questa soluzione avviene in due forme principali. Sia M L la macchina da realizzare, sia M LO la macchina da utilizzare. Interpretativa Pura: Costruzione di un Interprete (di linguaggio) I L O L di L in L O. Compilativa Pura: Costruzione di un Compilatore che trasforma programmi L in programmi equivalenti scritti in L O. 7/17

Realizzazione di una Macchina Astratta /4 - Sia M L la macchina da realizzare, sia M LO la macchina da utilizzare. - Sia P L l insieme dei programmi di L, sia P LO quello di L O - Siano U L e U LO le funzioni universali per L e L O Definition (Interprete) Un interprete per L in L O, denotato I L O L, è un programma di L O, i.e. I L O L P L O : p P L, x D, U LO (I LO L )(<p, x>) = U L(p)(x) dove: <, >: (P L D) D è iniettiva D il dominio dei valori delle funzioni calcolabili F D D 8/17

Realizzazione di una Macchina Astratta /5 - Sia M L la macchina da realizzare, sia M LO la macchina da utilizzare. - Sia P L l insieme dei programmi di L, sia P LO quello di L O - Siano U L e U LO le funzioni universali per L e L O Definition (Compilatore) Un compilatore da L in L O, denotato C L,LO, è un programma di un qualche linguaggio L A, i.e. C L,LO P LA : p P L, sia U LA (C L,LO )(<p>) = q L O in U LO (q)(x) = U L (p)(x) ( x D) dove: < >: P L D è iniettiva D il dominio dei valori delle funzioni calcolabili F D D 9/17

Compilatore: Quando usare una Host Machine M LA l compilatori di un PC non usano Host Machine: C L,LO P LO Quando usare una Host Machine: La macchina M LO non ha risorse adeguate per C L,LO Bare Machines, macchine per Servizi, Palmari,... Si vuole proteggere il codice sorgente dell applicazione p P L : Rilasciamo solo il codice oggetto della traduzione di p. p è un app proprietaria e/o non deve essere modificabile Un motivo per usare compilazione (vs. interpretazione) Bare Machine: Sistema Operativo è istallato su una Bare Machine dotata del solo linguaggio macchina (non assembler) e del suo esecutore. Il linguaggio C (il suo compilatore) e il sistema operativo UNIX, scritto in C 10/17

Confronto tra i due approcci Efficienza, costo in tempo. Compilatore + Compilatore: La decodifica è fatta una volta per tutte le esecuzioni Interprete: a) La decodifica è ri-fatta ad ogni esecuzioni b) Uno statement può essere decodificato più volte durante una stessa esecuzione Semplicità di costruzione. Interprete Compilatore Compilatore: Deve utilizzare U L, U LO Interprete: Deve esprimere U L con un programma di L O Occupazione memoria. Interprete + codice oggetto lineare con dimensione sorgente fattore... (fig. sopra) Flessibilità e Integrazione con strumenti di esecuzione. Interprete + Sviluppo: Interprete + Uso, a sviluppo completato: Compilatore + 11/17

Realizzazione di una Macchina Astratta: Uso di Macchina Intermedia /6 Uso di una AM intermedia, M Li Compiliamo da L in L i Interpretiamo L i in L O Interpretativa pura: L = L i Compilativa pura: L i = L O Mista: L L i L O Interpretativa: L > L i >> L O 1 (Java e Java Virtual Machine, 1995) Compilativa: L >> L i > L O (Pascal e P-code Machine, 1975) 1 >> significa molto distante (per livello e/o paradigma), > significa poco distante 12/17

Una gerarchia di Macchine Astratte Un computer contiene una gerarchia di AM Non tutte sono AM di LP Oppure, ogni AM estende la AM inferiore con funzionalità per nuovi servizi 13/17

Compilatore: Utilizzare le universali nella costruzione Costruzione di Compilatore: Può utilizzare i mappings U L, U LO Utilizziamo i mappings nelle frecce in modo da creare un diagramma che commuta definendo C L,LO 14/17

Compilatore e Interprete: Front-end e Run Time Support /1 Spesso la realizzazione di un Linguaggio risulta in un kit di strumenti che includono sia C. che I. La costruzione di C. e di I. hanno alcune parti che possono essere esattamente le stesse: Front-End RTS Front-End. Parte iniziale (50 %) del codice di C. e di I.: Analizza il programma e ne genera Abstract Tree, AT Consiste in A. lessicale, A. sintattica e A. statica e generazione di AT AT è utilizzato da C. e I. come rappresentazione interna del programma. RTS. 15/17

Compilatore e Interprete: Front-end e Run Time Support /2 La costruzione di C. e di I. hanno alcune parti che possono essere esattamente le stesse Front-End RTS RTS. Collezione di librerie che definisce strutture e codice in linguaggio oggetto, L O, che implementano meccanismi del linguaggio sorgente, L, Sono meccanismi utilizzati dai programmi in modo identico Organizzazione della memoria, Strutture per il controllo dell esecuzione dei programmi di L. 16/17

Esercizi 1.6 - ex1 Si forniscano 3 esempi, in contesti diversi, di macchine astratte Risposta 1. bare machine (i.e. macchina cruda priva di S. Operativo) 2. macchina di S.O. (ottenuta dopo l istallazione di S.O.) 3. macchina Server di posta elettronica (ed.es. Exchange) 17/17