Architettura degli elaboratori Seconda esercitazione di laboratorio Dr. Francesco Giacomini e Dr. Matteo Manzali Università degli Studi di Ferrara
Linee generali (1) L esercitazione consiste nell implementare specifiche funzioni in assembly MIPS (nelle slides successive troverete la definizione di tali funzioni) Il sistema di test utilizzato per questa esercitazione prevede l utilizzo di un main modificato da noi, quindi dovrete consegnare il file assembly senza il main (devono essere presenti solo le funzioni) Per testare le funzioni potete ovviamente crearvi un main che le richiami, ma ricordatevi di rimuoverlo prima di inviare il file Le etichette (i nomi delle funzioni) devono essere esattamente quelle descritte in questa presentazione 2
Linee generali (2) Siete liberi di implementare ulteriori funzioni di supporto se le ritenete utili, ricordatevi però di commentarle e di descriverle adeguatamente nella relazione Non si può utilizzare alcuna variabile globale, tutto il necessario sarà passato come argomento alle funzioni Lo store/load dallo stack implementatelo solo se necessario Il codice assembly è ancora meno descrittivo del C, quindi siete pregati di commentare il più possibile in modo da rendere chiaro il procedimento utilizzato (ovviamente non è necessario scrivere cosa fa ogni singola istruzione) Nella relazione va anche indicato l algoritmo/approccio utilizzato e la strategia di testing (come avete verificato che tutto funziona) 3
Linee generali (3) Suggerimenti su registri e funzioni: Nelle funzioni terminali utilizzare i registri t Nelle funzioni non terminali utilizzare i registri s Ricordatevi di formattare correttamente le relazioni (paragrafi, titoli, tabulazione, etc ), inoltre è gradito il formato PDF 4
Calcolo del MCD "Il Massimo Comune Divisore di due numeri naturali a e b, che si indica con MCD(a,b), è il numero naturale più grande per il quale possono entrambi essere divisi. Se entrambi i numeri a e b sono uguali a 0, allora si pone MCD(a,b) = 0." Implementare la funzione MCD che dati due numeri interi ritorna il loro Massimo Comune Divisore Utilizzare l algoritmo di Euclide per il calcolo cel MCD 5
Calcolo del mcm "Il minimo comune multiplo di due numeri naturali a e b, indicato con mcm(a,b), è il numero naturale più piccolo che sia multiplo di entrambi. Se uno dei due numeri e' uguale a 0, allora si pone mcm(a,b) = 0." Implementare la funzione mcm che dati due numeri interi ritorna il loro minimo comune multiplo Siete liberi di scegliere l algoritmo che preferite 6
La successione di Fibonacci La successione di Fibonacci, indicata con Fib(n), è una successione di numeri interi positivi in cui ciascun numero è la somma dei due precedenti. I primi due termini della successione sono per definizione F1=1 e F2=1. Tale successione ha quindi una definizione ricorsiva secondo la seguente regola: F1=1, F2=1, Fn=Fn - 1 + Fn - 2 (per ogni n>2) Implementare la funzione Fib che dato un numero naturale in ingresso ritorna il relativo numero di Fibonacci utilizzando una tecnica iterativa. Implementare la funzione FibRic che dato un numero naturale in ingresso ritorna il relativo numero di Fibonacci utilizzando una tecnica ricorsiva. 7
Firme delle funzioni in C unsigned int MCD(unsigned int a, unsigned int b); unsigned int mcm(unsigned int a, unsigned int b); unsigned int Fib(unsigned int n); unsigned int FibRic(unsigned int n); 8
Ricapitolando Raccomandiamo di fare l esercitazione a gruppi di 2, ma accettiamo anche lavori singoli o gruppi da 3 (non da 4) Il programma deve essere in un unico sorgente chiamato es2.s contenente solo le funzioni richieste (non il main) e deve essere adeguatamente commentato Dovrà essere consegnata inoltre una relazione contenente: una descrizione delle funzioni implementate tutto quello che può essere utile alla valutazione dell esercitazione 9
Tempi e modalità di consegna L esercitazione va consegnata almeno 2 settimane prima dell orale La consegna andrà fatta inviando una mail all indirizzo mnzmtt@unife.it (ed in cc gcmfnc@unife.it) con oggetto Esercitazione 2 e contenente il sorgente e la relazione Nel testo della mail e della relazione indicare i componenti del gruppo In caso di domande o chiarimenti non esitate a chiedere (a voce a lezione oppure via mail a mnzmtt@unife.it) 10