SPIMは、MIPSプロセッサシミュレータであり、MIPSアーキテクチャのアセンブリ言語を実行するように設計された。 このプログラムはR2000R3000プロセッサをシミュレーションするもので、James R. Larusによって書かれた。 MIPS機械語は大学レベルのアセンブリの講義で教えられることが良くある。特に、デイビッド・パターソンジョン・ヘネシーの著作である『コンピュータの構成と設計〜ハードウエアとソフトウエアのインタフェース』という教科書[1][2]が使われる。

SPIMシミュレーションはWindows用のPCSpim、Mac OS XとUNIX/Linux用のxspimとがある。

名前の由来は「MIPS」を逆から読んだものである。

SPIMで使用されるシステムコールの例 編集

サービス トラップコード インプット アウトプット 補足
print_int(整数の表示) $v0 = 1 $a0 = 表示する整数 標準出力に$a0を表示する
print_float(浮動小数点の表示) $v0 = 2 $f12 = 表示する浮動小数点 標準出力に$f12を表示する
print_double(倍精度浮動小数点の表示) $v0 = 3 $f12 = 表示する倍精度浮動小数点 標準出力に$f12を表示する
print_string(文字列の表示) $v0 = 4 $a0 = 最初の文字のアドレス 文字列を標準出力に表示する
read_int(整数の読み込み) $v0 = 5 標準入力から整数を読み込んで$v0に格納する
read_float(浮動小数点の読み込み) $v0 = 6 標準入力から浮動小数点を読み込んで$f0に格納する
read_double(倍精度浮動小数点の読み込み) $v0 = 7 標準入力から倍精度浮動小数点を読み込んで$f0に格納する
read_string(文字列の読み込み) $v0 = 8 $a0 = 文字列を格納するアドレス、$a1 = 文字列の最大長さ 標準入力から読み込み$a0のアドレスに格納する
sbrk(メモリの割り当て) $v0 = 9 $a0 = 必要とされるバイト数 $v0= 割り当てられたメモリのアドレス ヒープからメモリを割り当てる
exit(終了) $v0 = 10
print_char(文字の表示) $v0 = 11 $a0 = 文字(下位8ビット)
read_char(文字の読み込み) $v0 = 12 $v0 = 文字(改行なし)をエコーする
file_open(ファイルを開く) $v0 = 13 $a0 = フルパス(ゼロで、改行なしの文字列は終端する)、$a1 = フラグ, $a2 = UNIXの8進数ファイルモード(0644ならばrw-r--r--を意味する) $v0 = ファイルディスクリプタ
file_read(ファイルを読み込む) $v0 = 14 $a0 = ファイルディスクリプタ、$a1 =バッファアドレス、$a2 = 読み込むバイト数 $v0 = ファイルからバッファに読み込んだデータ量(-1 = エラー、0 = ファイルの終端)
file_write(ファイルへ書き込む) $v0 = 15 $a0 = ファイルディスクリプタ、$a1 = バッファアドレス、$a2 = 書き込むバイト数 $v0 = バッファからファイルへ書き込んだデータ量(-1 = エラー、0 = ファイルの終端)
file_close(ファイルを閉じる) $v0 = 16 $a0 = ファイルディスクリプタ

フラグ:

読み込み = 0x0, 書き込み = 0x1, 読み込み/書き込み = 0x2

OR 作成 = 0x100, サイズ0で作成 = 0x200, 追記 = 0x8

OR テキスト = 0x4000, バイナリ = 0x8000

SPIMの代替製品、競合製品 編集

MARS (MIPS Assembler and Runtime Simulator)はJavaベースのMIPSアセンブリ言語のIDEであり、SPIMの代替となる。最初のリリースは2005年であり、活発に開発が進められている。

脚注 編集

  1. ^ デイビッド・A. パターソン、ジョン・L. ヘネシー著、成田 光彰 訳『コンピュータの構成と設計〜ハードウエアとソフトウエアのインタフェース 第3版 (上)』日経BP社、2006年。ISBN 978-4822282660 
  2. ^ デイビッド・A. パターソン、ジョン・L. ヘネシー著、成田 光彰 訳『コンピュータの構成と設計〜ハードウエアとソフトウエアのインタフェース 第3版 (下)』日経BP社、2006年。ISBN 978-4822282677 

関連項目 編集

  • GXemul (旧名mips64emul) MIPSエミュレータである。裸のMIPS命令セットの実装をエミュレートするSPIMと異なり、GXemulはMIPSマイクロプロセッサベースの完全なコンピュータシステムをエミュレートする。例えばDECstation 5000 Model 200をエミュレートする。
  • QEMUもMIPSをエミュレートする。
  • MIPSアーキテクチャ

外部リンク 編集