SPIM
表示
SPIMは、MIPSプロセッサシミュレータであり、MIPSアーキテクチャのアセンブリ言語を実行するように設計された。 このプログラムはR2000とR3000プロセッサをシミュレーションするもので、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年であり、活発に開発が進められている。
脚注
[編集]- ^ デイビッド・A. パターソン、ジョン・L. ヘネシー著、成田 光彰 訳『コンピュータの構成と設計〜ハードウエアとソフトウエアのインタフェース 第3版 (上)』日経BP社、2006年。ISBN 978-4822282660。
- ^ デイビッド・A. パターソン、ジョン・L. ヘネシー著、成田 光彰 訳『コンピュータの構成と設計〜ハードウエアとソフトウエアのインタフェース 第3版 (下)』日経BP社、2006年。ISBN 978-4822282677。
関連項目
[編集]- GXemul (旧名mips64emul) MIPSエミュレータである。裸のMIPS命令セットの実装をエミュレートするSPIMと異なり、GXemulはMIPSマイクロプロセッサベースの完全なコンピュータシステムをエミュレートする。例えばDECstation 5000 Model 200をエミュレートする。
- QEMUもMIPSをエミュレートする。
- MIPSアーキテクチャ