Scrivere una procedura (chiamata
fsm
)
in assembly MIPS che prende in input una matrice quadrata di
n×
n words
e un intero
k (1 ≤
k ≤
n) 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