Ngaro adalah mesin virtual portabel untuk arsitektur dual-stack. Set instruksi pada dasarnya adalah bagian dari Forth. Meskipun terbatas dalam kemampuannya untuk berinteraksi dengan OS yang mendasari, itu harus cukup untuk memungkinkan berbagai program yang akan ditulis dan berjalan di atasnya.
Paket termasuk beberapa dokumentasi dasar, kode sumber penuh, compiler mesin sebagainya, dan contoh-contoh kecil.
Penggunaan:
imagename ./ngaro
Set instruksi disimpan minimalis. Set yang tepat dari instruksi
perubahan kadang-kadang, tapi daftar berikut telah stabil selama sekitar satu
tahun. (Tiga terakhir, berurusan dengan I / O Model berbasis port, yang baru)
0 NOP Apakah ada
1 LIT Dorong nilai di sel berikut untuk stack
2 DUP Duplikat atas
item pada stack
3 DROP Jatuhkan item atas
pada stack
4 SWAP Efek kedua atas
item pada stack
5 PUSH Dorong item atas pada
tumpukan ke
alamat stack, menjatuhkan
TOS
6 POP Pop item atas
alamat tumpukan off
dan meletakkannya di
Data tumpukan
7 PANGGILAN Panggil alamat yang
literal berikut
sesuai dengan
8 JUMP Langsung ke alamat
bahwa berikut
berkoresponden literal
untuk
9; Kembali ke pemanggil,
digunakan dengan PANGGILAN
10> JUMP melompat Bersyarat. Saya T
membandingkan TOS dan NOS.
11 Pergeseran bit yang tepat
25 0; Exit (dan drop) jika
TOS adalah 0
26 1+ Kenaikan TOS oleh 1
27 1- Pengurangan TOS oleh 1
28 IN Baca port
29 OUT Store untuk port
30 WAIT Tunggu berbasis port-
meminta untuk menyelesaikan
Jika opcode tidak didukung ditemui, interal IP mendaftar diatur ke
akhir memori. Pelaksanaan kode gambar akan menghentikan ketika hal ini terjadi.
Beberapa petunjuk menggunakan sebuah sel berikut mengandung alamat atau
nilai-nilai. Ini adalah:
1 LIT
7 PANGGILAN
8 JUMP
10> melompat
11
Apa yang baru dalam rilis ini:.
- versi ini mengusung versi update dari semua implementasi dan dokumentasi diperbarui secara substansial
- Sekarang ada 14 implementasi ditulis dengan Python, Ruby, Perl, Common Lisp, Majelis x86, ANS Forth, JavaScript, Retro, Lua, Java, C, C #, F #, dan Buka.
Komentar tidak ditemukan