Ngaro er en bærbar virtuel maskine til en dual-stack arkitektur. Instruktionssæt er hovedsagelig en delmængde af Forth. Dog begrænset i sin evne til at interagere med de underliggende OS, bør det være tilstrækkeligt til at tillade en række programmer, der skal skrives og køres på den.
Pakken indeholder nogle grundlæggende dokumentation, fuld kildekode, maskinen frem compiler, og et par små eksempler.
Anvendelse:
./ngaro ImageName
Instruktionen sæt holdes minimalistisk. Den nøjagtige sæt af instruktioner
ændringer lejlighedsvis, men den følgende liste har været stabil i omkring et
år. (De sidste tre, der beskæftiger sig med port-baserede I / O model er ny)
0 NOP Er intet
1 LIT Skub værdien i følgende celle til stakken
2 DUP Duplicate toppen
punkt på stakken
3 DROP Drop den øverste post
på stakken
4 SWAP Exchange to top
elementer på stakken
5 PUSH Skub den øverste punkt på
stakken til
adresse stack, drop
TOS
6 POP Pop øverste punkt på
adressen stable off
og sætte det på
data stack
7 CALL Kald den adresse,
følgende bogstavelige
svarer til
8 JUMP Hop til adressen
at følgende
bogstavelige svarer
til
9; Vend tilbage til den, der ringer,
anvendes med CALL
10> JUMP Betinget spring. Det
sammenligner TOS og NOS.
11 Skift bits højre
25 0; Exit (og slip), hvis
TOS er 0
26 1+ Increment TOS af 1
27 1- Decrement TOS med 1
28 IN Læs en havn
29 OUT Store til en havn
30 WAIT Vent en port-baseret
anmode om at afslutte
Hvis et ikke-understøttet opcode er stødt på, er den interal IP register indstillet til
udgangen af hukommelsen. Udførelse af billedet kode vil standse, når dette sker.
Et par instruktioner gøre brug af en følgende celle til at indeholde adresser eller
værdier. Disse er:
1 LIT
7 CALL
8 JUMP
10> jump
11
Hvad er nyt i denne udgivelse:.
- Denne version bringer opdaterede versioner af alle implementeringer og væsentligt opdateret dokumentation
- Der er nu 14 implementeringer skrevet i Python, Ruby, Perl, Common Lisp, x86 Assembly, ANS Forth, JavaScript, Retro, Lua, Java, C, C #, F #, og Go.
Kommentarer ikke fundet