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.