Architettura degli Elaboratori 11 Giugno 2004

Niente appunti o calcolatrici. Risposte nel foglio di bella copia. Massima SINTETICITÀ, l'eccessiva verbosità verrà considerata negativamente.


Un esercizio di Mic e uno di IJVM vanno svolti obbligatoriamente


Esercizio 1.
(a) Avete cinque righe a disposizione (scritte normali e non una di più) per dirmi perchè è conveniente organizzare a livelli i sistemi di calcolo. Descrivete poi le tecniche di realizzazione di una macchina astratta mediante interpretazione e compilazione.
(b) Abbiamo un Chip di I/O che contiene due registri. Vogliamo che tali registri, utilizzando la tecnica di Memory Mapped I/O, vengano letti e scritti come se fossero, rispettivamente, la prima e l'ultima locazione di memoria dello spazio di indirizzamento disponibile, che si suppone essere di 28 locazioni. Disegnare il circuito combinatorio che prende in Input le 8 linee di Address del bus e che restituisce in output il CS (Chip Select, che supponiamo asserito alto) del nostro Chip di I/O.


Esercizio 2
(a) Supponete di voler aggiungere all'insieme di istruzioni IJVM la nuova istruzione

 
               BI2PU num

che inserisce il valore num in cima allo stack, dove num è un numero rappresentato con 2 byte.
Scrivere un segmento di codice Mic-1 che realizzi tale istruzione. Commentare il codice.
(b) Discutere brevemente delle differenze tra l'architettura Mic-2 e quella Mic-3. Descrivere (sempre in modo conciso) anche i vantaggi di Mic-3 rispetto a Mic2.

 


Esercizio 3
(a) Scrivere in assembly IJVM il codice di un metodo che prenda in input tre argomenti, a, b, c e che restuisca il valore dell'espressione (a+b+7)* c. Supporre di avere a disposizione un metodo assembly IJVM chiamato Multiply che calcoli la moltiplicazione (indicata con * nell'espressione).
(b) È possibile che quello che segue (ovviamente per facilità di lettura non abbiamo scritto tutto in esadecimale) è quello che viene posto nella method area dopo aver tradotto un metodo Java? Ci sono errori o incongruenze, quali, perchè?

 
  0x00 0x02 0x00 0x02
  BIPUSH 74
  ILOAD 6
  IADD
  IADD
  GOTO 5 

 

Esercizio 4
(a) È possibile progettare un codice ad espansione che permetta la codifica di quanto segue in una istruzione di 12 bit? Un registro viene indicato con 3 bit.

Giustificare la risposta.
N.B. ovviamente per istruzione a tre (uno, zero) registri si intende un’istruzione con tre (uno, zero) argomenti, tutti specificati con modalità registro.
(b) Che cos'è una direttiva all'assemblatore? Fornire esempi di direttive all'assemblatore dell'assembly IJVM. A cosa serve, nel processo di assemblaggio per l'assembly IJVM, il calcolo della lunghezza delle istruzioni?