Ngaro este o mașină virtuală portabil pentru o arhitectură dual-stack. Setul de instrucțiuni este în esență un subset de Forth. Deși limitat în capacitatea sa de a interacționa cu sistemul de operare care stau la baza, ar trebui să fie suficiente pentru a permite o varietate de programe care urmează să fie scrise și a alerga pe ea.
Pachetul include o documentație de bază, codul sursă complet, compilatorul mașină mai departe, și câteva exemple mici.
Utilizare:
imagename ./ngaro
Setul de instrucțiuni este ținut minimalist. Setul exact de instrucțiuni
Schimbări ocazional, dar lista de mai jos a fost stabil timp de aproximativ o
an. (Ultimele trei, care se ocupă cu I / O modelul bazat pe port, sunt noi)
0 NOP Are nimic
1 LIT Împingeți valoarea în celula următoare pentru a stiva
2 DUP Duplicate sus
articol de pe stiva
3 DROP plasa elementul top
pe stiva
4 SWAP Exchange primele două
articole pe stivă
5 PUSH Împingeți elementul de top pe
stiva la
Adresa stivă, picătură
TOS
6 POP Pop elementul de sus a
adresa stiva off
și pune-l pe
stivă de date
7 CALL Call adresa pe care
următorul literală
corespunde
8 JUMP Salt la adresa
că următoarele
corespunde literale
pentru
9; Întoarceți-vă la apelantului,
utilizat cu CALL
10> Jump Jump condiționată. Ea
compară TOS și NOS.
11 biți Shift dreapta
25 0; Exit (și picătură) în cazul în care
TOS este 0
26 1+ Pas TOS de 1
27 1 TOS decrementare cu 1
28 IN Citește un port
29 OUT Store la un port
Așteptați 30 Așteptați o bază de port
cere pentru a termina
Dacă un opcode neacceptat este întâlnită, registrul IP interal este setat la
sfârșitul memoriei. Executarea codului imaginii va opri atunci când se întâmplă acest lucru.
Câteva instrucțiuni face uz de o celula următoare să conțină adrese sau
valori. Acestea sunt:
1 LIT
7 CALL
8 JUMP
10> salt
11
Ce este nou în această versiune:.
- Aceasta versiune aduce versiuni de toate implementarile și documentația actualizată în mod substanțial actualizat
- În prezent, există 14 de implementări scrise în Python, Ruby, Perl, Common Lisp, x86 Adunării, ANS Forth, JavaScript, Retro, Lua, Java, C, C #, F #, și du-te.
Comentariile nu a fost găsit