Architettura degli Elaboratori a.a. 2011-2012 (canale M-Z)

Homework 2

Scrivere una procedura (chiamata fsm) in assembly MIPS che prende in input una matrice quadrata di n×n words e un intero k (1 ≤ kn) e ritorna gli indici di riga e colonna del primo elemento della sottomatrice quadrata k×k 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 $a0, la dimensione n in $a1 e il parametro k è passato in $a2. Gli indici di riga e colonna del primo elemento della sottomatrice devono essere ritornati in $v0 e $v1, rispettivamente. Il punteggio di una sottomatrice si ottiene chiamando una procedura mscore passandogli in $a0 l'indirizzo del primo elemento della sottomatrice, in $a1 la dimensione della matrice (cioè n) e in $a2 la dimensione della sottomatrice (cioè k) e ritorna in $v0 il punteggio della sottomatrice (il punteggio è un intero positivo). La procedura mscore 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 mscore, e si sa che la procedura rispetta le convenzioni MIPS per la chiamata di procedure.
Il codice della procedura fsm deve essere consegnato su carta. (con matricola, cognome e nome) durante le lezioni del corso entro lunedì 4 giugno. Inoltre, deve soddisfare i seguenti vincoli, pena la nullità:
  • Deve essere adeguatamente commentato.
  • Deve essere scritto in modo ordinato e chiaramente leggibile.
  • Deve rispettare le convenzioni MIPS sulla chiamata delle procedure.
  • Non deve usare più di 60 istruzioni.
Risultati

Homework 1

Scrivere una procedura (chiamata scarray) 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 $a0 e l'indirizzo dell'ultimo in $a1. Il punteggio totale deve essere ritornato in $v0 ed è la somma dei punteggi relativi agli elementi dell'array. Il punteggio di un elemento si ottiene chiamando la procedura score, passandogli in $a0 il valore dell'elemento, che ritorna in $v0 il punteggio dell'elemento. La procedura score 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 score, e si sa che la procedura rispetta le convenzioni MIPS per la chiamata di procedure.
Il codice della procedura scarray 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à:
  • Deve essere adeguatamente commentato.
  • Deve essere scritto in modo ordinato e chiaramente leggibile.
  • Deve rispettare le convenzioni MIPS sulla chiamata delle procedure.
  • Non deve usare più di 30 istruzioni.
Si ricordano le convenzioni MIPS per la chiamata di procedure: gli unici registri il cui valore deve essere preservato sono $s0-$s7, $gp, $sp, $fp e $ra, 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 $a0-$a3 e gli unici registri usati per ritornare dei valori sono $v0, $v1.

Risultati


This topic: Architetture2/MZ > Architetture2 > AA11_12 > AA11_12_HW
Topic revision: r6 - 2012-06-18 - RiccardoSilvestri
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback