Вероятно, лучше говорить о смещениях в конкретных инструкциях, таких как условные ветви или инструкции вызова.
В RISC V многие инструкции имеют 12-битное смещение, и все они подписаны и расширены до 32- или 64-битных (для RV32 или RV64 соответственно).(Некоторые инструкции имеют 20-битное смещение, некоторые из которых работают немного по-другому.)
ПК инструкции, выполняющей относительную к ПК адресацию, является базовым значением, которое добавляется к смещению - это означает, чтосмещение 0 означает текущую выполняемую инструкцию, +4 последующую 32-битную инструкцию и -4 предыдущую 32-битную инструкцию (в памяти по адресу, не обязательно в порядке выполнения).
Дляподдержка команд компактного формата (16 бит) и расширенных размеров команд (48 бит и более), смещение для инструкций, выполняющих относительную к ПК адресацию, обеспечивает четные значения смещения байтов - поскольку значение всегда четное, младший битвсегда равен нулю, и, следовательно, он не закодирован в смещении.Таким образом, смещение, закодированное в таких инструкциях, дополняется одним нулевым битом на младшем конце (как младший бит) перед использованием аппаратным обеспечением.