Ngaro est une machine virtuelle portable pour une architecture à double pile. Le jeu d'instructions est essentiellement un sous-ensemble de Forth. Bien que limité dans sa capacité à interagir avec les OS sous-jacents, il devrait être suffisant pour permettre une variété de programmes à écrire et exécuter sur elle.
Le forfait comprend une documentation de base, le code source complet, le compilateur machine arrière, et quelques petits exemples.
Utilisation:
imagename ./ngaro
Le jeu d'instructions est maintenue minimaliste. L'ensemble précis d'instructions
les changements de temps en temps, mais la liste suivante a été stable pendant environ une
années. (Les trois derniers, traiter avec le modèle basé sur le port I / O, sont nouveaux)
0 NOP Ne fait rien
1 LIT Poussez la valeur dans la cellule suivante à la pile
2 DUP Dupliquer le haut
article sur la pile
3 DROP Drop the élément supérieur
sur la pile
4 SWAP Echange les deux premiers
articles sur la pile
5 Push Push sur l'élément supérieur
l'empilement de la
Adresse pile, déposer
TOS
6 PDP l'élément supérieur de
l'adresse pile off
et le mettre sur la
pile de données
7 APPEL Appel l'adresse que
le littéral suivante
Correspond à
8 Jump Jump à l'adresse
que la suite
correspond littérales
à
9; Retour à l'appelant,
utilisé avec CALL
10> Jump Jump conditionnelle. Il
compare TOS et NSA.
11 bits de décalage à droite
25 0; Exit (déposer) si
TOS est 0
26 1+ incrément TOS par 1
1- 27 Décrément TOS par 1
28 EN Lire un port
29 OUT magasin à un port
30 Attendre Attendre pour une basée sur le port
demander à finir
Si un opcode non supportée est rencontrée, le registre IP interal est réglé sur
la fin de la mémoire. Exécution du code de l'image stopper quand cela arrive.
Quelques instructions font usage d'une cellule suivante à l'adresse contient le ou
des valeurs. Ceux-ci sont:
1 LIT
7 APPEL
8 JUMP
10> saut
11
Ce qui est nouveau dans cette version:.
- Cette version apporte versions de toutes les implémentations et la documentation mise à jour importante mise à jour
- Il ya maintenant 14 implémentations écrits en Python, Ruby, Perl, Common Lisp, Assemblée x86, Forth ANS, JavaScript, Retro, Lua, Java, C, C #, F #, et Go.
Commentaires non trouvées