#### Программируемые места хранения

**Типы регистров:**

1) **Целочисленные регистры**
x0 - константа 0; x1 - return address; x2 - stack pointer; x3 - global pointer;
x4-thread pointer ; x5-x7, x28-x31 - временные; x8-x9, x18-x27 - сохраняемые при вызове;
$x10-x17$ - argument registers;
2) **Вещественные регистры**
f0-f7, f28-f31 - временные; f8-f9, f18-f27 - сохраняемые при вызове; f10-f17 - параметры и возвращаемые значения;
3) **Векторные регистры**
v0-v31- временные; vl - vector length; vtype - vector datatype register; vxrm - vector fixed-point rounding mode register; vxsat - vector fixed-piont saturation flag register; vcsr - vector control and status register; vlenb - vector register length in bytes; vstart- vector start position;
**Особенности использования векторных регистров:**

- Векторные регистры появятся дополнительно при использовании векторных инструкций.
- Длина зависит от инструкции (умолч. 128 бит)
- Можно выполнять работы как над вектором, так и над какой-то из частей.
- Вектора могут объединяться для формирования более длинных векторов.

**Формат представления команд:**

- **R (Register)** - «регистр-регистр-регистр»
- **I (Immediate)** - «непосредственное значение - регистр - регистр»
- **S (Store)** - «регистр-регистр-непосредственное значение». $1^{й}$ регистр - источник, который сохраняется в память, $2^{й}$ регистр и непосредств. значение используют для формирования адреса.
- **U (Upper)** - «непосредственное значение - регистр». Используется, когда возможно взять адрес следующей выполняемой инструкции.
Стадия декодирования облегчена максимально: анализируем битовые поля и отправляем в известные позиции на промежуточном регистре перед след. стадией.