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のアドレス |