assembly 为什么risc-v指令“addi sp,sp,-32”被转换成二进制代码“11 01”?

vsaztqbk  于 2023-04-21  发布在  其他
关注(0)|答案(1)|浏览(219)

我正在学习risc-v指令集,我知道addi sp,sp,-40会被转换成fd 810113,但是我不知道为什么addi sp,sp,-32会被转换成二进制代码11 01。

siv3szwd

siv3szwd1#

即使用压缩指令格式:
C.ADDI[2:0] nzimm[5] dest[4:0] nzimm[4:0] C1[1:0]
C.ADDI000SP为寄存器#2,C101,则给出:
000 1 00010 00000 01 = 0001 0001 0000 0001 = 0x1101
注意,由于具有6位空间,压缩指令仅采用从-32到+31的立即数,这就是为什么具有-40的另一指令使用32位格式。

相关问题