Hatena::ブログ(Diary)

西尾泰和のはてなダイアリー

2012-09-10

ブラウザ上で動くEDSACシミュレータを公開しました

EDSACは1949年頃のコンピュータです。EDSAC - Wikipedia

機械語の命令の種類が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


関連記事

日本語で解説を書くのに全然時間を割けていませんが、誰か興味のある人いませんか?

投稿したコメントは管理者が承認するまで公開されません。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/nishiohirokazu/20120910/1347256998