La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

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

Presentazioni simili


Presentazione sul tema: "EasyDLX Università degli Studi di Bologna Facoltà di Ingegneria Un linguaggio che realizza un sottoinsieme dellInstruction Set Architecture del DLX Realizzato."— Transcript della presentazione:

1 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

2 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

3 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

4 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

5 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

6 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

7 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.

8 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:...

9 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

10 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

11 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

12 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?

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

14 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

15 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)

16 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

17 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?

18 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

19 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

20 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:

21 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

22 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

23 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

24 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

25 Demo 7 Dicembre 2011EasyDLX - Daniele Biagi25


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

Presentazioni simili


Annunci Google