Corso di Informatica - Simulatore di una macchina con Instruction Set limitato Scuola di Applicazione, Interfacolt`a di Scienze Strategiche - Universit`a degli Studi di Torino 10 Novembre 2014 Il progetto consiste nella realizzazione di un simulatore di un calcolatore avente un Instruction Set ed una Memoria Limitata. 1 Descrizione della macchina La macchina oggetto di simulazione consiste di 16 registri di 8 bit ciscuno, numerati da 0 a F con memoria principale costituita da 256 celle di 8 bit ciacuna. A tale macchina `e associato un linguaggio macchina con istruzioni di lunghezza due byte. I primi 4 bit sono riservati per il codice operativo i restanti 12 per gli operandi. Le istruzioni del linguaggio macchina considerato sono descritte nella tabella seguente. Cod. Op. 1 Operandi RXY 2 3 RMN RXY 4 5 0RS RST 6 RXY 7 000 Descrizione Carica nel registro R la configurazione di bit contenuti nella cella di memoria di indirizzo XY Carica nel registro R la configurazione di bit MN Memorizza il contenuto del registro R nella cella di memoria di indirizzo XY Copia il contenuto del registro R nel registro S Somma i contenuti dei registri S, T e pone il risultato nel registro R Salta all’istruzione di indirizzo XY se il contenuto del registro R `e uguale al contenuto del registro 0 Stop Si noti che questa macchina `e in grado di manipolare soltanto numeri interi positivi. 2 Specifica del progetto Presi in input un file descrivente lo stato iniziale della memoria principale ed un valore per il Program Counter (PC), il simulatore dovr`a restituire in output un file descrivente lo stato della memoria principale al termine della computazione, ovvero al termine del caricamento nell’Instruction Register (IR) dell’istruzione 7000 (corrispondente allo Stop). Si osservi che ci` o potrebbe anche non avvenire mai (dipende dall’input dato). Pi` u specificatamente, quando il programma viene lanciato, esso richieder` a all’utente di digitare il nome del file descrivente lo stato iniziale della memoria (tale nome deve essere diverso da output.txt) e il valore iniziale del PC; al termine dell’esecuzione, ovvero al raggiungimento di una occorrenza dell’istruzione 1 di stop, il programma dovr`a scrivere il conseguente stato della memoria principale in un file denominato output.txt. I file descriventi lo stato della memoria sono file di testo che contengono una serie di righe Indirizzo-Cella|Valore che specificano i contenuti delle singole celle di memoria. Sia gli indirizzi che i valori sono espressi in notazione esadecimale. Nel caso in cui non si specifichi un valore per una cella di memoria ad un dato indirizzo, essa assumera per default il valore 00. Ad esempio se il file di stato consistesse delle seguenti righe 00|F0 01|01 04|33 A0|34 allora esso descriverebbe una memoria principale in cui tutte le celle contengono il valore 00, eccezion fatta per le celle di indirizzo 00, 01, 04, ed A0 che contengono rispettivamente i valori F 0, 01, 33, 34. ` lasciata completa libert` E a allo sviluppatore per la gestione di eventuali errori (come ad esempio la gestione dell’eventuale errato formato e/o incoerenza del file di stato dato in input oppure la gestione dell’overflow) o situazioni particolari (ad esempio il fatto che nel file di stato `e ripetuto due volte il valore di una stessa cella ` richiesta tuttavia la redazione di una relazione (in formato .txt) da di memoria). E allegare al codice sorgente, in cui lo sviluppatore illustri le eventuali scelte progettuali. 2.1 Suggerimenti per la realizzazione Per la realizzazione, il programma necessita di due array, uno di lunghezza 16 che mantiene il contenuto dei registri ed uno di lunghezza 256 che mantiene il contenuto delle singole celle di memoria. Richiede inoltre altre due variabili che rappresentano rispettivamente il PC e l’IR. Si osservi che il programma consiste di 3 componenti principali (realizzate da opportune funzioni) che sono le seguenti • il loader, che si occupa di caricare l’array che mantiene il contenuto della memoria coi valori specificati dal file dato in input • il motore di simulazione che si occupa di simulare il ciclo fetch-decode-execute: pertanto sar` a un ciclo while che avr`a come condizione d’uscita il fatto che l’IR contenga l’istruzione di stop. Ad ogni iterazione verr`a caricata l’istruzione corrente (il cui indirizzo `e scritto nel PC che sar` a poi incrementato) nell’IR che poi verr`a di volta in volta decodificata (ci saranno dunque una serie di if-then-else annidati oppure uno switch) ed eseguita. • il downloader che al termine dell’esecuzione del motore, si occuper`a di salvare il contenuto dell’array che mantiene il contenuto della memoria nel file output.txt. Le suddette indicazioni non sono vincolanti per la realizzazione: lo studente `e libero di attuare altre scelte progettuali. 2 2.2 Requisiti opzionali Le seguenti richieste di funzionalit`a ulteriori non sono obbligatorie, ma la loro realizzazione corretta costituisce nota di merito ai fini della valutazione. • il simulatore fornisce una maggiore interattivit`a con l’utente, dando la possibilit` a di effettuare l’output dopo un certo numero di passi, oppure fornendo la possibilit` a di effettuare l’avanzamento passo-passo (per scopi di debug), con la possibilit` a di stampare su schermo situazioni intermedie. • il simulatore fornisce la possibilit` a di inserire gli indirizzi delle celle e i valori anche in formato decimale o binario. Si consiglia di aggiungere le componenti opzionali solo dopo aver realizzato una versione funzionante della parte obbligatoria, tenendo presente che sar` a valutato in modo migliore un simulatore piccolo, semplice e funzionante rispetto ad un simulatore con numerose funzionalit`a che presentano dei problemi. 3 Regole e modalit` a di consegna Il presente documento va inteso come “specifica minimale” di progetto, ossia tutto ci` o che non `e espressamente richiesto `e lasciato a libera scelta. Il progetto deve essere realizzato individualmente da ciascun studente, in modo indipendente da terze persone. L’uso di costrutti del linguaggio non visti a lezione non `e vietato, ma fa presumere la violazione della regola suddetta, fatta salva la prova contraria fornita dallo studente in sede di colloquio orale. Ciascuno studente dovr`a conoscere l’intero progetto. Lo studente dovr`a pertanto saper illustrare dettagliatamente e commentare le funzionalit`a di ogni porzione del codice sorgente presentato. Egli dovr`a inoltre dimostrare di saper padroneggiare il codice sorgente presentato. Il programma dovr`a compilare senza errori utilizzando il compilatore g++ (Ubuntu 4.8.2-19ubuntu1) 4.8.2 ed il codice oggetto generato dovr`a eseguire senza errori in una macchina con sistema operativo Linux Ubuntu 14.04. Lo studente dovr`a inoltre consegnare una relazione in formato .txt in cui illustra le principali scelte progettuali nella realizzazione del programma. In particolare essa dovr`a contenere un piccolo manuale per aiutare l’utente all’utilizzo del programma. Il codice sorgente del programma (in formato .cpp) e la relazione (in formato .txt) dovranno essere compattati in un archivio in formato .zip: l’archivio deve avere come nome il nome e cognome dello studente che ha consegnato (nel formato Nome Cognome). L’archivio deve essere consegnato per e-mail all’indirizzo [email protected] ed in copia all’indirizzo mail del capitano Giuseppe Boscarello [email protected] tassativamente entro e non oltre Luned`ı 8 dicembre 2014 ore 23:59 CEST 3 L’oggetto della mail deve essere Consegna progetto Informatica 2014-2015. A riscontro della ricezione il docente invier`a sempre per e-mail opportuna ricevuta, la quale pu`o essere utilizzata come prova di consegna nei termini stabiliti. Consegne che non rispettino tutti i requisiti sopra descritti (consegna per email entro il 8/12/2014 indirizzata al docente ed in copia al cap. Boscarello) non saranno ritenute valide. Ogni studente deve consegnare il proprio progetto in modo valido, pena la non ammissione all’esame orale del 11 dicembre 2014 (che implica di default una votazione pari a 0/30). Pertanto, prerequisito per la partecipazione all’esame (cos`ı come a qualunque altro eventuale successivo appello orale relativo a questo corso, nel presente anno accademico) `e anche aver effettuato una consegna valida. Al fine del superamento dell’esame, gli studenti che non abbiano consegnato in modo valido saranno tenuti a riconsegnare il progetto per un appello successivo, con modalit`a di consegna da concordare con il docente. Per i progetti ritenuti insufficenti, lo studente sar` a tenuto a riconsegnare una nuova versione del progetto, le cui specifiche e modalit`a di consegna saranno definite con il docente. 4
© Copyright 2024 ExpyDoc