Ngaroはデュアルスタックアーキテクチャのための携帯用の仮想マシンです。命令セットは、基本的にフォースのサブセットです。基礎となるOSと相互作用する能力に限界が、それは様々なプログラムが書き込まれ、その上で実行されることを可能にするのに十分であるべきです。
パッケージには、いくつかの基本的なドキュメント、完全なソースコード、機械等のコンパイラ、およびいくつかの小さな例が含まれています。
使用法:
./ngaro imagenameの
命令セットは、最小限に維持されます。説明書の正確なセット
時折変更されますが、次のリストは、約のために安定しています
年。 (最後の3つは、ポートベースのI / Oモデルを扱う、新しいです)
0 NOPは何もしません
1 LITは、スタックに次のセルの値をプッシュ
2 DUP重複トップ
スタック上のアイテム
3 DROPドロップ先頭の項目
スタック上
4スワップ取引上の2つの
スタック上の項目
5 PUSHは、一番上の項目を押してください
のスタック
アドレス·スタック、ドロップ
TOS
6 POPは、最上位のアイテムをポップ
アドレスはオフスタック
と上に置きます
データ·スタック
7 CALLは、そのアドレスを呼び出し
次のリテラル
に対応
アドレスに8 JUMPジャンプ
次のこと
リテラル対応
へ
9;呼び出し元に戻り、
CALLとともに使用
10>条件付きジャンプをジャンプします。それ
TOSとNOSを比較します。
11シフトビット右
25 0;終了(&ドロップ)の場合
TOSは0です
26 1による1+インクリメントTOS
1で27 1-デクリメントTOS
読む28ポート
ポートへの29のOUTストア
ポートベースのための30のWAIT待ち
終了する要求
サポートされていないオペコードが発生した場合は、interal IPレジスタは次のように設定されています
メモリの終わり。この問題が発生した場合の画像のコードの実行が停止します。
いくつかの命令はアドレスを格納するための次のセルを利用したり、
値。これらは:
1 LIT
7 CALL
8 JUMP
10>ジャンプ
11
この何、このリリースで追加されました。
このバージョンは、すべての実装の更新されたバージョンと、実質的に更新されたドキュメントをもたらします。
PythonやRubyやPerlやCommon Lispの、x86のアセンブリ、ForthのANSは、JavaScript、レトロ、LuaのはJava、C、C#、F#の、および移動で書かれた14の実装が存在することになります。
コメントが見つかりません