Sviluppo di un compilatore per un linguaggio imperativo. Università degli studi di Roma Tor Vergata Facoltà di Ingegneria Corso di laurea in Ingegneria.

Slides:



Advertisements
Presentazioni simili
/ fax
Advertisements

1 Le s-espressioni. 2 Un nuovo esempio completo: le s-espressioni Sexpr 4 alberi binari (possibilmente vuoti) che hanno sulle foglie atomi (stringhe)
SCOMPOSIZIONE DI UN NUMERO IN FATTORI PRIMI
Procedure In assembler.
Sintassi (prima parte)
1 Informatica Generale Susanna Pelagatti Ricevimento: Mercoledì ore presso Dipartimento di Informatica, Via Buonarroti,
1 la competenza alfabetica della popolazione italiana CEDE distribuzione percentuale per livelli.
Modellazione per addizione: denti posteriori
POTENZE cosa sono proprietà curiosità visualizzazione.
4 x 5 = 20 MULTIPLO DIVISORI e 5 sono divisori di 20
Dipartimento di Ricerca Sociale - Università del Piemonte Orientale 1 Castelli Aperti giugno 2005 Castello di Camino (AL) IL PUBBLICO DI CASTELLI.
Virtual CPU - Eniac Dr.ssa Veronica Marchetti
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 20/03/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 06/03/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 6 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
Informatica di base A.A. 2003/2004 Algoritmi e programmi
Programmazione 1 9CFU – TANTE ore
Realizzazione e caratterizzazione di una semplice rete neurale per la separazione di due campioni di eventi Vincenzo Izzo.
Sviluppo di Software Sicuro - S 3 Condizioni di verifica in pratica Corso di Laurea Magistrale in Sicurezza Informatica: Infrastrutture e Applicazioni.
Il linguaggio Fortran 90: 4. Array: Vettori e Matrici
Dipartimento di Informatica e Sistemistica Alessandro DE CARLI Anno Accademico MOVIMENTAZIONE CONTROLLATA AZIONAMENTI CON MOTORE BRUSHLESS.
Progetto Sicurezza di rete
1Sonda di elettroni Capitolo 7. 2Confronto fra microscopio elettronico e acceleratore Capitolo 7.
Processi, Thread, Multitasking, Multithreading. Ingredienti 1 CPU 1 Memoria RAM Tanti programmi che condividono la stessa memoria Esigenza di far girare.
6.6Ordinamento di Vettori Ordinamento di dati –Applicazione computazionale importante –Virtualmente ogni organizzazione deve ordinare dei dati Enormi quantità
1 Implementazione di Linguaggi 2 PARTE 6 Implementazione di Linguaggi 2 PARTE 6 Massimo Ancona DISI Università di Genova Testo: A.V. Aho, R. Sethi, J.D.Ullman.
POTENZE modificato da iprof.
2000 Prentice Hall, Inc. All rights reserved. 1 Capitolo 6: Classi e astrazione dati 1.Introduzione 2.Definizione delle strutture 3.Accedere ai membri.
Sottoprogrammi e Unità di Compilazione Nicola Fanizzi Laboratorio - Corso di Programmazione (B) C.d.L. in Informatica DIB - Università degli Studi di Bari.
Array Ricerca Ordinamento Fusione Nicola Fanizzi Laboratorio - Corso di Programmazione (B) C.d.L. in Informatica DIB - Università degli Studi di Bari.
Strutture di controllo in C -- Flow Chart --
1 Funzioni e Procedure in C Corso di Informatica A Vito Perrone.
Programmazione Avanzata
2 3 4 RISERVATEZZA INTEGRITA DISPONIBILITA 5 6.
Università degli studi di Modena e Reggio Emilia Facoltà di Ingegneria di Modena Corso di Laurea Specialistica in Ingegneria Informatica Analisi e valutazione.
22 maggio 2002 Avvisi: Ultima lezione: mercoledì 29 maggio II Esonero: mercoledì 5 giugno, ore 10:00.
Fondamenti delle Reti di Computer Il Browser Carasco 22/04/2010.
Università degli Studi di BresciaA.A. 2012/2013 Fondamenti di Programmazione Docente: Alessandro SaettiA.A. 2012/2013 Università degli Studi di Brescia.
1 Negozi Nuove idee realizzate per. 2 Negozi 3 4.
Scheda Ente Ente Privato Ente Pubblico. 2ROL - Richieste On Line.
Codici delle voci di bilancio Per preparare il bilancio, si parte da “Prima nota di cassa e banca”
Introduzione al linguaggio assembly del microprocessore a parte
1 Lucidi delle esercitazioni di Sistemi di Elaborazione in Rete Università degli Studi della Calabria Corso di Laurea in Ingegneria Informatica A.A. 2003/2004.
INPS - COMUNI SERVIZI AL CITTADINO.
Realizzazione Grammatica non contestuale –no ricorsioni sinistre –LL(1) produzione individuata dal primo token Ogni non-terminale -> funzione –rappresenta.
1 Questionario di soddisfazione ATA - a. sc. 2008/09 Il questionario è stato somministrato nel mese di aprile Sono stati restituiti 29 questionari.
24 aprile 2002 Avvisi: Risultati 1 o Esonero: (entro) lunedi 27 disponibili nella pag. WEB, ma anche esposti nella bacheca fuori dal corridoio 2 o dente,
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 6 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
INTERFACCIAMENTO ASSEMBLY - C++
1101 = x 10 x 10 x x 10 x = CORRISPONDENZE
21 marzo 2002 (ri-)Avvisi: Giovedi 28 marzo la lezione e sospesa. Nuovo indirizzo di Spedire messaggi e esercizi solo.
Ad opera di: Matteo Donatelli e Maurizio Di Paolo Presentazione su : Elettropneumatica 1.
POTENZE cosa sono proprietà curiosità visualizzazione.
C’è / Ci sono Scegli un numero.
Curiosità su numeri naturali consecutivi come ottenere serie di quadrati, cubi, quarte potenze senza moltiplicazioni numeri figurati quadrati, triangolari,
Art. B ,80 18x15x5,5 Col. Rosa, Lilla. Art. B ,30 20,5x11x2.
ICT security 2002/ Buffer Overflows (stack based) Alberto Ornaghi Lorenzo Cavallaro.
Pippo.
Introduzione al linguaggio C. Cos’e’ il C? Il C e’ un linguaggio ad alto livello Un compilatore C prende in input un file contenente codice sorgente C.
Distribuzione per causa delle irregolarità al servizio Azienda ATL (Valori assoluti) 1.
Bando Pittori e Scultori in Piemonte alla metà del ‘700
JDBC Java DataBase Connectivity SISTEMI ITIS B. CASTELLI Anno Scolastico
lun mar mer gio ven SAB DOM FEBBRAIO.
1 M. Rebaudengo, M. Sonza Reorda Politecnico di Torino Dip. di Automatica e Informatica M. Rebaudengo - M. Sonza Reorda L’Assembler 8086 Istruzioni per.
Il linguaggio Fortran 90: 3. Procedure e Funzioni
ADDIZIONE è operazione interna a N proprietà Elemento neutro è 0
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 6 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
1 Analisi della gestione finanziaria dal 04 Gennaio 2008 Fondo Pensione Astri Comparto Bilanciato report al: 4 giugno 2010.
IL GIOCO DEL PORTIERE CASISTICA. Caso n. 1 Il portiere nella seguente azione NON commette infrazioni.
Transcript della presentazione:

Sviluppo di un compilatore per un linguaggio imperativo. Università degli studi di Roma Tor Vergata Facoltà di Ingegneria Corso di laurea in Ingegneria Informatica Relatore Prof. Alberto Pettorossi Laureando Fernando Iazeolla Anno Accademico

Cosa e un compilatore E un programma che traduce un programma (sorgente) in un altro programma equivalente sorgente compilatore codice

Struttura di un compilatore Front end = lexical analizer + parser Back end = encoder + linker Front endBack end

Lexical analizer (1) Riconosce i token dellinput stream Token: Numeri Identificatori Simboli (punteggiatura)

Lexical analizer (2) Numeri digit 0|1|2|3|4|5|6|7|8|9 digits digit digit* optional_fraction. digits | ε optional_ exponent ( E ( + | - | ε ) digits) | ε number digits optional_fraction optional_exponent

Lexical analizer (3) Identificatori letter A|B|C|…|Z|a|b|c|…|z digit 0|1|2|3|4|5|6|7|8|9 id letter (letter | digit )*

parser (1) Il linguaggio e riconosciuto dal parser tramite grammatiche context-free o BNF Assumiamo il parser come una rappresentazione di un albero di parsing per i token generati dal lexical analizer

Parser (2) Grammatica program opt_sub mainp opt_sub opt_sub ε | sub id ( listargs ) statement opt_sub mainp main ( ) statement statement { statement } |ε statement write ( id ) ; statement $ id ( listargs ) ; Programma sub out(a) { write(a); } main() { $out(1); }

Albero di parsing program mainp opt_sub ε main()stmt )lstarg(idsub ε outid a }stmt{ )id(write a stmt}{ ;$out(lstarg); 1

Il mio compilatore ha laritmetica dei puntatori ha le funzioni con parametri ha variabili globali ha variabili locali ha tipi di dato : interi, puntatori, stringhe e procedurale adotta una sintassi C-like

Output del mio compilatore sorgente compilatore Pseudo assembler Assembler sorgente intel 80x86 Codice macchina intel 80x86

esempio Programma sorgente Pseudo assembler sub somma(a,b) { local(z); z=a+b; return(z); } main() { x=$somma(1,3); } 1-jump init_funz 3- create_local(2) 4- load stack_bp(6) 5- add stack_bp(4) 6- store stack_bp(-2) 7- load stack_bp(-2) 8- destroy_local(2) 9- end_funz 10- destroy_local(2) 11- end_funz 12- init_funz 13- loadc push loadc push call destroy_local(4) 19- store halt 21- destroy_local(0) 22- end_funz 23- dw block(2)

esempio E push cs F pop ds E93400 jmp 0x nop push bp E5 mov bp,sp EC0200 sub sp,0x D 89EB mov bx,bp F 81C30600 add bx,0x B07 mov ax,[bx] EB mov bx,bp C30400 add bx,0x B 0307 add ax,[bx] D 89EB mov bx,bp F 81C3FEFF add bx,0xfffe mov [bx],ax EB mov bx,bp C3FEFF add bx,0xfffe B 8B07 mov ax,[bx] D 81C40200 add sp,0x D pop bp C3 ret C40200 add sp,0x D pop bp C3 ret nop A 55 push bp B 89E5 mov bp,sp D B80100 mov ax,0x push ax B80300 mov ax,0x push ax E8BDFF call 0x C40400 add sp,0x C A35701 mov [0x157],ax F CD20 int 0x C40000 add sp,0x D pop bp C3 ret add [bx+si],al nop Funzione somma Funzione main old bp h bp main z bp somma 0 FFFF h

Esempio (2) Programma fattoriale sub foo() { return(5); } sub fattoriale(a) { local(x,y,z); if(a==1) return(1); z=a-1; y=$fattoriale(z); x=y*a; return(x); } main() { local(x,z); write("fattoriale"); write(crlf); x=$fattoriale(8); write(x); write(crlf); if(x>100) { z=4; } else { z=$foo(); } write("ciclo"); write(crlf); while(z>0) { write(z); write(crlf); z=z-1; }

Esempio (2) Output del programma fattoriale

Conclusioni Compilatore funzionante Eseguibili DOS/Windows Linguaggio C-like Sviluppi futuri Estenzione per un linguaggio ad oggetti eseguibile per altri sistemi operativi Sviluppare interfaccia grafica