レジスタ一覧
| 名前 | 番号 | 用途 |
|---|---|---|
| zero | $0 | 常に0で書き込み不可 |
| at | $1 | 擬似命令に使用(ex.Move命令) |
| v0~v1 | $2~$3 | 手続き戻り値用 |
a0~a3 |
$4~$7 | 手続き引数用 |
t0~t7 |
$8~$15 | 一時変数 |
s0~s7 |
$16~$23 | 待避用変数 |
t8~t9 |
$24~$25 | 一時変数 |
k0~k1 |
$26~$27 | os用 |
| gp | $28 | グローバルポインタ |
| sp | $29 | スタックポインタ |
| fp | $30 | フレームポインタ |
| ra | $31 | 戻りアドレス用 |
MIPS-32のレジスタについてメモ
- MIPS-32のレジスタは上の表の通り、32本用意されており、全て32bit幅である
- raレジスタは関数呼び出し時に戻り先のアドレスが自動的に入れられる
- MIPSでは演算の対象となるデータはレジスタに収めなければならない。必要となるデータがある時はその度にメモリからロードしてくる。(だいたいriscはそう)
- 遅延スロットがあり関数のreturn直後に注意