Il sottoprogetto è diviso in due parti:
PARTE NUMERO 1
Scrivere un programma IJVM che legge dalla tastiera una sequenza di
caratteri terminata dal carattere `.', interpreta i caratteri (se caratteri
corrispondenti alle cifre decimali) come un numero in base 10 (positivo
o negativo) e ne calcola la rappresentazione Floating Point normalizzata
in precisione singola (su 32 bit) secondo lo standard IEEE 754. I numeri
da rappresentare
sono SOLO quelli SENZA cifre decimali (ovvero gli interi), ad esempio:
233, -98834, 12, -3 etc.
Tale rappresentazione prevede un bit per il segno, 8 bit per l'esponente (memorizzato usando la notazione eccesso 127) e 23 bit per la frazione.
Segno Esponente Punto Frazione
[_] [ _ _ _ _ _ _ _ _ ] . [ _ _ _ _ _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _ _ _ ]
31 30
23 22
0
P
A R O L
A D I
3 2 B
I T
In questo modo il valore del numero rappresentato si ottiene come
(segno) * 2 ^ (Exp - 127) * (1 + b22*2^(-1) + b21*2^(-2) + ... + b0*2^(-23) )
dove:
segno=+1 se b31=0
segno=-1 se b31=1
Exp e' ottenuto interpretando gli 8 bit del campo esponente come un
numero senza segno, ovvero
Exp = b23*2^(0)+b24*2^(1)+ ... +b30*2^(7)
e b22,b21, ... , b0 sono i bit della rappresentazione della frazione.
Prevedere che il programma accetti in ingresso i valori +- Inf scegliendo
autonomamente la codifica dei caratteri in ingresso che li rappresentano.
Per chiarimenti ed approfondimenti sulla notazione Floating Point secondo
lo standard IEEE 754 fare riferimento all'Appendice B del libro di testo.
PARTE NUMERO 2
Scrivere un programma IJVM che accetti in ingresso due sequenze come
nella PARTE NUMERO 1 ed un
operatore che può essere solo la somma (carattere +) o la moltiplicazione
(carattere *), effettui la relativa operazione
sulle rappresentazioni IEEE 754 dei numeri in ingresso e ne stampi
il risultato (che deve essere anch'esso in formato IEEE 754) sullo standard
out dell'emulatore.
Il programma dovra` necessariamente fare uso del microinterprete mic2ijvm.mal e del file di configurazione ijvm.conf opportunamente modificato per includere le nuove istruzioni IJVM, nonche' prevedere una strutturazione in metodi. In particolare, si dovranno usare un metodo per la lettura dei caratteri (il cui nome deve essere getch) ed un metodo per il calcolo della rappresentazione Floating Point che restituisce in cima allo stack la parola di 32 bit che rappresenta il numero letto in ingresso. (il cui nome deve essere convert_to_IEEE_754). Inoltre, prevedere l'adeguato output sulla finestra standard out dell'emulatore.
STRUMENTI DI LAVORO:
COMPITI D'ESAME:
Per questo esercizio dovete consegnare una relazione che contenga: