Ngaro jest przenośna maszyna wirtualna dla architektury dual-stack. Zestaw instrukcji jest zasadniczo podzbiorem Forth. Chociaż ograniczony na jego zdolności do wzajemnego oddziaływania z OS bazowych powinna być wystarczająca, aby umożliwić wybór programów do zapisu i uruchomienia go.
Pakiet zawiera podstawowe dokumenty, pełny kod źródłowy, kompilator maszyna dalej, i kilka małych przykładów.
Sposób użycia:
./ngaro nazwa_obrazu
Zestaw instrukcji jest utrzymywana minimalistyczny. Dokładny zestaw instrukcji
od czasu do czasu, ale zmiany Poniższa lista jest stabilny przez około
lat. (Trzy ostatnie, do czynienia z I / O na bazie modelu portu, są nowe)
0 NOP Nic nie robi
1 LIT Naciśnij wartość w następujący komórki do stosu
2 DUP Duplikat góry
element na stosie
3 DROP upuść element góry
na stosie
4 swapów góry dwa
elementów na stosie
5 Push Push najwyższą pozycję na
Stos z
Adres stosu, spadek
TOS
6 POP Pop górny element
Adres stack off
i umieścić go na
Stos danych
7 Call Call adres, który
po dosłowne
koresponduje z
8 JUMP Skok na adres
że po
dosłowne odpowiada
do
9; Powrót do rozmówcy,
używane z CALL
10> JUMP Skok warunkowy. To
porównuje TOS i NOS.
Przesunięcie w prawo 11 bitów
25 0; Exit (i upuść), jeśli
TOS jest 0
26 1+ Przyrost TOS przez 1
27 1- Dół TOS przez 1
28 w Czytaj port
29 z magazynu do portu
30 CZEKAJ Poczekaj na oparciu port-
zażądać, aby zakończyć
Jeśli napotka nieobsługiwany kod operacji, interal rejestr IP jest ustawiony na
koniec pamięci. Wykonanie kodu obrazu zatrzyma, kiedy to nastąpi.
Kilka instrukcje skorzystać z poniższego komórki zawierają adresy lub
wartości. To są:
1 LIT
7 CALL
8 JUMP
10> skok
11
Co nowego w tym wydaniu:.
- Ta wersja przynosi zaktualizowane wersje wszystkich wdrożeń i znacznie aktualizowana dokumentacja
- Nie ma teraz 14 implementacje napisane w Python, Ruby, Perl, Common Lisp, x86 Zgromadzenia, ANS Forth, JavaScript, retro, Lua, Java, C, C #, F #, iw drogę.
Komentarze nie znaleziono