2012-09-10
*1347256998*ブラウザ上で動くEDSACシミュレータを公開しました
EDSACは1949年頃のコンピュータです。a href='http://ja.wikipedia.org/wiki/EDSAC'EDSAC - Wikipedia/a。
機械語の命令の種類が18個ととてもシンプルです。今のx86の命令セットは膨大で全部を把握できなくなってしまって、教育上良くないのではないかと思っています。そこでシンプルなコンピュータであるEDSACを作ってみました。
こちらから試せます: http://nhiro.org/learn_language/repos/EDSAC-on-browser/index.html
f:id:nishiohirokazu:20120910150159p:image
画像は和田英一先生が書いたエラトステネスの篩で素数を求めるプログラムを実行しているところです。先生に許可をいただいてプリセットに入れてあります。Sourceタブの「Load Wada Seive」ボタンをクリック!(UIは改善の余地があります…)
右端の黒と緑の模様がEDSACの全メモリを1ビット1ピクセルで表示したものです。クリックするとその範囲のメモリの詳細が右上の画面に表示されます。表示されているのはちょうど3で篩をかけている最中ですね。
EDSACがどれくらいメモリを持っているかとか、命令セットがどんなものかとかはこちらを見ると簡潔にまとまっています: http://www.cl.cam.ac.uk/~mr10/edsacposter.pdf
「イニシャルオーダー」は、パンチテープから「人間が読みやすいように書かれた命令」を読み込んで「機械が読みやすいビット列」に変換してメモリにストアするプログラムです。いわばとても原始的なプログラミング言語です。
1文字を表現するのに5ビットしか使わない点とか興味深いですね。つまり32種類しか文字が表現できないのでアルファベット26文字と数字10種類を表現できないわけです。そこで数字を表示するモードとアルファベットを表示するモードの2つを持って、シフト文字で切り替えるようにしています。
仕様に関してわかりにくい所はこのシミュレータのコードを読むのもよいと思います。JavaScriptのソースコードは全部で1700行くらい。GPLでこちらで公開しています。 https://github.com/nishio/EDSAC-on-browser
関連記事
- a href='http://d.hatena.ne.jp/nishiohirokazu/20120501/1335846610'作りたいもの: プログラミング言語のコア概念を学ぶサイト/a
- a href='http://d.hatena.ne.jp/nishiohirokazu/20120619/1340115934'その2/a
- a href='http://d.hatena.ne.jp/nishiohirokazu/20120705/1341494412'ブラウザ上で演算子の優先順位と結合性を学ぶ/a
- a href='http://d.hatena.ne.jp/nishiohirokazu/20120707/1341657664'構文木を可視化するサイトを作った/a
- a href='http://d.hatena.ne.jp/nishiohirokazu/20120707/1341654840'LISPを学ぶサイトを作った/a
- a href='http://d.hatena.ne.jp/nishiohirokazu/20120710/1341924363'FORTHを学ぶサイトを作った/a
日本語で解説を書くのに全然時間を割けていませんが、誰か興味のある人いませんか?