私は、以下のシミュレーターを使ったことがある。いずれも良くできたシミュレーターな ので、使ってみると良いだろう。実際、シミュレーターが無いと、CASL IIの学習は大変 である。私の場合、試験問題やプログラムの検証には、これらのシミュレーターを用いて おり、道具として使っている。
http://www.ics.teikyo-u.ac.jp/wcasl2/
図1のプログラムを書いて、COMET IIシミュレーターを実行させると図 2の画面になる。これがCOMET IIのブロック図です。通常のコンピューター のCPUとメモリ(主記憶装置)とほとんど同じです。ただし、現在使われているCPUの機能よ りは、かなり単純化されています。その分、コンピューターの本質を学ぶには良いでしょ う。
このシミュレーターで使われているレジスタを表1にまとめる。ただ し、COMET IIの仕様(教科書P207〜)に無いものもある。なぜなら、アセ ンブラ言語の仕様にはなくても差し支えないが、実際のハードウェアーを構成 する場合、必要不可欠なものがあるからである。COMET IIの仕様になくて、WCASL IIにあるものは、表1の中で
IR MAR MDR
である。これらの3個のレジスタは、皆さんがアセンブラ CASL IIを記述する場 合は、気にする必要はない。
また、レジスタ以外のモジュールを表2に書いておく。これらのモジュール も、COMET IIやCASL IIの仕様には書かれていない。したがって、アセンブ ラ言語を記述する場合、これらを考える必要はないが、コンピューターの仕組み上、必須 のものである。したがって、必要不可欠なハードウェアーとして、シミュレーターには、 備え付けられている。
記号 | 語源 | 日本語 | 機能 |
GR | General Register | 汎用レジスター | 計算などに用いる |
SP | Stack Pointer | スタックポインター | スタック領域の最上段 のアドレスを保持 |
FR | Flag Register | フラグレジスター | 演算結果の状態を示す |
IR | Instruction Register | 命令レジスタ | 命令そのものを格納 |
MAR | Memory Address Register | メモリアドレスレジスター | メ モリを読み書きする際に,アクセスするアドレスを格納 |
MDR | Memory Data Register | メモリデータレジスタ | メモリとの データのやり取りをする際のデータを格納 |