Scritto di Architettura degli elaboratori 2, canale EO 19/06/09 Prof. Annalisa Massini, Dott. Simone Silvestri COMPITO B Prima parte Esercizio 1 (10 punti) Scrivere un programma in assembler MIPS che legga in input da tastiera 3 valori, siano questi a, b, c e calcoli: 7(a+b+c)2 Non è ammesso semplificare la formula. Si deve specificare chiaramente il registro che conterrà il risultato. Si ricorda che il codice della chiamata a sistema per la lettura di un intero è 5. Esercizio 2 (20 punti) Scrivere un programma in assembler MIPS che prenda in input da tastiera un numero naturale n e calcoli l’n-esimo termine della seguente successione: a0 = 1 ai+1 = 2 ai + 3, per i > 0 Seconda parte Esercizio 1 (15 punti) Scrivere un programma in assembler MIPS che allochi in memoria una matrice M di 4 righe e 4 colonne, contenente valori interi arbitrari, e due word contenenti il numero di righe e quello di colonne. Il programma deve stampare gli indici i, j degli elementi della matrice per cui: M[i,j] = 3ij, con i = 0,..,3 e j = 0,…,3 Il programma deve ovviamente funzionare per matrici di dimensione arbitraria e contenti valori interi arbitrari. Non è richiesto l’utilizzo di funzioni. Esercizio 2 (15 punti) Diciamo che una parola è sbilanciata a sinistra se il numero di 1 nella prima metà (bit 0 – 15) è maggiore di quello della seconda (bit 16 – 31). Scrivere un programma in assembler MIPS che allochi in memoria una word contente un valore arbitrario intero e dica se la parola è sbilanciata a sinistra. Il programma deve far uso di una funzione estrai_bit(w, i) che presa una word w ed un indice i compreso in [0, 31] ritorni il valore del bit in posizione i nella word w.