<H1>Architettura degli Elaboratori a.a. 2011-2012 <SMALL>(canale M-Z)</SMALL></H1> <H2>Homework 2</H2> <DIV style="margin-left:5%; margin-right:5%"> <DIV ALIGN="justify"> Scrivere una procedura (chiamata <code>fsm</code>) in assembly MIPS che prende in input una matrice quadrata di <i>n</i>×<i>n</i> words e un intero <i>k</i> (1 ≤ <i>k</i> ≤ <i>n</i>) e ritorna gli indici di riga e colonna del primo elemento della sottomatrice quadrata <i>k</i>×<i>k</i> di punteggio massimo. La matrice è memorizzata per righe, cioè, gli array delle righe sono posti in memoria uno di seguito all'altro a partire dalla prima riga. La matrice è passata tramite l'indirizzo del primo elemento della prima riga in <code>$a0</code>, la dimensione <i>n</i> in <code>$a1</code> e il parametro <i>k</i> è passato in <code>$a2</code>. Gli indici di riga e colonna del primo elemento della sottomatrice devono essere ritornati in <code>$v0</code> e <code>$v1</code>, rispettivamente. Il punteggio di una sottomatrice si ottiene chiamando una procedura <code>mscore</code> passandogli in <code>$a0</code> l'indirizzo del primo elemento della sottomatrice, in <code>$a1</code> la dimensione della matrice (cioè <i>n</i>) e in <code>$a2</code> la dimensione della sottomatrice (cioè <i>k</i>) e ritorna in <code>$v0</code> il punteggio della sottomatrice (il punteggio è un intero positivo). La procedura <code>mscore</code> non deve essere scritta, si assume che sia stata scritta da qualcun altro (ad es. potrebbe far parte di una libreria). Si conosce solamente l'indirizzo, che è la label <code>mscore</code>, e si sa che la procedura rispetta le convenzioni MIPS per la chiamata di procedure. <br> Il codice della procedura <code>fsm</code> deve essere consegnato su carta. (con matricola, cognome e nome) durante le lezioni del corso entro <b>lunedì 4 giugno</b>. Inoltre, deve soddisfare i seguenti vincoli, pena la nullità: <ul> <li> Deve essere adeguatamente commentato.</li> <li> Deve essere scritto in modo ordinato e chiaramente leggibile.</li> <li> Deve rispettare le convenzioni MIPS sulla chiamata delle procedure. <li> Non deve usare più di 60 istruzioni. </li> </ul> <big><b>[[%ATTACHURL%/homework_2ris.html][Risultati]]</b></big> </div> </div> <H2>Homework 1</H2> <DIV style="margin-left:5%; margin-right:5%"> <DIV ALIGN="justify"> Scrivere una procedura (chiamata <code>scarray</code>) in assembly MIPS che prende in input un array di words e ritorna il punteggio totale dell'array. L'array è passato tramite l'indirizzo del primo elemento in <code>$a0</code> e l'indirizzo dell'ultimo in <code>$a1</code>. Il punteggio totale deve essere ritornato in <code>$v0</code> ed è la somma dei punteggi relativi agli elementi dell'array. Il punteggio di un elemento si ottiene chiamando la procedura <code>score</code>, passandogli in <code>$a0</code> il valore dell'elemento, che ritorna in <code>$v0</code> il punteggio dell'elemento. La procedura <code>score</code> non deve essere scritta, si assume che sia stata scritta da qualcun'altro (ad es. potrebbe far parte di una libreria). Si conosce solamente l'indirizzo, che è la label <code>score</code>, e si sa che la procedura rispetta le convenzioni MIPS per la chiamata di procedure. <br> Il codice della procedura <code>scarray</code> deve essere consegnato su carta (con matricola, cognome e nome) durante le lezioni del corso nei giorni venerdì 30 marzo o lunedì 2 aprile. Inoltre, deve soddisfare i seguenti vincoli, pena la nullità: <ul> <li> Deve essere adeguatamente commentato.</li> <li> Deve essere scritto in modo ordinato e chiaramente leggibile.</li> <li> Deve rispettare le convenzioni MIPS sulla chiamata delle procedure. <li> Non deve usare più di 30 istruzioni. </li> </ul> Si ricordano le convenzioni MIPS per la chiamata di procedure: gli unici registri il cui valore deve essere preservato sono <code>$s0</code>-<code>$s7</code>, <code>$gp</code>, <code>$sp</code>, <code>$fp</code> e <code>$ra</code>, il valore di tutti gli altri registri può essere modificato dalla chiamata ad una procedura. Inoltre, gli unici registri usati per passare dei parametri, ovvero l'input, a una procedura sono <code>$a0</code>-<code>$a3</code> e gli unici registri usati per ritornare dei valori sono <code>$v0</code>, <code>$v1</code>. <br> <br> <big><b>[[%ATTACHURL%/homework_1ris.html][Risultati]]</b></big> </div> </div>
This topic: Architetture2/MZ
>
Architetture2
>
AA11_12
>
AA11_12_HW
Topic revision: r6 - 2012-06-18 - RiccardoSilvestri
Copyright © 2008-2025 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki?
Send feedback