Ngaro è una macchina virtuale portatile per una architettura dual-stack. Il set di istruzioni è essenzialmente un sottoinsieme di Forth. Sebbene limitato nella sua capacità di interagire con il sistema operativo di base, dovrebbe essere sufficiente a consentire una varietà di programmi da scrivere ed eseguire su di esso.
Il pacchetto comprende un po 'di documentazione di base, il codice sorgente completo, il compilatore della macchina avanti, e alcuni piccoli esempi.
Uso:
nomeimmagine ./ngaro
Il set di istruzioni è tenuto minimalista. L'insieme esatto di istruzioni
modifiche di tanto in tanto, ma la seguente lista è stata stabile per circa un
anno. (Gli ultimi tre, che fare con il modello di I / O port-based, sono nuovo)
0 NOP Fa niente
1 LIT Spingere il valore nella cella seguente alla pila
2 DUP Duplicare il top
elemento allo stack
3 GOCCIA goccia la prima voce
in pila
4 SWAP Scambio le prime due
elementi della pila
5 PUSH Spingere la prima voce su
lo stack al
indirizzo pila, goccia
TOS
6 pop pop la prima voce di
l'indirizzo pila off
e metterlo sulla
stack dei dati
7 CALL Chiama l'indirizzo che
il seguente letterale
corrisponde a
8 JUMP Salta all'indirizzo
che la seguente
corrisponde letterali
a
9; Ritorna al chiamante,
utilizzato con CALL
10> JUMP Salto condizionato. Esso
confronta TOS e NOS.
11 bit spostamento a destra
25 0; Exit (and drop) se
TOS è 0
26 1+ Incrementa TOS da 1
27 1- TOS decremento di 1
28 IN Leggere un porto
29 OUT Store per una porta
30 WAIT Attendere una base port-
chiedere per finire
Se viene rilevato un codice operativo non supportato, il registro IP interal è impostato su
la fine della memoria. L'esecuzione del codice dell'immagine si fermerà quando questo accade.
Alcune istruzioni fanno uso di una cella seguente contenere indirizzi o
valori. Questi sono:
1 LIT
7 CALL
8 JUMP
10> salto
11
Cosa c'è di nuovo in questa versione:.
- Questa versione introduce le versioni di tutte le implementazioni e la documentazione sostanzialmente aggiornati aggiornato
- Ora ci sono 14 implementazioni scritto in Python, Ruby, Perl, Common Lisp, x86 Assemblea, ANS Forth, JavaScript, Retro, Lua, Java, C, C #, F #, e Go.
I commenti non trovato