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からが、先ほど書いたプログラムです。
スクロールさせるとプログラムの続きが見れます。
今日はここまで