Как влезает команда+адрес(из 32 битов) в 32 бит
Я понимаю, как приходит команда, декодируется, потом ищет операнды, как работает конвеер, почти все понятно на 90%.
Но не могу понять, как перейти в 32битной системе по 32 битному адрессу, если нужно минимум 4-12 битов на саму команду(jmp jne....), соответственно в разных форматах остается от 20 и менее байтов, дак как в эти 20 байтов передать 32 битный. именно напрямую, как в рабочих кодах jmp 0x00_00_00_ff(jmp метка), а не через регистры( jmp ebx с ними то понятно).
Фот всеx форматы.
Форматы машинных команд
Формат 32-битной машинной команды (признаки — младшие биты всегда «11» и 2-4 биты ≠̸ «111»)
Тип 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
Регистр/регистр funct7 rs2 rs1 funct3 rd код операции 1 1
С операндом ± imm[10:0] rs1 funct3 rd код операции 1 1
С длинным операндом ± imm[30:12] rd код операции 1 1
Сохранение ± imm[10:5] rs2 rs1 funct3 imm[4:0] код операции 1 1
Ветвление ± imm[10:5] rs2 rs1 funct3 imm[4:1] [11] код операции 1 1
Переход ± imm[10:1] [11] imm[19:12] rd код операции 1 1
https://ru.wikipedia.org/wiki/RISC-V