s0-s11(storage registers) callee save
t0-t6 (temporary registers) caller save
函数内部用 t0 有时可以不用做 s0-s11 写 sp 的操作,节省时间
没什么特殊的。
注意移位指令 imm 的占用位,用的 rs2,只有 5 位,因为 32 位 RSIC-V 只有 32 个寄存器
注意 Load 的 width
存储指令
sw 等没有 rd。用 rd 表示立即数最后 5 位。
判断跳转指令
PC 是 2 字节对齐的。。。不是 4 字节对齐的。
因为 RISC-V 允许代码压缩到 2 字节。
需要注意的是因为 imm 会进行符号扩展,所以在进行 32 位操作时,可能会有问题
但是 jalr 是 I 指令,且 imm 的操作方式也和 jal 不同
jalr 的用法
PS:自己好菜,看还好,一写就凉凉。。。哎。。。做题不易啊。。。