コンピュータの仕組み

おおまかに説明すると、コンピュータは、"計算" を行う CPU と、記憶を行うメモリと、外部との間で入出力を行 う入出力装置、そして、それらをつなぐ情報の通路であるバスからなっている。 実際には、高速化のためにキャッシュメモリを搭載したり、ビデオカード (ディスプレイをつなぐための入出力装置)は汎用のバス以外のものでつないだり、様々な工夫がなされているが、 基本的なつくりはこれだけである。

ごくごく単純なコンピュータのシミュレータを使って、この仕組みを理解しよ う。

このシミュレータの構成 (括弧内は、実行画面上での名称)

マシン語について

命令の種類 命令の名前 引数 説明
1LOADd 引数で指定されたアドレスのデータをレジスタにコピーする。
2STOREd レジスタの値を引数で指定されたアドレスにコピーする。
3 ADD d レジスタの値に引数で指定されたアドレスのデータを加える。
4SUBd レジスタの値から引数で指定されたアドレスのデータを引く。
5MULd レジスタの値に引数で指定されたアドレスのデータを掛ける。
6DIVd レジスタの値を引数で指定されたアドレスのデータで割る。
余りは切捨て。
7JUMPp 引数で指定されたアドレスに飛ぶ。
8JUMPZEROp もしレジスタの値が 0 なら引数で指定されたアドレスに飛ぶ。
9JUMPGRp もしレジスタの値が正なら引数で指定されたアドレスに飛ぶ。
aJUMPGEp もしレジスタの値が正か 0 なら引数で指定されたアドレスに飛ぶ。
bPRINTn レジスタの値を画面(Display) に表示する。
cAPRINTd 引数で指定されたアドレスの値を画面に表示する。
dCLEARd 引数で指定されたアドレスの値を0 にする。
eINCd 引数で指定されたアドレスの値を1増やす。
fHALT n プログラムの実行を終了する。

使用方法:

最上部のラジオボタンが示す様に、edit と execute の2つのモードがある。

まず、edit モードで、Program の左の欄にプログラムのアセンブラ・コード、 Data にデータ用メモリの初期値を書き込む。あるいは、右上の Samples, Advanced Samples のメニューからサンプル・プログラムを選ぶこともできる。 後者は、間接アドレッシングを用いたサンプル・プログラムが入っている。 英文字は、大文字、小文字のどちらでも構わない。また、最 下部の Machine Code の所に、マシン語のバイト列として入力することもでき る。

プログラムとデータができたら、ラジオボタンで execute モードを選ぶ。 すると、アセンブラ・コードがマシン語に変換されて右の欄と最下行に表示され、onestep, go, reset の3つのボタンが使用可能となる。onestep で1命令実行、go で halt 命令により終了するまで実行する。reset で最初の状態に戻る。ただし、go でいつ までたっても halt に到達しない場合のことを考え、go も 500ステップ進 んで halt に到達しなければ、止まる様にしてある。続けて実行したければ、 再び go を押せばよい。

edit モードに戻れば、プログラムやデータを変更することができる。

サンプルプログラムの説明:

samples: Advanced samples: 次のようなプログラムを書いてみてはいかがでしょう:


バグ等は、できるだけ具体的に書いて以下のアドレスまでお知らせください。

Hideki Tsuiki,
tsuiki@i.h.kyoto-u.ac.jp