В архитектуре MIPS существуют следующие типы регистров и их назначение:
- $zero ($0) — регистр, всегда содержащий значение 0 и доступный только для чтения; 14
- $at ($1) — временный регистр процессора; 14
- $v0–$v1 ($2–$3) — для результатов, возвращаемых функциями; 14
- $a0–$a3 ($4–$7) — для аргументов функций; 14
- $t0–$t9 ($8–$15, $24–$25) — для временных данных, можно использовать как угодно; 14
- $s0–$s8 ($16–$23, $30) — для постоянных данных, можно использовать как угодно; 14
- $k0–$k1 ($26–$27) — зарезервировано для ядра операционной системы; 14
- $gp ($28) — указатель для глобальных переменных, практически не используется; 14
- $sp ($29) — указатель стека, его значение всегда равно верхнему адресу стека; 14
- $ra ($31) — адрес инструкции, из которой была вызвана функция; 14
- $f0 — для результатов, возвращаемых функциями, с плавающей запятой; 14
- $f4, $f6, $f8, $f10, $f16, $f18 — для временных данных с плавающей запятой; 14
- $f12, $f14 — для параметров функций с плавающей запятой. 14
Регистры, имена которых начинаются с $s, называют сохраняемыми (saved). 23 Они используются для размещения в них переменных и имеют особое значение при вызове процедур. 23 Регистры, имена которых начинаются с $t, называют временными (temporary). 23 Они используются для хранения временных переменных. 23