小さなプログラミング処理系を作る 機能追加
VMないしはそのUIの機能:
- 無限走行しないように、リミットを設ける。指定した数のインストラクションを実行したら止まるか、ダイアログを出して聞く。
- 外部IO。IOポートを設けて、プリント命令(インストラクション)を追加。プリント命令の仕様は考える。
- プログラムをファイルから読む(ロード)、ファイルに書き出す(アンロード)機能。ブラウザ上で「ファイル」が何を意味するかは適当に考える。これはインストラクションではなく、利用者環境の機能。
- 比較演算としてeq(等しい)とlt(小さい)をインストラクションセットに入れる。スタックトップとスタックセカンドを比較して、結果のブーリアン(実際は0か1)を積む。仕様の詳細は考える。
- >、≦ 、≧ がないので(あえて入れない)、どうするか考える。
プログラム(コード)のプリプロセス:
- お尻がコロンの文字列(例: "start:")は、インストラクションではなくてラベルと解釈して、ジャンプ先にラベルを使えるようにする。プリプロセス後はラベルは消えて、ジャンプ先は具体的なコードアドレスになる。
- メモリーIO(rd, wt)のパラメータに変数記号文字列を使えるようにする。データアドレスであるパラメータに名前文字列が出てきたら、勝手に実アドレスを割り当てる。["rd", "x"] のような書き方が使えるようになる。
- プリプロセスの副産物として、シンボルマップを出力する。シンボルマップとは、「ラベルと実コードアドレス」「変数名と実データアドレス」の対応表。これがないと、インスペクトやデバッグができない。