(nota sulle VM a 32-bit)

Come indicato nella nota su binario ed esadecimale, un bit è una cifra binaria: 0 o 1. Un numero a 32 bit sarebbe quindi un numero con 32 cifre binarie, da qualche parte tra 0 e 4.294.967.295 decimale. E delle virtual machine si è già parlato. Ma sapere cosa semplicemente "32 bit" e "virtual machine" significano non necessariamente getta molta luce su cosa possa essere una "virtual machine a 32 bit". Con un po' di fortuna, questa nota lo farà.

Ogni computer ha una certa quantità di memoria. La memoria è dove il computer conserva le informazioni. Fisicamente è fatta di chip di silicio, con ogni chip che contiene molti minuscoli pezzi di macchinario che possono variare tra due configurazioni, una che rappresenta lo 0, l'altra che rappresenta l'1: cioè un bit. La maggior parte dei computer ha dei chip di memoria che raggruppano questi bit in insiemi di otto; ogni gruppo di otto bit viene chiamato byte, e può contenere un valore da 00000000 a 11111111, o da 0 a 255 in decimale. Oltre al proprio valore, ogni bit ha un indirizzo. Così quando la CPU riceve un'istruzione che dice "memorizza il numero 73 nella locazione 12", comincia dall'inizio della propria memoria e conta, "Questa è la locazione 0, questa è la locazione 1, questa è la locazione 2..." e ad un certo punto "Ah ah, questa è la locazione 12". Quindi imposta i bit di quella locazione a 01001001 (73 decimale).

Quando eseguite una virtual machine sul vostro computer, la VM chiede al computer di allocare della memoria che poi userà per proprio conto. La VM chiama ogni locazione in memoria con il suo proprio nome. Il nome della VM ed il vero nome nel computer possono non corrispondere; l'interprete si occupa della traduzione. Così il comando della VM "memorizza il numero 73 nella locazione virtuale 12" viene tradotto nel comando del sistema operativo "memorizza il numero 73 nella locazione di memoria reale 12345" (o qualunque sia l'equivalente reale della locazione virtuale 12) e la virtual machine non ha bisogno di sapere quale sia il reale hardware che si sta usando -- può semplicemente usare i propri nomi e lasciare che il SO si occupi dei dettagli.

Le istruzioni della VM sono composte di opcode (la cosa da fare) e operandi (la cosa o le cose a cui farla). Potreste avere una VM con un opcode "@add", ad esempio, che richiede due operandi: una locazione virtuale ed un numero da sommare al numero in quella locazione. Così "@add(10101001,00010111)" significherebbe "vai alla locazione 10101001 (169 decimale, A9 esadecimale) ed aggiungi 00010111 (23 decimale, 17 esadecimale) a qualunque cosa ci sia là dentro". Ora, la Z-machine è una VM a 16 bit, che significa che i suoi operandi sono stati disegnati per accettare operatori che sono lunghi 16 bit. Questo significa che le locazioni non possono avere un indirizzo più grande di 1111111111111111, o 65535 decimale (FFFF hex). Anche se il vostro computer ha moltissime altre locazioni disponibili nella sua memoria, la Z-machine non le può usare perché i suoi operatori non sono in grado di nominarle.

Un'analogia: negli Stati Uniti i numeri di telefono di ogni area hanno il formato XXX-XXXX. Il che significa che ci possono essere, al massimo, dieci milioni di numeri possibili in un'area: da 000-0000 a 999-9999. (In pratica ce ne sono meno, visto che alcuni numeri sono riservati). Ora diciamo che tutti i numeri di una certa area siano stati già assegnati. Potete ancora costruire un edificio in quell'area. Potete ancora comprare un telefono e metterlo in quella casa. Ma non potete chiamare quel telefono, perché ogni numero che avreste potuto assegnarli è già stato preso da un altro telefono. L'unica soluzione è quella di cambiare il formato di numerazione che i numeri di telefono assumono in quel sistema, in modo da aggiungere più cifre.

Questo è quello che le VM a 32 bit come Glulx fanno. Gli opcode di Glulx accettano operandi che sono lunghi 32 bit, in questo modo i giochi che usano Glulx sono in grado di richiamare, nominare ed usare non solo 65536 locazioni di memoria, ma più di quattro miliardi di locazioni, con i nomi che vanno da 00000000 hex a FFFFFFFF hex. Così con Glulx possono essere creati dei giochi che sono molto più grandi di quelli che possono essere creati per la Z-machine.


Ritorna a Glulx e Glulx Inform
O ritorna al sommario