next up previous
: 参考文献 : マイクロプロセッサ演習 : [問題] 第二回の演習問題

[SPIM] SPIM を用いたシミュレーション

今回も前回に引続き SPIM シミュレータを使う練習を行う。 前回は文字列 (``Hello World.") を表示させるプログラムだったが、 今回は 2 つの整数値の足し算を行うプログラムである。

まず、ファイルdata02.zip をダウンロードして欲しい。 このファイルを解凍すると ``Add.asm" というソースファイルが 出て来るので、このファイルを前回 spim をインストールしたフォルダに 移動する。 (前回の指示に従っていれば w:$\backslash$ Install PCspim である。)

まず Add.asm をテキストエディタ (秀丸) で開き、 中身を確認しておく。コメント (# の後に書かれていること) を見れば、大体内容を把握できるはずである。

さて、このプログラムを DOS 版 spim (SPIM.EXE) および Windows 版 spim (pcspim.exe) の両方で実行してもらう。 簡単な手順を以下に示す。

DOS 版 (SPIM.EXE) での実行

  1. SPIM.EXE をダブルクリックする。
  2. (spim) load "Add.asm" により、プログラムをロード
  3. (spim) run により、プログラムを実行 (ここでは何も起きない)
  4. (spim) print $t0 により、結果を確認。(print $t1、print $t2 も試してみよう)
  5. (spim) exit で DOS 版 spim を終了できるが、ここでは終了せずそのままにしておく。

Windows 版 (pcspim.exe) での実行

  1. File → Open で Add.asm をロード。
  2. Simulator → Go で実行。(Run Parameters はそのまま OK)
  3. Register Display (一番上の窓) の t0, t1, t2 を参照し、DOS 版と同じ結果になっていることを確認する。(Windows 版では 16 進数で結果が表示されることに注意)
なお、レジスタ (register) とは CPU 内部にあるデータを保持する機構である。 このシミュレーションではレジスタ内のデータが書き換えられ、計算が実行されていることが確認できた。 (なお、spim は MIPS R2000 という CPU の振舞いを模倣するシミュレータであることに注意しよう)

次回以降はこのレジスタの振舞いを理解しながら、 プログラムを自分で記述してもらう予定である。


平成16年10月8日