小さなプログラミング処理系を作る
参考:
- http://d.hatena.ne.jp/m-hiyama/20060711/1152581558 極小なプログラミング言語
- http://d.hatena.ne.jp/m-hiyama/20060712/1152667443 あなたの「極小なプログラミング言語」は?
- http://d.hatena.ne.jp/m-hiyama/20091125/1259117461 JavaScriptで仮想機械の勉強をしましょう
- http://d.hatena.ne.jp/m-hiyama/20091209/1260343463 JavaScriptで言語処理系の勉強をしましょう:構文解析準備編
状況:
- 実際のコンピュータを分解してもよくわからない。
- CPUの多様性は減っている。一様化していてツマラナイかも。
- プログラミング言事言語処理系はいくらでもある。
- 仮想ナントカがあふれかえっている。
- 本物(実体)と仮想(偽物、模倣)の区別が付かない
ハードウェアをいじるのは難しいが、代わりにソフトウェアによるエミュレーション・シミュレーションは容易。コンピュータもソフトウェアにより自由に作れる。
が、そもそもコンピュータって何?
- 演算装置
- メモリー
- 制御機構
- (外部IO; とりあえず無視)
プログラム(の原型)とは何?
- データとコード
- コード=インストラクション列
コンピュータをどう設計すればいいの?
- データ型
- サポートする演算
- オペランドの持ち方
- 結果の置き方
- 流れ制御の方法
- 手続きの呼び方(高級な機能)
- データの読み出し・書き込み
そして、ハードウェア機能をソフトウェア(JavaScript)で実現する方法は?