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

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

小さなプログラミング処理系を作る

参考:

状況:

  • 実際のコンピュータを分解してもよくわからない。
  • CPUの多様性は減っている。一様化していてツマラナイかも。
  • プログラミング言事言語処理系はいくらでもある。
  • 仮想ナントカがあふれかえっている。
  • 本物(実体)と仮想(偽物、模倣)の区別が付かない

ハードウェアをいじるのは難しいが、代わりにソフトウェアによるエミュレーション・シミュレーションは容易。コンピュータもソフトウェアにより自由に作れる。

が、そもそもコンピュータって何?

  1. 演算装置
  2. モリー
  3. 制御機構
  4. (外部IO; とりあえず無視)

プログラム(の原型)とは何?

  1. データとコード
  2. コード=インストラクション列

コンピュータをどう設計すればいいの?

  1. データ型
  2. サポートする演算
  3. オペランドの持ち方
  4. 結果の置き方
  5. 流れ制御の方法
  6. 手続きの呼び方(高級な機能)
  7. データの読み出し・書き込み

そして、ハードウェア機能をソフトウェア(JavaScript)で実現する方法は?

ソフトウェアによりコンピュータ(VM)を作ったら、それに対してコンパイラを作れる。