А как передать-то 32 битное значение в команде в 32 бит?
Логично что после команды значение(или адрес). Но тогда же получается какое-то нарушение логики.
В RISC-процессорах -- никак. Они либо имеют команду загрузки 32-битного значения (литерала) из памяти относительно PC или специально выделенного регистра (например ARM:
LDR r [pc, #offset_to_literal_pool]
, XTENSA:
l32r at, label
), при этом в команде кодируется смещение адреса литерала относительно PC. Либо загружают значения по частям, двумя или более командами (например MIPS загружает 16-битные части двумя разными инструкциями:
lui rt, high16 ; ori rt, low16
, XTENSA загружает 16-битные части двумя одинаковыми инструкциями:
CONST16 at, high16 ; CONST16 at, low16
, RISC-V загружает 20 и 12-битные части:
auipc rd, symbol[31:12] ;
addi rd, rd, symbol[11:0]
).
Хотя в принципе тот же RISC-V имеет нефиксированную длину команд, так, что какой-нибудь разработчик может завести, скажем, 6-байтовую команду загрузки 32-битного непосредственного значения в регистр, однако, насколько мне известно, никто этого не делает.