generalit n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Generalità PowerPoint Presentation
Download Presentation
Generalità

Loading in 2 Seconds...

play fullscreen
1 / 29

Generalità - PowerPoint PPT Presentation


  • 149 Views
  • Uploaded on

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

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Generalità' - kyle


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
generalit
Generalità
  • Linguaggio e Macchina Astratta
  • M.A.: struttura e stati dell’esecutore
  • Costruire M.A.: Interprete, Compilatore
  • Interprete: dentro
  • Compilatore: il supporto RTS
  • Compilatore: Macchine di sviluppo e Gerarchia
  • Macchine Intermedie: costruzioni miste
definizioni linguaggio e formalismo
Definizioni:linguaggio e formalismo

linguaggio di (programmazione) =

= formalismo per esprimere

(applicazioni di funzioni calcolabili)

formalismo= sintassi (forma delle costruzioni permesse)

+

semantica (significato loro associato)

esempio linguaggio di programmazione
Esempio: Linguaggio di Programmazione

L = <S, SEM> e’ un linguaggio di progr.

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)

[dove: {N  N} = funzioni calcolabili]

definizioni macchina astratta

P

EL(P)

EL

Control frame

Data-Control Stack

Heap

Definizioni:Macchina Astratta

Macchina astratta=

Linguaggio (L=<S,SEM>)

+

Esecutore (EL)

Per ogni PS,

SEM(P) EL(P)

Java Virtual Machine

Landin’s SECD

esempio macchina astratta linguaggio ed esecutore

SEM(P)(n)

P,n

I

O

A

A*

P,n

P,n

[dove I,O funzioni iniettive su A e A* risp.]

Esempio: Macchina Astratta, Linguaggio ed Esecutore
  • LM = <S, SEM> è un linguaggio di programmazione
  • EMè un esecutore di applicazioni di programmi
  • M = <LM,EM>

EM: A  A*

per ogni P

S, n

N

Î

Î

SEM

linguaggio

Macchina

Astratta

EM

macchina astratta struttura e stati dell esecutore
Macchina Astratta: Struttura e Stati dell’Esecutore

Interprete

Ciclo di interpretazione

Op1

Opk

Programma

Dati

Memoria

Fetch istruzione

Controllo sequenza

Fetch operandi

Controllo dati

Gestione memoria

Modello statico-dinamico

controllo

Macchina astratta - Esecutore

macchina astratta memoria controllo
Macchina Astratta: Memoria, Controllo
  • 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: gestisce lo stato della macchina
        • trova il successivo statement o espressione
        • trova i dati su cui tale stat. o espr. opera
        • gestisce la memoria
macchina astratta interprete cliclo di interpretazione

start

fetch statement

decodifica

fetch operandi

seleziona

Op1

Opn

halt

stop

Macchina Astratta: Interprete - cliclo di interpretazione
costruire macchine astratte
Costruire Macchine Astratte
  • Utiliziamo macchine astratte gia definite
    • Sia L0=(S0,SEM0) il nostro linguaggio
    • Sia M1= (L1=<S1,SEM1>,EL1) una macchina
  • inteprete
  • definiamo l’esecutore EL0 come programma di L1.
  • compilatore
  • trasformiamo ogni struttura (programma) di L0
  • in una equivalente struttura (programma) di L1.
interprete

Î S0

SEM(P)(n)

P,n

E

L

O

Î S1

E

(

E

,(P,n))

E

,(P,n)

L

L

L

1

O

O

E

L

1

Eseguire una

APPLICAZIONE (

P,n) di L

, consiste:

0

nell'eseguire l'applicazione

E

,(P,n) di L

L

1

0

Interprete
interprete dentro e l0
Interprete: dentro EL0
  • Una collezione di procedure che realizzano:
    • i passi (decodifica) del ciclo di interpretazione per L0
    • il modello di memoria di dati e programmi di L0
    • l’unità di controllo per fetch di codice e di dati di L0
    • un implementazione delle primitive di L0
compilatore

P

Î S0

CL0(P)

Î S1

E

CL0,P

L

EL1(CL0,P)

O

E

L

1

Il compilatore non opera su applicazioni bensì

su strutture (programmi: P)

C

preserva la semantica:

L

O

SEM

(P) = SEM

(C

(P))

L

O

1

O

Compilatore

C011

compilatore il run time support
Compilatore: Il Run Time Support
  • Non dipende dallo specifico programma compilato
  • Utilizzabile dall’oggetto di ogni sorgente
  • Una collezione di procedure che realizzano:
    • il modello di memoria di dati e programmi di L0
    • strutture per trasferimento controllo
    • un’implementazione delle primitive di L0
compilatore la macchina sottostante
Compilatore: La Macchina Sottostante

EL0(P,n)

PS0

CL0(P)S1

CL0(P),n

EL1(CL0(P),n)

RTS

EL1

CL0

EL0

compilatore la macchina di sviluppo
Compilatore: La Macchina di Sviluppo

PS0 CL0(P)S1

CL0(P),n EL1(CL0(P),n)

sorgente di L0

oggetto per L1

Linguaggio target

(object language)

EL1

RTS

metalinguaggio

EL2

CL0

Macchina Host

Macchina Target

EL0

C012

gerarchia di macchine nello sviluppo
Gerarchia di Macchinenello sviluppo
  • Gerarchia di Macchine
    • riduce ad ogni livello l’espressivitá
    • semplifica la costruzione della macchina di un linguaggio
      • molto espressivo

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 nella struttura
Gerarchia di Macchine nella struttura

Linguaggi di Rete

Macchina Rete

Linguaggi di Browser

Macchina WEB

Java

Macchina Java

Scala

Macchina Scala

Java Bytecode

Macchina Intermedia

Linguaggio di Sistema

SistemaOperativo

LinguaggioMicroporgrammazione

Firmware

Linguaggio Macchina

Hardware

classi di macchine concrete
Classi di Macchine Concrete
  • 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
macchina intermedia costruzioni miste
Macchina Intermedia: Costruzioni Miste

L0:Linguaggio sorgente

Macchina di L0

compilatore

LI:Ling. Intermedio

Macchina di LI

interprete

L1:Linguaggio target

Macchina di L1

  • Vantaggi:
    • sviluppo ridotto
    • portabilità aumentata
    • dimensione c. oggetto:
      • occ. memoria
      • tempo esecuzione
compilatore interprete contesto struttura componenti

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
compilatore interprete contesto struttura componenti1

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
slide23

Struttura dei moduli

Preprocessor

Link e macros

Contesto del

Compilatore:

Font-end

Back-end

Source program

Compiler

Object program

Assembler

Codice rilocabile

Librerie

rts

Link-Loader

Assoluto eseguibile

compilatore struttura fasi e passi

Analisi Lessicale

Analisi Sintattica

Analisi Statica

Tabella

Simboli

Errori

Codice Intermedio

Ottimizzazione

Fasi e Passi:

6 fasi

k(≥1) passi

Codice target

Compilatore: struttura, fasi e passi
interprete la struttura standard

Analisi Lessicale

Analisi Sintattica

Analisi Statica

Tabella

Simboli

Errori

Emulatore su

Codice target

Interprete: La struttura standard

Fasi e Passi:

4 fasi

k(≥1) passi

compilatore una struttura per analisi di correttezza avanzate

Analisi Lessicale

Analisi Sintattica

Analisi Statica

Tabella

Simboli

Errori

Codice Intermedio

Correttezza

Terminazione - proprieta’ varie

Codice Intermedio

Fasi e Passi:

8 fasi

k(≥1) passi

Ottimizzazione

Codice target

Compilatore: Una struttura per analisi di correttezza avanzate
compiler compiler ridurre i metalinguaggi e semplificare la stesura di un compilatore
Compiler-Compiler: ridurre i metalinguaggi e semplificare la stesura di un compilatore

Lo sviluppo di un compilatore (interprete), da un linguaggio L0 a Lt,

coinvolge altri linguaggi Lm.

I metalinguaggi sono utilizzati per esprimere le procedure di analisi e traduzione,

e condizionano il compilatore che può essere eseguito solo sul meta scelto

Distinguere tra: C0tme C0tn

Combiniamo interprete e compilatore

bootstrapping
Bootstrapping
  • costruiamo un interprete E0m(che valuta programmi di L0
    • su una macchina Mm): strumento di sviluppo
  • costruiamo compilatore C0t0: Il compilatore è scritto nel
    • linguaggio L0 stesso.
  • eseguiamo: E0m(C0t0)(C0t0)otteniamo C0tt

Bootstrapping (m ≤ t)

Il prodotto è ora indipendente dal meta

in questo corso semantica formale e rts
In questo corsoSemantica 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 dall’implementazione:
      • Progettista: la definisce
      • Implementatore: la usa come specifica del linguaggio da implementare
      • Programmatore: la usa come documentazione indipendente dall’implementazione
        • scrivere programmi corretti e
        • provare proprietà del programma, semplificazioni e modifiche
  • 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