SOTTOPROGETTO IJVM-3

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.

Esempio 1
Esempio 2

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.
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:

  • emulatore: mic1sim
  • microinterprete modificato
  • assemblatore ijvmasm
  • editor di testi

  • COMPITI D'ESAME:
    Per questo esercizio dovete consegnare una relazione che contenga:

  • il codice commentato
  • descrizione dell'algoritmo usato
  • descrizione sintetica delle prove effettuate per testare il programma