HelloFunc.asm がこの問題で取り扱うプログラムファイルである。 これはこのままで完成しているので、 シミュレータで動かすことができる。 (ただし問題の最後に、少しプログラムに手を加えてもらうことになる)
このプログラムをテキストエディタで開いて中身を確認し、 内容を理解しよう。 まず、HelloFunc.asm をロードしたときのメモリのテキスト領域 の様子の模式図を示したのが図 3 である。
前回の Switch 文のところでも触れたように、 プログラムの本体はメモリのテキスト領域に 格納される。 (テキスト領域は、Windows 版 SPIM (pcspim.exe) では 上から 2 番目の窓で見ることができる。)プログラムのメイン部 (main:) はメモリアドレス 0x00400020 から始まる [1]。それより前の領域は シミュレータが main を呼び出すために使われる。 まず、次の 2 つの事実を了解して欲しい。
手続き main が jal 命令で呼び出されてから終了した後、 処理は元の位置の次の命令、すなわちメモリアドレス 0x00400018 に戻らねばならない。 それはジャンプ命令 「jr $ra」 で実現される。
今まで扱ったプログラムは全て最後に
jr $ra
が実行されていたが、これは以上のような理由による。