Ngaro er en bærbar virtuell maskin for en dual-stack arkitektur. Instruksjonssettet er egentlig en undergruppe av Forth. Men begrenset i sin evne til å interagere med de underliggende OS, bør det være tilstrekkelig til å tillate en rekke forskjellige programmer som skal skrives og kjøres på den.
Pakken inneholder noen grunnleggende dokumentasjon, full kildekode, maskinen frem kompilator, og et par små eksempler.
Bruk:
./ngaro imagename
Den instruksjonssett holdes minimalistisk. Den nøyaktige sett med instruksjoner
endringer til, men denne listen har vært stabil i ca en
år. (De tre siste, arbeider med portbasert I / O-modell, er ny)
0 NOP Betyr ingenting
1 LIT Skyv verdien i følgende celle til stakken
2 DUP Duplicate toppen
element på stakken
3 DROP Drop toppen elementet
på stakken
4 SWAP Veksling de to øverste
elementer på stakken
5 PUSH Skyv den øverste elementet på
stabelen til
adresse stack, slipp
TOS
6 Pop toppen element av
adressen stable off
og sette den på
data stack
7 CALL Call adressen som
følgende bokstave
tilsvarer
8 JUMP Gå til adressen
at følgende
bokstave tilsvarer
til
9; Gå tilbake til den som ringer,
brukes med CALL
10> JUMP Betinget hopp. Det
sammen TOS og NOS.
11 Shift biter rett
25 0; Exit (og slipp) hvis
TOS er 0
26 1+ Økning TOS med 1
27 1- dekrement TOS etter en
28 i Les en port
29 OUT Store til en port
30 VENT Vent til en portbasert
be om å fullføre
Hvis en ustøttet opcode er oppstått, er interal IP register satt til
slutten av minnet. Utførelse av bildekoden vil stanse når dette skjer.
Noen få instruksjoner gjøre bruk av en følgende celle til å inneholde adresser eller
verdier. Disse er:
1 LIT
7 CALL
8 JUMP
10> hopp
11
Hva er nytt i denne utgaven.
- Denne versjonen bringer oppdaterte versjoner av alle implementasjoner og vesentlig oppdatert dokumentasjon
- Det er nå 14 implementeringer skrevet i Python, Ruby, Perl, Common Lisp, x86 Assembly, ANS Forth, Javascript, Retro, Lua, Java, C, C #, F #, og dra.
Kommentarer ikke funnet