Architettura degli elaboratori, 18 Giugno 2007
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.
I risultati (sia positivi che negativi) verranno
registrati sul portale CEA non appena corretti i compiti.
Chi non intenda accettare un voto basso o desideri fare un orale in caso di voto basso
(se quest'ultimo e' comunque maggiore di 24), deve comunicarlo per tempo al docente
o all'assistente in aula.
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 aula.
Esercizio 1
Ci puo' essere qualche vantaggio nel programmare direttamente in linguaggio assembly?
In quale caso? Perche'?
Esercizio 2
Supponiate di avere un Bus con 4 linee per gli indirizzi e che tali linee
siano collegate al segnale CS di una piccola ROM, come indicato nella figura.
__________ CS
|
AND
_________
| |
OR |
______ |
| | |
| | |
A3 ----x--|----|-------
A2 -------|----|-------
A1 -------x----|-------
A0 ------------x-------
Ovviamente una CPU collegata a tale bus potra' leggere in uno spazio di
indirizzamento di 24 parole (con indirizzi da 0 a 24-1). Di queste, quali sono quelle che
fisicamente appartengono alla ROM sopra citata?
Giustificare la risposta.
Esercizio 3
Perche' l'istruzione IJVM puro GOTO 2, non puo' mai appartenere a codice prodotto da
un corretto processo di traduzione di codice assembly IJVM?
Esercizio 4
Supponiamo di voler introdurre in IJVM un certo livello di Ortogonalita' tra
opcodes (codici operativi) e modalita' di indirizzamento.
Per esempio, vogliamo che IADD possa lavorare con due differenti
modalita' di indirizzamento: stack e immediato.
I due byte successivi ad IADD indicheranno le modalita' di indirizzamento
degli operandi, a cui seguiranno 0, 1, o 2 byte nel caso ci siano 0, 1 o due operandi
con modalita' immediata. Il byte 0x00 indichera' indirizzamento a stack,
il byte 0x01 quello immediato. Il risultato sara' sempre inserito in cima allo
stack. Gli operandi a stack verranno eliminati dallo stack.
Scrivere il microcodice Mic-2 (Due!) che implementa questa nuova versione
di IADD.
Esercizio 5
In Mic-2 abbiamo i registri MBR1 ed MBR2 (nelle due versioni, con segno e senza segno)
con le funzionalita' che conosciamo.
Sarebbe possibile fare in modo di avere solamente MBR2? Giustificare.
Aiutino: 4 freccette bianche sotto...
Esercizio 6
Considerate un metodo Java che prenda in input due parametri formali k e j (numeri interi)
e che restituisca (3*k)+4 se j e' uguale a zero e j-1 altrimenti.
Scrivere il codice assembly IJVM che traduca tale metodo ed il segmento di codice che traduca la chiamata di tale metodo con parametri attuali 5 e 7.