我正在学习risc-v指令集,我知道addi sp,sp,-40会被转换成fd 810113,但是我不知道为什么addi sp,sp,-32会被转换成二进制代码11 01。
siv3szwd1#
即使用压缩指令格式:C.ADDI[2:0] nzimm[5] dest[4:0] nzimm[4:0] C1[1:0]C.ADDI为000,SP为寄存器#2,C1为01,则给出:000 1 00010 00000 01 = 0001 0001 0000 0001 = 0x1101注意,由于具有6位空间,压缩指令仅采用从-32到+31的立即数,这就是为什么具有-40的另一指令使用32位格式。
C.ADDI[2:0] nzimm[5] dest[4:0] nzimm[4:0] C1[1:0]
C.ADDI
000
SP
C1
01
000 1 00010 00000 01 = 0001 0001 0000 0001 = 0x1101
1条答案
按热度按时间siv3szwd1#
即使用压缩指令格式:
C.ADDI[2:0] nzimm[5] dest[4:0] nzimm[4:0] C1[1:0]
C.ADDI
为000
,SP
为寄存器#2,C1
为01
,则给出:000 1 00010 00000 01 = 0001 0001 0000 0001 = 0x1101
注意,由于具有6位空间,压缩指令仅采用从-32到+31的立即数,这就是为什么具有-40的另一指令使用32位格式。