Progetto MIPS/SPIM AA 2010-2011

6

Click here to load reader

Transcript of Progetto MIPS/SPIM AA 2010-2011

Page 1: Progetto MIPS/SPIM AA 2010-2011

Progetto MIPS/SPIM

Descrizione Questa tipologia di progetto consiste in

Sviluppare un programma in linguaggio MIPS assembly

Simulare il programma in QtSPIM (o PCSPIM)

Preparare una relazione del progetto (max 20 pagine)

Inoltre,

Si può presentare il progetto individualmente o in coppie

Al momento dell’esame, occorre presentare una copia cartacea della relazione e una copia digitale

(CD o DVD, comprensiva di codice)

Infine,

Lo studente potrà scegliere tra i progetti presenti in questo documento, oppure proporre progetti

differenti. Nel secondo caso, il Professore valuterà la coerenza e la fattibilità della proposta.

In ogni caso, il progetto scelto va comunicato al Prof. Leonardo Pasini via mail

([email protected]).

Nella pagina seguente, sono elencati alcuni progetti disponibili e un template esemplificativo per la

relazione.

Page 2: Progetto MIPS/SPIM AA 2010-2011

Lista dei progetti disponibili

Progetto 1 - Primalità

Implementare una procedura in MIPS per calcolare e stampare i primi 100 numeri primi. Un naturale n>1 è detto primo se è divisibile solo per sè stesso e per 1.

Suggerimento: Implementate due routine:

test_prime (n): ritorna 1 se n è primo; 0 altrimenti

main (): cicla sui naturali, testando se ogni numero è primo. Stampa i primi 100 numeri primi e si ferma.

Progetto 2 – Calcolo del pi-greco

Implementare una procedura in MIPS per calcolare e stampare un valore approssimato del pi-greco. Il metodo da utilizzare è quello del prodotto di Wallis: (http://it.wikipedia.org/wiki/Prodotto_di_Wallis).

Prodotto di Wallis:

Suggerimenti:

Trasformare l’espressione del prodotto di Wallis in modo tale da minimizzare le operazioni aritmetiche

Basta un numero limitato di iterazioni. 100 sono sufficienti.

Naturalmente avrete bisogno di utilizzare i registri floating-point

Page 3: Progetto MIPS/SPIM AA 2010-2011

Progetto 3 – Bubble sort

Implementare una procedura in MIPS che esegue l’algoritmo di ordinamento noto come Bubble sort. Il programma dovrà prendere in input un’array di interi e stampare gli elementi ordinati secondo l’algoritmo indicato. All’indirizzo http://it.wikipedia.org/wiki/Bubble_sort , potete trovare una descrizione più dettagliata dell’algoritmo, mentre http://it.wikibooks.org/wiki/Implementazioni_di_algoritmi/Bubble_sort mostra alcune implementazioni più ad alto livello.

Bubble sort - codice Java: public void bubbleSort(int[] x)

{

int temp;

int j = x.length-1;

while(j>0)

{

for(int i=0; i<j; i++)

{

//controllo valori adiacenti; scambio se il corrente è > del successivo

if(x[i]>x[i+1]){

//esegue lo scambio

temp=x[i];

x[i]=x[i+1];

x[i+1]=temp;

}

}

j--;

}

}

Suggerimenti:

L’array di interi in input può avere lunghezza fissa o variabile

Progetto 4 – Macchina del caffè

Implementare una procedura in MIPS che simuli una macchina del caffè. Si richiedono le seguenti interazioni utente-macchina:

La macchina può erogare coffee o tea.

L’utente può inserire monete da 5, 10, 20, 50, 100, o 200 centesimi.

I prezzi delle bevande sono: coffee=35 e tea=40.

Ad ogni inserimento, il display stampa il credito corrente

In ogni momento, l’utente può chiedere l’erogazione della bevanda specificando in input “coffee” o “tea”

Se il credito non è sufficiente per la bevanda, il display stampa l’importo rimanente da inserire per la bevanda richiesta

Una volta inserito un importo adeguato e scelta la bevanda, il display deve indicare che sta erogando la bevuta

In qualsiasi momento, l’utente può richiedere l’importo inserito (o il resto) specificando “quit”. In tal caso, il display stampa l’importo dovuto e la macchina si spegne.

Page 4: Progetto MIPS/SPIM AA 2010-2011

Progetto 5 – Hex to Dec

Implementare una procedura in MIPS che effettua la conversione di una stringa esadecimale passata in input in un numero decimale. Si considerano interi esadecimali non segnati. Il programma dovrà stampare il numero decimale convertito.

Progetto 6 – Dec to Hex

Implementare una procedura in MIPS che effettua la conversione di un numero decimale passato in input in una stringa esadecimale. Si considerano interi non segnati.

Suggerimenti:

Si può utilizzare il metodo delle divisioni successive

Page 5: Progetto MIPS/SPIM AA 2010-2011

NOME PROGETTO Progetto di Architettura degli Elaboratori – Prof. Leonardo Pasini

Corso di Laurea in Informatica – Scuola di Scienze e Tecnologie – Università di Camerino

Anno Accademico: 2010/2011

Candidati:

Candidato 1 – Matricola n. 1

Candidato 2 – Matricola n. 2

...

Page 6: Progetto MIPS/SPIM AA 2010-2011

Specifica del problema Descrivere il problema da risolvere. La lunghezza di questa parte dipende naturalmente dal progetto scelto.

Descrizione dell’algoritmo Descrivere in modo dettagliato e più formale l’algoritmo da implementare. In questa parte, si consiglia di

inserire lo pseudocodice dell’algoritmo e la sua codifica in un linguaggio ad alto livello a scelta (C, Java, ...).

Si spieghino e si giustifichino in modo dettagliato le scelte adottate.

Implementazione In questa parte va aggiunto il codice MIPS assembly implementato e commentato in modo chiaro ed

esauriente. Sono consigliati commenti all’interno del codice, e commenti più ampi nella relazione.

Simulazione In questa sezione andranno gli screenshot commentati di una simulazione-tipo.