#### Программируемые места хранения **Типы регистров:** 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)** - «непосредственное значение - регистр». Используется, когда возможно взять адрес следующей выполняемой инструкции. Стадия декодирования облегчена максимально: анализируем битовые поля и отправляем в известные позиции на промежуточном регистре перед след. стадией.