IT関係

【xspimを用いた】アセンブリ言語

xspimとは??

下の写真のようなアセンブリ言語を実行するためのソフトウェアです

CPU Resisters

名前 レジスタ番号 使い方 呼び出し先から予約
$zero 0 常に0が格納されている(変更できない) N/A
$v0 – $v1 2 – 3 戻り値、 なし
$a0 – $a3 4 – 7 引数 なし
$t0 – $t7 8 – 15 一時的な値 なし
$s0 – $s7 16 – 23 保存される値 あり
$t8 – $t9 24 – 25 一時的な値 なし
$gp 28 グローバルポインタ あり
$sp 29 スタックポインタ あり
$fp 30 フレームポインタ あり
$ra 31 リターンアドレス あり

 

よく使う命令

区分 命令 意味
算術演算 add add $1,$2,$3 $1=$2+$3
subtract sub $1,$2,$3 $1=$2-$3
add immediate addi $1,$2,100 $1=$2+100
論理演算 and and $1,$2,$3 $1=$2&$3
or or $1,$2,$3 $1=$2|$3
and immediate andi $1,$2,100 $1=$2&100
or immediate ori $1,$2,100 $1=$2|100
データ転送 load word lw $1,100($2) $1=メモリ[$2+100]
store word sw $1,100($2) メモリ[$2+100]=$1
se $1,  ラベル ラベルのアドレス=$1
条件分岐 branch on equal beq $1,$2,100 if($1==$2) go to PC+4+100
比較演算 set on less than slt $1,$2,$3 if($2<$3) $1=1;else $1=0
set less than imm. slti $1,$2,100 if($2<100) $1=1;else $1=0
ジャンプ jump j 10000 go to 10000
jump register jr $rs go to $rs
jump and link jal 10000 go to 10000; $31=PC+4
疑似命令 load address la $1, A $1 = Aのアドレス

参考サイト

アセンブリ言語の命令