このブログは、旧・はてなダイアリー「檜山正幸のキマイラ飼育記 メモ編」(http://d.hatena.ne.jp/m-hiyama-memo/)のデータを移行・保存したものであり、今後(2019年1月以降)更新の予定はありません。

今後の更新は、新しいブログ http://m-hiyama-memo.hatenablog.com/ で行います。

小さなプログラミング処理系を作る 機能追加

VMないしはそのUIの機能:

  1. 無限走行しないように、リミットを設ける。指定した数のインストラクションを実行したら止まるか、ダイアログを出して聞く。
  2. 外部IO。IOポートを設けて、プリント命令(インストラクション)を追加。プリント命令の仕様は考える。
  3. プログラムをファイルから読む(ロード)、ファイルに書き出す(アンロード)機能。ブラウザ上で「ファイル」が何を意味するかは適当に考える。これはインストラクションではなく、利用者環境の機能。
  4. 比較演算としてeq(等しい)とlt(小さい)をインストラクションセットに入れる。スタックトップとスタックセカンドを比較して、結果のブーリアン(実際は0か1)を積む。仕様の詳細は考える。
  5. >、≦ 、≧ がないので(あえて入れない)、どうするか考える。

プログラム(コード)のプリプロセス:

  1. お尻がコロンの文字列(例: "start:")は、インストラクションではなくてラベルと解釈して、ジャンプ先にラベルを使えるようにする。プリプロセス後はラベルは消えて、ジャンプ先は具体的なコードアドレスになる。
  2. モリーIO(rd, wt)のパラメータに変数記号文字列を使えるようにする。データアドレスであるパラメータに名前文字列が出てきたら、勝手に実アドレスを割り当てる。["rd", "x"] のような書き方が使えるようになる。
  3. プリプロセスの副産物として、シンボルマップを出力する。シンボルマップとは、「ラベルと実コードアドレス」「変数名と実データアドレス」の対応表。これがないと、インスペクトやデバッグができない。