20 May 2011 PROGETTO ASSEMBLY: REQUISITI, SPECIFICHE, VALUTAZIONE, ESEMPI. I. Frosio 1
PROGETTO ASSEMBLY -REQUISITI Registri i del MIPS, convenzioni i per il loro utilizzo; Controllo del flusso (for, while, if then else, switch); Chiamate a procedure semplici e annidate, utilizzo dello stack ove necessario; Procedure ricorsive (diverse da quelle già implementate a lezione), utilizzo dello stack; Utilizzo della memoria (array di dimensione minima: 4 elementi) per l immagazzinamento ed il reperimento di dati; Codici eccezione, exception handler (solo orale). 2
PROGETTO ASSEMBLY -SPECIFICHE Progetto INDIVIDUALE. Argomento del progetto: a scelta dello studente, DEVE essere approvato dal docente. Vengono forniti 3 esempi (NB. Si prega di non reimplementare uno di questi esempi). Approvazione argomento del progetto: durante le ore di esercitazione, oppure e-mail (frosio@dsi.unimi.it). it) Consegna del progetto - tempistica: Entro??? <tenere controllato il sito web>; Entro il giorno dell appello che si intende sostenere. Consegna del progetto - modalità: E-mail a frosio@dsi.unimi.it; Oggetto e-mail: Progetto Assembly <Cognome Nome Matricola> (ad esempio, "Progetto Assembly Fabio Rossi 123456"). NB Progetti non conformi alle specifiche di cui sopra NON 3 verranno valutati.
PROGETTO ASSEMBLY -SPECIFICHE Il progetto deve essere caratterizzato da: 1) Presenza di una procedura ricorsiva; 2) Utilizzo della memoria per l immagazzinamento dei dati (array con almeno 4 elementi) 3) Deve essere presente un interfaccia che permetta l inserimento di dati e / o la visualizzazione dei dati prima / dopo l elaborazione elaborazione. 4) Relazione (max una pagina di testo contenente la specifica del progetto (cosa fa, che input accetta, che output restituisce), le scelte adottate e le possibili migliorie; NB Progetti non conformi alle specifiche di cui sopra 4 NON verranno valutati.
PROGETTO ASSEMBLY -SPECIFICHE Procedura ricorsiva: una delle procedure utilizzate per l elaborazione dei dati deve necessariamente essere ricorsiva, ovvero deve chiamare se stessa. La memoria deve essere utilizzata per l immagazzinamento dei dati, ad esempio un array in memoria statica può essere utilizzato per immagazzinare i dati prima / dopo l elaborazione. La consolle deve essere utilizzata per chiedere all utente di inserire dati o parametri di elaborazione, e per fornire all utente l output dell elaborazione. 5
PROGETTO ASSEMBLY -SPECIFICHE Il progetto sarà dunque composto da: Progetto.asm -> file assembly con il codice del progetto scritto dallo studente; Relazione -> file.doc o.pdf con relazione di progetto. Questi due file, compressi in formato.rar o.zip, verranno inviati al docente per e-mail. Nome del file.rar /.zip: Progetto Assembly <Cognome Nome Matricola>.rar (ad esempio, "Progetto Assembly Fabio Rossi 123456.rar"). 6
PROGETTO ASSEMBLY -VALUTAZIONE Verrà valutata in primis la corretta funzionalità del codice. In presenza di errori di funzionamento (crash, risultati inattesi,...) il progetto non verrà valutato. Codice non commentato in maniera esauriente NON verrà valutato. Esempio di codice correttamente commentato: # Read number 1 ($t1) li $v0, 4 # Select print_string la $a0, string2 # $a0 contains the address of string1 syscall # launch print_string li $v0, 5 # Select read_int syscall # launch read_ int (in $v0) add $t1, $v0, $zero # $t1 = $v0 # Read number 2 ($t2) li $v0, 4 # Select print_string la $a0, string2 # $a0 contains the address of string1 syscall # launch print_string li $v0, 5 # Select read_int syscall # launch read_int (in $v0) add $t2, $v0, $zero # $t2 = $v0 7
PROGETTO ASSEMBLY -VALUTAZIONE Esempio di codice non correggibile: li $v0, 4 # $v0 = 4 la $a0, string2 syscall li $v0, 5 #$v0= 5 syscall add $t1, $v0, $zero # $t1 = $v0 li $v0, 4 #$v0=4 la $a0, string2 syscall li $v0, 5 # $v0 = 5 syscall add $t2, $v0, $zero # $t2 = $v0 8
PROGETTO ASSEMBLY -VALUTAZIONE Verranno valutati positivamente: Il corretto utilizzo dei registri (saved / temporary / reserved /...); L ottimizzazione nell utilizzo dei registri; Il corretto utilizzo dello stack per la chiamata delle procedure; L ottimizzazione nell uso dello stack; La completezza dell informazione fornita all utente tramite la consoce riguardo l eccezione verificatesi; La semplicità del codice; La semplicità d uso dell interfaccia; La chiarezza e l esaustività della relazione. 9
ESEMPIO 1 DATABASE STUDENTI In memoria vengono collocate le informazioni relative ad un certo numero di studenti (nome, cognome, matricola,...); Possibilità di visualizzare la lista degli studenti; Possibilità di ordinare la lista degli studenti, ad esempio per numero di matricola, mediante una procedura ricorsiva; (Possibilità di accedere all i-esimo studente della lista); (Possibilità di ordinare gli studenti secondo altri criteri);... 10
ESEMPIO 2 SERIE NUMERICA Codice ricorsivo per il calcolo di un serie numerica floating point o intera; Inserimento di parametri della serie da parte dell utente (es. numero elementi, altri parametri della serie,...) Immagazzinamento in memoria dei dati della serie; Possibilità di visualizzare i dati della serie, dalla posizione i-esima alla posizione j-esima;... 11
ESEMPIO 3 CHE GIORNO ERA? All utente viene chiesto di inserire una o più date, viene inoltre chiesto di specificare la data odierna e il giorno della settimana odierno. Procedura ricorsiva per il calcolo del giorno della settimana corrispondente alla data inserita. Utilizzo della memoria per contenere il numero di giorni per ogni mese dell anno. Si considerano anni bisestili tutti quelli divisibili per 4. (Eccezioni agli anni bisestili)... 12
PROSSIMA ESERCITAZIONE In aula per l approvazione dei progetti. In aula per chiarimenti. In aula per la scrittura del progetto. 13