EasyDLX Università degli Studi di Bologna Facoltà di Ingegneria Un linguaggio che realizza un sottoinsieme dellInstruction Set Architecture del DLX Realizzato.

Slides:



Advertisements
Presentazioni simili
La struttura fisica e logica di un elaboratore
Advertisements

Università degli Studi di Napoli Federico II Facoltà di Ingegneria Dipartimento di Informatica e Sistemistica Corso di Sistemi ad elevate prestazioni –
Analizzatori Sintattici con Cup Giuseppe Morelli.
Generazione di Codice Intermedio
Elaboratore e Sistemi Operativo
Informatica Generale Susanna Pelagatti
Ottimizzazione statica del codice per processori pipelined Canella Matteo & Miglioli Filippo.
Chiamate a Procedure. Per lesecuzione di una procedura, un programma deve eseguire i seguenti sei passi: mettere i parametri in un posto dove la procedura.
Il Linguaggio Macchina
Architetture dei Calcolatori (Lettere j-z) Il Processore (2)
Università degli Studi di Roma La Sapienza Architettura degli elaboratori II Funzioni.
2 Sistema composto da un numero elevato di componenti, in cui ogni componente svolge una sua funzione elaborazione dati memorizzazione dati trasferimento.
Alcuni esercizi e domande per il compitino quali sono le parti principali dellarchitettura di von Neumann? citare le caratteristiche salienti della RAM.
1 Corso di Informatica (Programmazione) Lezione 4 (24 ottobre 2008) Architettura del calcolatore: la macchina di Von Neumann.
Microprogrammazione Codice operativo.
Caratteristiche principali dell’architettura del processore MIPS
Caratteristiche principali dell’architettura del processore MIPS
Criticità sui dati Consideriamo una sequenza di 5 istruzioni
Caratteristiche principali dell’architettura del processore MIPS
Criticità sui dati (esempio da fare on line)
Criticità sul controllo
Criticità sul controllo
Corso di Informatica Applicata - Lezione 3 - © 2005 Saverio De Vito Corso di Informatica Applicata Lezione 3 Università degli studi di Cassino Corso di.
Lezione 11. Risposte multiple M1 r1 M2 R2 M3.
1 Generazione codice Daniela Briola Lorena Bellino.
Software di base Il sistema operativo è un insieme di programmi che opera sul livello macchina e offre funzionalità di alto livello Es.organizzazione dei.
Codifica di algoritmi linguaggio macchina vs programmazione strutturata Lab Programmazione - turno /2006.
Calcolo di resistenze viste da vari punti
UNIVERSITA' DEGLI STUDI DI BOLOGNA FACOLTA' DI INGEGNERIA Corso di Laurea Magistrale in Ingegneria Informatica Progetto di Calcolatori Elettronici M: Estensione.
Progetto per lesame di Linguaggi e Modelli Computazionali LS Chiara Chiara Gualtieri.
Progetto desame di Gianluca Gallo Linguaggi e modelli computazionali LM Prof. Enrico Denti.
Linguaggi e Modelli Computazionali LS - Prof E.Denti
CineMan Linguaggio per la descrizione della programmazione di cinema
STRUTTURA GENERALE DI UN ELABORATORE
Corso di Laurea Specialistica in Ingegneria Informatica Itinerari aerei Progetto per lesame di Linguaggi e Modelli Computazionali LS realizzato da Stefano.
S ::= Formazione Formazione ::= NomeSquadra Team NomeSquadra ::= Team ::= Schema Tabellino | Tabellino Schema ::= Difesa Tabellino ::= ElencoTitolari.
Linguaggio per la generazione di biglietti da visita
Gianfranco Zampolini Progetto per il corso di: Linguaggi e Modelli Computazionali LS EM Linguaggio per la Descrizione di un Evento Musicale.
Corso di Laurea Specialistica in Ingegneria Informatica Model Drive Applicazione per il pilotaggio di veicoli Esame di Linguaggi e Modelli computazionali.
Architetture dei Calcolatori (Lettere j-z ) Il Processore
Architettura del calcolatore
Progetto di un linguaggio e interprete per giocare a MemoryPlus Progetto di:Docente: Vito La PortaEnrico Denti.
Progetto Fireworks Simulatore di spettacoli pirotecnici
Tablabla Progetto di Valent Cristina
Università degli Studi di Bologna Facoltà di Ingegneria Anno Accademico 2007/2008 Laurea Specialistica in Ingegneria Informatica Linguaggi e Modelli Computazionali.
Chess Game Visualizer Un interprete per Short Algebraic Notation Progetto per lesame di Linguaggi e modelli computazionali LS prof. Denti – A.A. 2007/08.
Linguaggi e modelli computazionali LS Manni Tiziano

Informatica Lezione 4 Scienze e tecniche psicologiche dello sviluppo e dell'educazione Anno accademico:
Arch. Elab. - S. Orlando 1 Esercitazione su Instruction Level Parallelism Salvatore Orlando.
Calcolatori Elettronici Il Processore
Informatica Lezione 5 Scienze e tecniche psicologiche dello sviluppo e dell'educazione (laurea triennale) Anno accademico:
Corsi di Laurea in Biotecnologie
Corso di Laurea in Informatica Architettura degli elaboratori a.a La macchina programmata Instruction Set Architecture (2) Istruzioni I-type Indirizzamento.
DRAUGHTS Linguaggi e Modelli Computazionali LS Linguaggio e interprete per effettuare una partita di dama inglese contro un’intelligenza artificiale Progetto.
Giannicola Spezzigu Accordo: sovrapposizione di 3 o più suoni Ogni sigla denota un accordo, ossia i suoni da cui esso è formato Accordi e.
Trading EToro Un linguaggio per descrivere e gestire operazioni di borsa Progetto di Linguaggi e Modelli Computazionali LS Prof. Enrico Denti Mancini Laura.
DerIntCalculator La calcolatrice per integrali e derivate Progetto di Linguaggi e Modelli Computazionali M Prof. Enrico Denti Realizzato da: Gabriella.
Linguaggi e Modelli Computazionali LS Anno Accademico 2007/2008 Alessio Della Motta Un linguaggio per descrivere partite di Maraffone: il gioco più popolare.
Architettura di un calcolatore e linguaggio macchina.
L’esecuzione dei programmi
SPIM Esercizi. Esercizio 1 – il comando ‘li’ Il codice deve eseguire una singola operazione: mettere il valore immediato 1023 nel registro s3.
Fondamenti di Informatica1 Linguaggi Diversi tipi di linguaggi: –Imperativi –Funzionali –Dichiarativi Tutti basati sulla traduzione nell'unico linguaggio.
Corso di Laurea in Biotecnologie corso di Informatica Paolo Mereghetti DISCo – Dipartimento di Informatica, Sistemistica e Comunicazione.
1 Informatica Generale Marzia Buscemi Ricevimento: Giovedì ore , Dipartimento di Informatica, stanza 306-PS o per posta.
Eye Computer Sistema per l'interazione con un computer dotato di controllo oculare Linguaggi e modelli computazionali LS Realizzato da: Ciavarella Primiano.
Hardware Struttura fisica (architettura) del calcolatore formata da parti meccaniche, elettriche, elettroniche.
Il Processore Il processore è la componente dell’unità centrale che elabora le informazioni contenute nella memoria principale L’elaborazione avviene eseguedo.
Corso di Laurea in Informatica Architettura degli elaboratori a.a La macchina programmata (3) Istruzioni J-type Istruzioni di salto Istruzioni.
Parsing ricorsivo discendente Il parsing ricorsivo discendente (recursive descent parsing) è un metodo di tipo top-down che può essere facilmente codificato.
Transcript della presentazione:

EasyDLX Università degli Studi di Bologna Facoltà di Ingegneria Un linguaggio che realizza un sottoinsieme dellInstruction Set Architecture del DLX Realizzato da Daniele Biagi Progetto per lesame di Linguaggi e Modelli Computazionali LS Docente Prof. E.Denti

Obiettivi del progetto Sviluppare un linguaggio che consenta di simulare delle operazioni su un processore DLX. Realizzare un interprete per questo linguaggio che possa aggiornare lo stato interno di una macchina virtuale. Realizzare uninterfaccia grafica dotata di un editor per la scrittura di codice e che possa mostrare passo passo lo stato della macchina virtuale. 7 Dicembre 2011EasyDLX - Daniele Biagi2

Principali caratteristiche del DLX (1/2) Istruzioni di tipo RISC (Reduced Instruction Set Computer) Le istruzioni sono sempre allineate ad indirizzi multipli di 4 Program Counter (PC) per tenere traccia dellinidirizzo della prossima istruzione 32 registri general purpose da 32 bit (R0..R31, R0=0) 32 registri da 32 bit ed un registro di stato sono dedicati per operazioni floating point. 7 Dicembre 2011EasyDLX - Daniele Biagi3

Principali caratteristiche del DLX (2/2) Gli operandi immediati, dove previsti, sono codificati con 16 bit Lo spazio di indirizzamento è di 4 GigaByte (32bit) Una sola modalità di indirizzamento: registro + offset (di 16 bit) I numeri negativi sono rappresentati in complemento a due, mentre quelli positivi in segno-valore assoluto 7 Dicembre 2011EasyDLX - Daniele Biagi4

Il set di istruzioni del DLX Le istruzioni possono essere suddivise in 3 classi: 1. Istruzioni aritmetiche e logiche che possono prevedere anche un operando immediato (I) e tipo unsigned (U): Istruzioni logiche: AND(I), OR(I), XOR(I) Istruzioni aritmetiche: ADD(U)(I), SUB(U)(I), MULT(U), DIV(U) Istruzioni di shift logico (a destra o a sinistra): SLL(I), SRL(I) Istruzioni di set condition, le quali se verificata una certa condizione inseriscono un 1 nel registro di destinazione, o altrimenti uno 0: SEQ(I) (=), SNE(I) (), SLT (I) ( ), SLE (), SGE () 2. Istruzioni di trasferimento dati: Trasferimento dalla memoria (Load): LB(U), LH(U), LW Trasferimento verso la memoria (Store): SB, SH, SW 3. Istruzioni di trasferimento del controllo: Istruzioni di salto condizionato: BNEZ, BEQZ Istruzioni di salto incondizionato diretto e indiretto: J, JR Istruzioni di chiamata a procedura: JAL, JALR 7 Dicembre 2011EasyDLX - Daniele Biagi5

Linguaggio: esempio LOOP: ADD R1,R2,R3; R1 R2+R3 ADDI R1, R2,3; R1 R2+3 ADD R1, R5, R0; R1 R5 SLT R1, R2, R3; se R2<R3 R1 1, altrimenti R1 0 LB R1,40(R3); R1 (MEM[40+R3] 7 ) 24 ##(MEM[40+R3]) LBU R1,40(R3); R1 (0) 24 ## (MEM[40+R3]) SW 10(R5), R7; MEM[10+R5] R7 JAL alfa; R31 PC+4, PC (PC+4)+OFFSET(alfa) BEQZ R4,LOOP; se R4=0 PC PC+4+OFFSET(LOOP) NOP; 7 Dicembre 2011EasyDLX - Daniele Biagi6 estensione del segno

Realizzazione Dal progetto sono state escluse le operazioni ed i registri floating point. Non vengono gestite le interruzioni Le istruzioni RFE, CLI, STI e TRAP non sono state implementate 7 Dicembre 2011EasyDLX - Daniele Biagi7 Ma, il linguaggio sviluppato comprende tutte le istruzioni delle 3 classi viste precedentemente e listruzione NOP.

Grammatica: i token Le parole chiave per le etichette, numeri e separatori: 7 Dicembre 2011EasyDLX - Daniele Biagi8 ( | )*> ":"> )? ["1"-"9"] ( )* | "0"> utilizzata nelle istruzioni di salto es. BEQZ R4,LOOP; utilizzata nella definizione delle etichette es. LOOP:...

Grammatica: non terminali Lo scopo della grammatica: 7 Dicembre 2011EasyDLX - Daniele Biagi9 ::= ( )? ::= | In base al numero di operandi ed al tipo, possiamo dividere le istruzioni in 8 tipi diversi

Grammatica: non terminali Istruzioni aritmetiche e logiche: 7 Dicembre 2011EasyDLX - Daniele Biagi10 ::= ::= ADD | ADDU | SUB | SUBU | MULT | MULTU | DIV | DIVU | AND | OR | XOR | SLL | SRL | SLT | SGT | SLE | SGE | SEQ | SNE ::= ::= ADDI | ADDUI | SUBI | SUBUI | ANDI | ORI | XORI | SLLI | SRLI | SLTI | SGTI | SLEI | SGEI | SEQI | SNEI Con 3 registri es. ADD R1,R2,R3 Con 2 registri ed un immediato es. ADDI R1,R2,3

Grammatica: non terminali Istruzioni di traferimento dati e di salto: 7 Dicembre 2011EasyDLX - Daniele Biagi11 ::= ::= LB | LBU | LH | LHU | LW ::= ::= SB | SH | SW ::= ::= BEQZ | BNEZ ::= ::= JR | JALR ::= ::= J | JAL Load es. LB R1,16(R2) Store es. SB 16(R2),R1 Branch es. BEQZ R2,LOOP Jump con registro es. JR R31 Jump con etichetta es. J LABEL

Grammatica: non terminali Istruzione NOP, operando immediato e registri: 7 Dicembre 2011EasyDLX - Daniele Biagi12 ::= NOP ::= ::= R0 | R1 | R2 | R3 | R4 | R5 | R6 | R7 | R8 | R9 | R10 | R11 | R12 | R13 | R14 | R15 | R16 | R17 | R18 | R19 | R20 | R21 | R22 | R23 | R24 | R25 | R26 | R27 | R28 | R29 | R30 | R31 Ma quali proprietà ha questa grammatica?

Grammatica: proprietà (1/2) 7 Dicembre 2011EasyDLX - Daniele Biagi13

Grammatica: proprietà (2/2) La grammatica è LL(1), quindi basta un solo simbolo della frase per scegliere la produzione da applicare In particolare, la grammatica non contiene ε-rules, quindi per verificare che sia LL(1) è sufficiente verificare che la condizione sugli Starter Symbols sia soddisfatta Il linguaggio generato è regolare (tipo 3), poichè la grammatica non contiene self-embedding 7 Dicembre 2011EasyDLX - Daniele Biagi14

Architettura del sistema: interpretazione (1/2) 7 Dicembre 2011EasyDLX - Daniele Biagi15 caratteri Analisi Lessicale (Scanner o Lexer) editor token Analisi Sintattica (Parser) rappresentazione della frase AST Analisi Semantica (Visitor)

Architettura del sistema: interpretazione (2/2) Package parser: EasyDLXParserTokenManager è lo Scanner che individua i singoli token EasyDLXParser è il Parser che effettua lAnalisi Sintattica Package sintaxtree: contiene tutte le classi che possono essere usate per la costruzione dell AST Package easyDLXVisitor: 7 Dicembre 2011EasyDLX - Daniele Biagi16 contiene tutti i visitor che vengono utilizzati per linterpretazione e per il controllo semantico...perchè 3 visitor? generato da JavaCC generato da JTB Le classi visitor estendono DepthFirstVisitor generata da JTB

Problema delle forward references Prima di simulare lesecuzione delle istruzioni, viene eseguito un passo in cui viene associato un PC ad ogni istruzione. di conseguenza viene assegnato anche un PC ad ogni etichetta che viene definita 7 Dicembre 2011EasyDLX - Daniele Biagi17 J LABEL;... LABEL: ADD R1,R2,R3; E se avessi bisogno di fare un salto ad unistruzione prima della definizione della sua etichetta?

Analisi Semantica (Primo passo) Al primo passo lapplicazione analizza le istruzioni nellordine in cui sono state inserite, ed esegue dei controlli semantici attraverso EasyDLXVisitorReferences: gli immediati con segno devono essere compresi fra e gli immediati senza segno devono essere compresi fra 0 e la stessa etichetta deve essere definita soltanto una volta R0 non può essere la destinazione Jump o Branch a riferimenti mai definiti Successivamente avviene la simulazione passo-passo, dove il contenuto dei registri e della memoria viene modificato sfruttando EasyDLXVisitorSimulation 7 Dicembre 2011EasyDLX - Daniele Biagi18

Analisi Semantica (Secondo passo) Ora nel caso di un salto o di un branch taken si va ad eseguire listruzione al nuovo PC. Tuttavia, attraverso linterfaccia grafica lutente può controllare: la prossima istruzione quando eseguire la prossima istruzione il contenuto dei registri lalbero sintattico generato dal terzo visitor EasyDLXVisitorTree il contenuto della memoria Inoltre, ci sono le condizioni per effettuare ulteriori controlli semantici: load e store non possono coinvolgere gli indirizzi dove sono memorizzare le istruzioni lindirizzo di una load deve riferirsi ad unarea di memoria dove è stato scritto qualcosa gli indirizzi nelle LH ed SH devono essere pari gli inidirizzi nelle LW e SW devono essere multipli di 4 7 Dicembre 2011EasyDLX - Daniele Biagi19

Architettura del sistema: interfaccia grafica e simulazione 7 Dicembre 2011EasyDLX - Daniele Biagi20 easyDLXGUI: contiene le classi per linterfaccia grafica easyDLXsimulation: contiene le classi che modellano la macchina easyDLXeditor: contiene le classi per costruire leditor del codice Lapplicazione è inoltre composta dei seguenti package:

Interfaccia Utente 7 Dicembre 2011EasyDLX - Daniele Biagi21 editor prossima istruzione che verrà eseguita Aspetto dellinterfaccia utente durante la simulazione: controllo step-by-step albero sintattico area di notifica stato dei registri tabella corrispondenze etichetta-PC stato della memoria

Test e collaudi Per verificare la correttezza dellanalisi sintattica e semantica sono stati dati in input: file con errori sintattici file con errori semantici Per accertare la correttezza delle operazioni che simulano il DLX, gli operandi sono stati generati in maniera casuale in questo modo i test sono attendibili e garantiscono un ottimo grado di copertura 7 Dicembre 2011EasyDLX - Daniele Biagi22

Strumenti utilizzati Linguaggio di programmazione Java (jdk1.7.0_01) Ambiente di sviluppo Eclipse Indigo Generazione parser e scanner JavaCC 5.0 Generazione AST e visitor Java Tree Builder Ambiente di test Junit Dicembre 2011EasyDLX - Daniele Biagi23

Limiti e sviluppi futuri... Limiti: Lapplicazione in caso di overflow non avvisa lutente: Non è possibile mappare alcuna periferica Non è possibile visualizzare i bit delle aree di memoria dove sono presenti le istruzioni Oltre ai limiti dellapplicazione, ulteriori spunti per sviluppi futuri sono: introduzione delle operazioni floating point introduzione delle interruzioni 7 Dicembre 2011EasyDLX - Daniele Biagi24

Demo 7 Dicembre 2011EasyDLX - Daniele Biagi25