最後に「&」を付けると、その端末で引き続き別のコマンドを実 行できる。(シェルが、xspim の実行を待たないで次のコマンドを受け付ける。)% xspim &%
![]()
3. と 4. の代りに reload ボタンで表示されるassembly file メニューを選 んでもよい。
プログラムが長くなると、ブレーク・ポイントも便利である。必要に応じて、 xspim の breakpoints ボタンで手頃な場所にブレークポイントを設定し、run ボタンで実行する。
プログラムを load した時X(実行する前)に、エラーが出ていないことを確認する。
.text .align 2 .globl main main: ...
"global"
ではなく"globl"
('a'がない)になっている所に注意する。
プログラムの最後に「改行」を忘れずに入れる。「改行」がなければ、プログ ラムを load する時にエラーが出る。
アセンブリ言語の命令(addや.alignなど)は、先頭にタブを打ってから書き始 める。ラベル(main:など)は、左端に寄せて書く。これは、人間がプログラム を読みやすくするための長年行われてきた習慣である。
エディタ(mule) で、プログラムを作成する時には、拡張子は、
.s
にする。そうすると、自動的に読みやすいように字下げを
してくれる。(最初の画面、*scratch*
を使わないで、C-x C-f
で .s
のファイル名付けてプログラムを書き始める。)
合成命令を使うと、自分が書いたプログラムとXSPIM の表示が異なることにな る。
よく使われる合成命令
合成命令 本当の命令 subiu $29, $29, 4 addiu $29, $29, -4 move $8, $9 addu $8, $0, $9 li $8, 100 ori $8, $0, 100 li $8, 10000000 lui $1, 152 # 2命令に展開される ori $8, $1, -27008 mul $8, $9, $10 mult $9, $10 mflo $8 # 2命令に展開される add $8, $8, 100 addi $8, $8, 100 add $8, $8, 10000000 lui $1, 152 ori $1, $1, -27008 # 3命令に展開される add $8, $8, $1li や add で、値が小さい時には1命令だが、値が大きくなると複数命令にな る。大きい数の場合、$1 というレジスタが勝手に使われている。