Ngaro een draagbaar virtuele machine voor een dual-stack architectuur. De instructie set is in wezen een subset van Forth. Hoewel beperkt in zijn vermogen tot interactie met het onderliggende besturingssysteem moet voldoende om diverse programma's geschreven worden en uitgevoerd op het.
Het pakket omvat een aantal fundamentele documentatie, volledige broncode, de machine weer compiler, en een paar kleine voorbeelden.
Usage:
./ngaro ImageName
De instructie set is minimalistisch gehouden. De exacte reeks instructies
veranderingen af en toe, maar de volgende lijst is stabiel voor ongeveer een
jaar. (De laatste drie, het omgaan met de poort gebaseerde I / O-model, zijn nieuw)
0 NOP Doet niets
1 LIT Duw de waarde in de volgende cel om de stack
2 DUP Duplicate de top
punt op de stack
3 DROP Drop het bovenste item
op de stack
4 SWAP Exchange de bovenste twee
items op de stack
5 PUSH Duw het bovenste item op
de stapel naar de
adres stack, drop
TOS
6 POP Pop de top punt van
het adres stack off
en zet het op de
data stack
7 CALL Call het adres dat
de volgende letterlijke
komt overeen met
8 JUMP Ga naar het adres
de volgende
letterlijke correspondeert
naar
9; Keer terug naar de beller,
gebruikt met CALL
10> JUMP Voorwaardelijke sprong. Hij
vergelijkt TOS en NOS.
11 Shift-bits rechts
25 0; Exit (en drop) als
TOS is 0
26 1+ Increment TOS door 1
27 1- Decrement TOS door 1
28 IN Lees een poort
29 UIT Store om een haven
30 WAIT Wacht tot een haven-gebaseerde
verzoeken af
Als een niet-ondersteunde opcode wordt aangetroffen, wordt de interal IP register ingesteld op
Eind geheugen. Uitvoering van het beeld code zal stoppen wanneer dit gebeurt.
Een paar aanwijzingen gebruik maken van een van de volgende cel adressen bevatten of
waarden. Dit zijn:
1 LIT
7 CALL
8 JUMP
10> jump
11
Wat is nieuw in deze release:.
- Deze versie brengt bijgewerkte versies van alle implementaties en aanzienlijk bijgewerkte documentatie
- Er zijn nu 14 implementaties geschreven in Python, Ruby, Perl, Common Lisp, x86 Assembly, ANS Forth, JavaScript, Retro, Lua, Java, C, C #, F #, en Go.
Reacties niet gevonden