Architettura degli Elaboratori 6 Febbraio 2006
Niente appunti o calcolatrici. Risposte nel foglio di bella copia.
Massima SINTETICITA', l'eccessiva verbosita' verra' considerata negativamente.
Gli esercizi di programmazione in Mic e in IJVM sono obbligatori
Esercizio 1.
(a) Cos'e' l'Interprete in una macchina astratta?
Identificare nella macchina Mic-1 quali sono le parti che corrispondono alla componente Controllo Sequenza.
(b)
Qual e' un possibile procedimento per passare
dalla descrizione di una funzione booleana tramite tabella di verita' ad una
descrizione della stessa funzione come espressione algebrica?
Applicare tale procedimento a
a b | f
--------
0 0 | 1
0 1 | 0
1 0 | 1
1 1 | 1
Esercizio 2
(a)
Ci sono tre schemi differenti per realizzare l'Input/Output nei personal computers.
Dire quali sono e, brevemente, in cosa consistono.
(b)
Descrivere come estendere l'architettura Mic-1 per poter gestire
operazioni
di I/O con interruzioni e Memory-mapped I/O, avendo come periferiche
una tastiera ed una stampante
(praticamente come e' descritto nelle note del corso "Esempio (con
simulatore) di realizzazione di Input/Outpur con interruzioni").
Esercizio 3
(a)
Supponiamo di estendere il linguaggio IJVM con la seguente istruzione
CMPVAR varnum1 varnum2 offset
dove gli argomenti varnum1 e varnum2 sono lunghi 1 byte, mentre offset e'
lungo 2 byte.
Scrivere in Mic-1 il codice (da inserire nel programma che realizza l'interprete IJVM)
che realizza tale istruzione, la cui semantica e' la seguente:
confronta i valori delle due variabili identificate da varnum1 e varnum2 e, se sono
identici, salta all'istuzione distante offset dal byte contente l'opcode dell'istruzione.
Commentare il codice (codice non commentato non verra' valutato).
(b)
Supponiate di avere a disposizione in IJVM un'istruzione GETCH che pone sullo Stack
il primo elemento del buffer circolare relativo alla realizzazione di I/O con interruzioni
di cui al punto 2(b).
Scrivere un metodo in assembly IJVM che restituisca il valore 3n, dove n e'
il primo elemento nel buffer circolare (che si assume rappresenti un numero naturale).
Si puo' assumere di avere a disposizione un metodo mult che esegue il prodotto.
Commentare il codice (codice non commentato non verra' valutato).