Under construction!

URL данного справочника
emc.orgfree.com/RISC-V/hb


Навигатор

home My RISC-V home

Инструкции
базового набора
RV64I
(дополняет
RV32I):

handbook

арифметические

сдвиги

загрузки

сохранения

См. также

  • набор RV32I
  • набор RV128I

Evgeny Eremin

RISC-V

Инструкции базового набора RV64I

Набор команд RV64I дополняет основной 32-битный набор RV32I. Т.е. все, что входит в "предшествующий" набор RV32I, описанный ранее, по-прежнему работает: например, при написании 64-битных программ можно прользоваться условными переходами, а команда LUI по-прежнему загружает константу в биты 12-31, а не в самые старшие, как можно было бы предположить.

Набор RV64I предназначен для работы с 64-битными целыми числами. При этом возможно два варианта арифметических операций и сдвигов:

  • собственно 64 битные и
  • имитирующие 32-битную арифметику на 64-разрядной машине.

Например, инструкция ADD x31, x6, x7 складывает содержимое регистров x6 и x7 как 64-битные числа. Модификация ADDW x31, x6, x7 (W здесь означает word, т.е. 32-битное слово) дополнительно обрабатывает полученную сумму по следующему алгоритму: старшие 32 бита суммы с 32 по 63 заполняются содержимым бита 31, т.е. фактически происходит расширение знака 32-битного числа.

Зачем это нужно? Философия у авторов RISC-V была такая. 64 бита полезны главным образом при задании больших адресов памяти. Что же касается чисел, то в большинстве практических задач 232 = 4 294 967 296 - это уже достаточно много. Так что для чисел старшие 32 бита можно не использовать, а главное - не тратить время на их чтение из памяти. Подчеркнем, что "расширенные" таким образом 32-битные числа корректно обрабатываются остальными командами, например, их можно сравнивать в инструкциях условных переходов.

В набор RV64I входит 15 инструкций: 3 арифметических, 9 сдвигов и 3 инструкции обмена 64-битными данными с ОЗУ. С примерами можно познакомиться в описаниях сответствующих инструкций. Особое внимание рекомендую обратить на инструкции сдвигов, которые имеют некоторые тонкости в кодировании для RV32I и RV64I.

Все инструкции RV64I имеют разрядность 32 бита.

Примеры кодирования инструкций показаны при их описании.


Автор справочника - Евгений Александрович Еремин (Пермский государственный гуманитарно-педагогический университет). e_eremin@yahoo.com


Free Web Hosting