Specifica del progetto - Dipartimento di Informatica

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