MIPS 彙編/暫存器檔案
外觀
< MIPS 彙編
MIPS 有 32 個通用暫存器和另外 32 個浮點暫存器。暫存器都以美元符號 ($) 開頭。浮點暫存器命名為 $f0、$f1、…、$f31。通用暫存器既有名稱也有編號,如下所示。在使用 MIPS 組合語言程式設計時,最好使用暫存器名稱。
| 編號 | 名稱 | 註釋 |
|---|---|---|
| $0 | $zero, $r0 | 始終為零 |
| $1 | $at | 為彙編器保留 |
| $2, $3 | $v0, $v1 | 分別為第一個和第二個返回值 |
| $4, ..., $7 | $a0, ..., $a3 | 函式的前四個引數 |
| $8, ..., $15 | $t0, ..., $t7 | 臨時暫存器 |
| $16, ..., $23 | $s0, ..., $s7 | 儲存的暫存器 |
| $24, $25 | $t8, $t9 | 更多臨時暫存器 |
| $26, $27 | $k0, $k1 | 為核心(作業系統)保留 |
| $28 | $gp | 全域性指標 |
| $29 | $sp | 堆疊指標 |
| $30 | $fp | 幀指標 |
| $31 | $ra | 返回地址 |
零暫存器 ($zero 或 $0) 始終包含值 0。它是硬體內建的,因此無法修改。
$at(彙編器臨時暫存器)用於偽指令中的臨時值。它不會跨函式呼叫保留。例如,在 (slt $at, $a0, $s2) 指令中,如果 $a0 小於 $s2,則 $at 設定為 1,否則設定為 0。
$v 暫存器用於從函式返回的值。它們不會跨函式呼叫保留。
$a 暫存器用於將引數傳遞給函式。它們不會跨函式呼叫保留。
臨時暫存器由彙編器或組合語言程式設計師用於儲存中間值。它們不會跨函式呼叫保留。
儲存的臨時暫存器用於儲存更持久的的值。它們在跨函式呼叫時保留。
k 暫存器為作業系統核心保留。由於中斷處理程式使用它們,因此它們可能會在任何時候隨機更改。
- 全域性指標 ($gp) - 通常儲存指向全域性資料區域的指標(這樣就可以使用記憶體偏移定址來訪問它)。
- 堆疊指標 ($sp) - 用於儲存堆疊指標的值。
- 幀指標 ($fp) - 用於儲存幀指標的值。
- 返回地址 ($ra) - 儲存返回地址(函式需要返回到的程式中的位置)。
所有指標暫存器在跨函式呼叫時保留。