機械語序論 2001年/xspimの使い方

■xspimの実行


% xspim & [←]
% []
最後に「&」を付けると、その端末で引き続き別のコマンドを実 行できる。(シェルが、xspim の実行を待たないで次のコマンドを受け付ける。)

■アセンブリ言語によるプログラムの作成と実行

  1. エディタ(mule) で、プログラムを作成する。拡張子は、.s にする。
  2. 保存する(C-x C-s)。mule を終了する必要はない。
  3. xspim の clear ボタンで、メモリとレジスタをクリアする。
  4. xspim の load ボタンで保存したファイルを読込む。
  5. xspim の step ボタンでステップ実行する。
  6. プログラムを修正したら、2. にもどる。

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)が気を効かせて別の命令に置き換えることがある。 このような命令は、合成命令と呼ばれることがある。

合成命令を使うと、自分が書いたプログラムと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, $1

li や add で、値が小さい時には1命令だが、値が大きくなると複数命令にな る。大きい数の場合、$1 というレジスタが勝手に使われている。

■入出力画面

syscall などで使われる入出力のウインドウは、XSPIM 本体のウインドウの裏 側に隠れてしまうことがある。凍り付いたように見える時には、裏に隠れたウ インドウにで入力待ちになっていることがある。

■日本語マニュアル

by 角川裕次 at 広島大学工学部第二類.

■もどる


Last updated: 2002/02/11 20:52:33
Yasushi Shinjo / <yas@is.tsukuba.ac.jp>