Laboratorio 6 - MIPS 2 - Esercizio SPIM

 

Gli  array quad3 e quad4  riportati di seguito rappresentano un quadrato magico 3x3 ed un quadrato magico 4x4.  In un quadrato magico i totali di riga, di colonna e delle due diagonali hanno sempre lo stesso valore.
Come esercizio realizzare in MIPS i seguenti punti:

  • Stampare il contenuto della cella 3,2 di quad4.
  • Leggere i valori degli indici i  e j  e stampare quad4[i,j].
  • Scrivere la funzione
        
    int somma_riga_i(mat,dim,i)
    per calcolare la somma della riga i di un quadrato magico; alla funzione vengono passati gli argomenti: mat indirizzo base del quadrato, dim  dimensione del quadrato e i indice di riga.
  • In analogia al punto precedente scrivere la funzione
          
    int somma_collonna_j (mat,dim,j)
    per calcolare la somma della colonna
    j di un quadrato magico.
  • Scrivere la funzione
          
    int somma_diagonale_p(mat,dim)
     per calcolare la somma della diagonale principale di un quadrato magico.
  • Scrivere la funzione
          
    int somma_diagonale_s(mat,dim)
     per calcolare la somma della diagonale secondaria di un quadrato magico.
  • Verificare il corretto funzionamento di ogni funzione sul quadrato magico quad3 di dimensione  3X3  e sul quadrato magico  quad4 di dimensione 4X4.
     
  • Facoltativo: (1)  calcolare la trasposta del quadrato magico; (2) verificare che quad3 e quad4 siano effettivamente dei quadrati magici; (3) verificare se il quadrato magico รจ perfetto: se gli elementi  sono gli interi da 1 a dim2.

         .data

quad3:
     .word 8, 1, 6
     .word 3, 5, 7
     .word 4, 9, 2

quad4:
     .word 16,  3,  2, 13
     .word  5, 10, 11,  8
     .word  9,  6,  7, 12
     .word  4, 15, 14,  1

Per sviluppare l'esercizio si suggerisce di utilizzare il file eseAs2.s fornito come schema di riferimento per il programma MIPS richiesto nell'esercizio.

 

: