Ngaro är en bärbar virtuell maskin för en dual-stack arkitektur. Instruktionsuppsättningen är i huvudsak en delmängd av Forth. Trots begränsade i sin förmåga att interagera med de underliggande OS bör det vara tillräckligt för att tillåta en mängd olika program som ska skrivas och köra på den.
Paketet innehåller en del grundläggande dokumentation, full källkod, maskin fram kompilator, och några små exempel.
Användning:
./ngaro imagename
Instruktionsuppsättningen hålls minimalistisk. Den exakta uppsättning instruktioner
förändringar ibland, men följande lista har varit stabil i ungefär en
år. (Den sista tre, som handlar om portbaserad I / O-modellen, är ny)
0 NOP Gör ingenting
1 LIT Skjut värdet i följande cellen till stapeln
2 DUP Duplicera toppen
punkt på stapeln
3 droppe droppe toppen objektet
på stacken
4 SWAP Byt ut två topp
objekt på stacken
5 PUSH Tryck på översta punkten på
stapeln till
adress stack, släpp
TOS
6 POP Pop toppen post
adressen stack ut
och sätta upp det på
datastacken
7 SAMTAL Ring den adress som
följande bokstavlig
motsvarar
8 JUMP Gå till adressen
att följande
bokstav motsvarar
till
9; Återgå till den som ringer,
användas med CALL
10> JUMP villkorligt hopp. Det
jämför TOS och NOS.
11 Shift bitar höger
25 0; Exit (och släpp) om
TOS är 0
26 1+ Öka TOS från 1
27 1 Minska TOS från 1
28 IN Läs en port
29 OUT Store till en hamn
30 VÄNTA Vänta en port-baserad
begära att avsluta
Om ett stöds opkod påträffas är interal IP registret inställd på
slutet av minnet. Utförandet av bildkoden kommer att stoppa när detta sker.
Några instruktioner använda sig av en följande cell för att innehålla adresser eller
värden. Dessa är:
1 LIT
7 SAMTAL
8 HOPPA
10> zum
11
Vad är nytt i den här versionen.
- Den här versionen ger uppdaterade versioner av alla implementeringar och kraftigt uppdaterad dokumentation
- Det finns nu 14 implementationer skrivna i Python, Ruby, Perl, Common Lisp, x86 Assembly, ANS Forth, JavaScript, Retro, Lua, Java, C, C #, F #, och åk.
Kommentarer hittades inte