MICRO-1シミュレータ(JavaScript版)の使い方

注意

本シミュレータには、まだバグが残っている可能性がある。 使用は参考程度にとどめ、課題用には正規のシミュレータを用いること。
なお、本シミュレータはJavaScriptで書かれている。 バグの発見ならびに修正に協力してくれた学生には、 本課題に対してボーナス評価を贈る。

使い方

本シミュレータには、CUI版とGUI版の2つがある。 両者は表示に係わる処理が異なるだけで、コア部分は同一である。 なお、GUI版はHTML5のCanvas機能を使っているため、 これに対応していないブラウザでは使用できない。
  1. 【マイクロプログラムのロード】
    マイクロプログラムのオブジェクトファイル(xxxx.oファイル)の内容を、 「#object microprogram」の入力エリアにコピー&ペーストにより入力し、 「ReadCM」ボタンを押す

    本シミュレータでは、 MICRO-1の各レジスタの初期値をこの入力エリアに記入できるように拡張されている。 必要に応じて、オブジェクトファイルの内容に追記するのが便利である。
    CMARCMARの初期値を設定
    R0〜R7レジスタR0〜R7の初期値を設定
    ZERZERフラグの初期値を設定
    NEGNEGフラグの初期値を設定
    CRYCRYフラグの初期値を設定
    OVOVフラグの初期値を設定
    CZCZフラグの初期値を設定
    TTフラグの初期値を設定
    CC(カウンタ)の初期値を設定
    PCPC(プログラムカウンタ)の初期値を設定
    IRIR(命令レジスタ)の初期値を設定
    MM主記憶(MM)のアドレス、データ値を設定
    STEP実行ステップ数を設定(これのみ10進数で指定)

  2. 【機械語命令のロード・メモリの初期値設定】(optional)
    実行前に主記憶に設定する内容を「#machine code」の入力エリアに書き込む。 16進数で「アドレス」「データ」の順に1ワードにつき1行で書く。 アセンブラによって生成された機械語オブジェクトファイル(xxxx.bファイル)の 内容をコピー&ペーストにより書き込んでも良い。 「ReadMM」ボタンを1回押すことによりシミュレータに読み込む。
  3. 【CMARの設定】(optional)
    CMARの初期値を「initial CMAR:」の右側の入力エリアに書き込み、 そのすぐ右側にある「set」ボタンを押して設定する。
  4. 【PCの設定】(optional)
    PCの初期値を「initial PC:」の右側の入力エリアに書き込み、 そのすぐ右側にある「set」ボタンを押して設定する。
  5. 【他の設定】(optional)
    他のレジスタ等の初期値を設定する場合は、 必要に応じて「initial reg:」の右にあるプルダウンメニューから適切なものを選択した上で、 その右側にある入力エリアに値(16進数)を記入し、 「set」ボタンを押す。
  6. 【実行・GUI版・CUI版】
    「run N cycle:」の右にある入力エリアに値(10進数)を書き込み、 その右にある「Run」ボタンを押すと、 入力したマイクロ命令サイクル分のシミュレーションを行う。 CUI版では、これにより実行するのが良い。
  7. 【実行・GUI版】
    「step cycle」ボタンを押すと、1マイクロ命令分の実行を行う。 「step phase」ボタンは、1フェーズ分の実行を行う。 (1マイクロ命令は、5つのフェーズより構成されている)
  8. 【メモリの確認】
    メモリの値を確認するには、 「Read Address:」の右側の入力エリアにアドレス(16進数)を書き込み、 「words:」の右側の入力エリアにワード数(16進数)を書き込んだ上で、 「read」ボタンを押す。 値が設定されていないメモリデータは「xxxx」で表示される。
  9. 【CUI版の出力内容】
    CUI版の場合、「Run」ボタンを押すと画面がクリアされ、 マイクロ命令サイクル・フェーズごとのトレース情報が表示される。 1行の情報は、順に以下のようになっている。 実行を終えると、 シミュレータが開始した時点からアクセスされた主記憶の情報(アドレスとデータ)が表示される。 (w:実行開始前に「ReadMM」ボタンにより設定されたことを示す・ R:実行中に読み込まれたことを示す・W:実行中に書き込まれたことを示す)

    シミュレータ起動画面に戻るには、 ブラウザの「戻る」ボタンを押す。 その際、シミュレータ内部が初期化されるため、 シミュレーション終了時点でのレジスタやメモリの値をインタラクティブに確認することはできない。 再度実行するには、リセットすること(下記)。

  10. 【シミュレータのリセット】
    「restart」ボタンを押すと、シミュレータ内がすべて初期化される。 再度実行する場合は、本手順の最初のステップからやり直す必要がある。