Under construction!

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


Навигатор

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

handbook

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

логические

сдвиги

сравнения

безусловные
переходы

системные

  • FENCE
  • ECALL
  • EBREAK

условные
переходы

загрузки

сохранения


Evgeny Eremin

См. также

  • набор RV64I
  • набор RV128I

Инструкция JAL

JAL rd, imm

Набор команд: базовый RV32I

Формат: J (иногда пишут UJ, подчеркивая общность с форматом U)

Операнды: rd – регистр, imm – 20-битная константа (со знаком!)

Действие: безусловный относительный переход: к программному счетчику PC прибавляется imm; в rd заносится адрес возврата, т.е. адрес следующей за JAL команды

Примечания

  1. JAL = Jump And Link; link – это формирование ссылки для возврата и продолжения выполнения программы (проще говоря, сохранение адреса следующей за JAL команды). Так обеспечивается вызов подпрограмм.
  2. В инструкции при занесении смещения в imm биты частично переставляются (это и отличает формат JU от U). При этом приняты следующие соглашения и правила. Самый младший нулевой бит всегда выставляется равным 0 и поэтому в команде не хранится. Биты 19-12 смещения находятся в соответствующих битах кода, так что не нуждаются в перемещении. Биты 10-1 размещены в битах 30-21 кода инструкции, что соответствует стандартному положению битов для формата I, а значит, они будут копироваться со стандартным сдвигом. Знаковый бит 20 лежит в знаковом 31-м бите кода; его придется переместить. А в бите 20 кода находится бит 11 смещения, который также придется (нестандартным образом) предварительно скопировать на свое место. Все описанное делается для упрощения аппаратной реализации.
    Аналогичная перестановка битов смещения, только более простая, используется при кодировании условных переходов. Если вам захочется разобраться в этой перестановке битов подробнее, советую посмотреть хорощий материал здесь.
  3. Стандарт рекомендует для возврата использовать в JAL регистр x1. Если формировать адрес возврата не требуется, то в качестве rd указывается x0.
  4. Доступный диапазон переходов составляет ±1 Мб.

Пример

Инструкция JAL x1, 2048 прибавляет к PC указанную константу (2048 = 211, т.е. единица как раз попадает в 11-й бит). Адрес возврата помещается в x1.
Код инструкции содержит следующие поля:

полеразрядностьсодержимоепримечание
imm20 битов00000000000100000000 204810=80016
rd5 битов00001x7
opcode7 битов1101111 всегда

Итоговый код

00000000000100000000 00001 11011112 = 00 10 00 EF16


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


Free Web Hosting