专栏文章 UCB CS61C L6-L8 RISC-V

magicyang · 2021年01月19日 · 959 次阅读

RSIC-V function

流程:

调用返回参数:

caller/callee


s0-s11(storage registers) callee save
t0-t6 (temporary registers) caller save
函数内部用 t0 有时可以不用做 s0-s11 写 sp 的操作,节省时间

RSIC-V 指令


R 指令

没什么特殊的。

I 指令


注意移位指令 imm 的占用位,用的 rs2,只有 5 位,因为 32 位 RSIC-V 只有 32 个寄存器


注意 Load 的 width

S 指令

存储指令

sw 等没有 rd。用 rd 表示立即数最后 5 位。

SB 指令

判断跳转指令

PC 是 2 字节对齐的。。。不是 4 字节对齐的。
因为 RISC-V 允许代码压缩到 2 字节。

U 指令

需要注意的是因为 imm 会进行符号扩展,所以在进行 32 位操作时,可能会有问题

UJ 指令

但是 jalr 是 I 指令,且 imm 的操作方式也和 jal 不同

jalr 的用法

PS:自己好菜,看还好,一写就凉凉。。。哎。。。做题不易啊。。。

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册