ぱたへね

はてなダイアリーはrustの色分けができないのでこっちに来た

2章 mips シミュレータの準備

Exercise 2.1 をする前準備
exercise 2.34のバグ付きプログラムを使って、各命令についてフォーマットと、10進の値を確認しなさい。まじめにやろうとするとアセンブラが必要なんですが、mipsシミュレータでさくっと確認しましょう。
手順を簡単にまとめました。

PCspimを入手します。

書籍のCD-ROMに入っているPCspimはバージョンが古いので、最新版のPCspimを入手します。
http://pages.cs.wisc.edu/~larus/spim.html
インストールは普通のWindowsアプリと同じです。特に設定等もありませんでした。

ソースファイルを用意します。

main:	addi	$v0, 	$zero, 	0	# initialize count
loop:	lw 		$v1,	0($a0)		# Read next word from source
	sw		$v1,	0($a1)		# Write to destinetion
	addi	$a0,	$a0, 	4		# Advance pointer to next source
	addi	$a1,	$a1,	4		# Advance pointer to next distination
	beq		$v1,	$zero,	loop	#loop if word copied != zero

このアセンブラをcopy.asm等の名前で保存します。
PCspimがソースの先頭から実行してくれるように、main:のラベルを追加しています。

PCspimを起動します。

File→Openで先ほどのファイル(copy.asm)を読み込みます。
このような画面になります。

4つのWindowのうち、一番上がレジスタ群、2つめがプログラム領域(text segment)、3つめがメモリ(date segment)、4つめがコンソール出力です。

打ち込んだプログラムは2つめのWindowに表示されています。

最初の方はmainの引数の処理があって、[0x0040014] jal命令でmain:に飛んでいます。[0x0040018]のnopは遅延スロットでしょう。ちょっとわくわくしますね。[0x0040024]のaddiからが、先ほど書いたプログラムです。


スクロールさせるとプログラムの続きが見れます。

今日はここまで