In che modo tipicamente i linguaggi interpretati rappresentano i numeri in virgola mobile nel loro bytecode? Ad esempio, supponiamo di avere un programma Java con la linea
double a = 3.0;
Che aspetto ha il 3.0
nel bytecode del programma? Vedo due possibilità:
1) Scrivere la rappresentazione a livello di bit del numero in memoria nel bytecode, e quindi semplicemente rileggerlo in memoria quando ne abbiamo bisogno. Ci sono probabilmente problemi con la portabilità qui (la dimensione di double
su macchine diverse può variare, quindi come possiamo memorizzare un numero in bytecode in modo portabile?).
2) Scrivi una rappresentazione canonica del numero nel bytecode che può essere decodificato al momento dell'esecuzione del programma. La stringa letterale 3.0
potrebbe servire a questo scopo qui, ma poi stiamo sprecando tempo di esecuzione per l'analisi di un numero in virgola mobile durante il runtime.
Quindi la mia domanda è: quale strategia è più comune / efficiente / migliore? Puoi sentirti libero di citare esempi tratti da diversi linguaggi interpretati che compili fino al bytecode (Python, Lua, ecc.), O semplicemente indicarmi la direzione di alcune risorse di alcuni articoli pertinenti se è necessario (sono stato Googling piuttosto bit, ma poche macchine virtuali sono ben documentate).