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