Architettura degli elaboratori, 5 Luglio 2005

  • Non e' ammesso l'uso di alcun testo, appunti o calcolatrici. Le risposte vanno scritte nel foglio di bella copia. Si raccomanda la massima SINTETICITA'. L'eccessiva verbosita' verra' considerata negativamente.
  • Dopo una settimana dalla pubblicazione dei risultati, i voti (quelli positivi) verranno registrati. Chi non intende accettare il voto o desidera fare l'orale (se il voto e' maggiore di 24), deve comunicarlo per tempo al docente.
  • Gli iscritti alla laurea triennale debbono essersi prenotati sul portale studenti del nostro ateneo, in caso cio' non sia stato fatto fatelo immediatamente presente al docente o all'assistente in aulae.
  • Coloro che debbono sostenere l'esame da 9 crediti, uno volta superato lo scritto dovranno sostenere un orale sulla parte del programma del loro anno di corso non coperto dal programma di quest'anno.
    Esercizio 1
    (a) Discutere brevemente delle architetture RISC e CISC, vantaggi e svantaggi.
  • (b) Dire con estrema chiarezza cosa si intende per realizzazione di una Macchina Astratta per Traduzione e per Interpretazione.
    Perche' non si puo' realizzare una MA per traduzione su una macchina realizzata in hardware?

    Esercizio 2
    (a) Cosa si intende per arbitraggio decentralizzato di un Bus? Descrivere l'arbitraggio che utilizza la "daisy chain". E' in arbitraggio centralizzato o decentralizzato?

    (b) Supponete di voler aggiungere all'insieme di istruzioni IJVM la nuova istruzione
    	PLURIDUP num
    che duplica il valore presente in cima allo stack per un numero di volte pari a num (num e' sempre un numero non negativo rappresentato con un byte).
    Per esempio, l'effetto di eseguire PLURIDUP 3 e' lo stesso che eseguire DUP DUP DUP. L'effetto di PLURIDUP 0 e' nullo.
    Scrivere un segmento di codice Mic-1 che realizzi l'istruzione PLURIDUP num.
    Commentare il codice
    . Codice non commentato non verra' preso in considerazione.

    Esercizio 3
    (a) Tradurre in Mic-1 binario la seguente istruzione Mic-1 mal:
           LV=MAR=MDR; if (Z) goto A; else goto B; rd 

    Dove A corrisponde all'indirizzo 111001011.
    (b) Supponendo di avere gia' sviluppato il codice IJVM dei metodi mult e div, che realizzano, rispettivamente, la moltiplicazione e la divisione intera, scrivere il codice assembly IJVM di un metodo che riceva a, b e c come parametri formali e restuisca il valore dell'espressione ((a*b)+7) div c.
    Se traducessimo tale codice in bytecode per poterlo memorizzare nella method area ed eseguirlo, quale sara' il valore dei primi 2 byte?
    Commentare il codice. Codice non commentato non verra' preso in considerazione.