x3寄存器:别名gp,全局寄存器,用于链接器优化 x4寄存器:别名tp,线程寄存器,保存指向进程控制块的指针 x5-x7,x28-x31寄存器:别名t0-t6,临时寄存器 x8-x9,x18-x27寄存器:别名s0-s11,其中s0可用作栈帧指针(FP) x10-x17寄存器:别名a0-a7,在函数调用中传递参数和返回值 系统寄存器 用于系统控制和状态的寄存器,对处理...
读恒为0,写无效,这个寄存器在一些地方很有作用,因为程序运行中常数0的使用频率非常高,所以专门用一个寄存器来存放常数0,并没有浪费寄存器数量,并且使得编译器工作更加简便,这一点也是RISC-V架构优雅性的体现,比如后面讲到的伪指令。
RISC-V 给 x3 这个通用寄存器起了一个 ABI 别名为 gp(Global pointer)。以前一直没太深入考虑过 gp 的含义和用法。最近研究了一下,差不多清楚了,记录下来备忘。 同样的,为方便以后文档的版本管理和编辑,文档…
R是CSR,且是指令A的隐式目的寄存器; R是CSR,它是A的另一个目的寄存器别名; 比如有以下load和store指令: lwx1,0(x2) //x1充当目的寄存器角色 swx3,0(x4) //x3充当源寄存器角色 内存指令通常还进一步指定哪些源寄存器是地址源寄存器还是数据源寄存器。大多数非内存访问指令都带有从源寄存器到目的寄存器的依赖项。
在RISC-V寄存器上,a0,a1仅是x10和x11的别名。这些是放置函数调用的第一个和第二个参数的位置。RET是伪指令(简写): JALR x0,0(ra)#sp←0 + ra #x0←sp + 4 ingnoring result JALR跳转到ra引用返回地址的地址。ra是x1的别名。 无论如何,这看起来简直太可怕了吧?这样简单而通用的操作的指令需要在表中...
RISC-V 上的寄存器 a0 和 a1 只是 x10 和 x11 的别名。它们是放置函数调用的第一个和第二个参数的地方。RET 是一条伪指令 (简写): JALR x0, 0(ra) # sp ← 0 + ra # x0 ← sp + 4 ignoring result JALR 跳转到 ra 引用返回地址的地址。ra 是 x1 的别名。
CPU 中配有大量的寄存器,这些指令的选取都是工程中使用频率最高的指令。由于指令长度一致,功能单一,...
risc-v 有通用寄存器, 也有一些特殊的寄存器(csr) 下表方便查阅吧,一般都是用别名多一些 点评:因为是16字节对齐, 所有sp空间-16,不考虑这个情况, 用不了这么多 c 代码 #include <stdio.h> void my_function(int a, int b, int c, int d, int e, int f, int g, int h) { ...
x0寄存器被硬编码为了0,就是个0值寄存器。ABI名称相当于这些通用寄存器的别名,在RISC-V jf_62110620 2023-04-14 10:18:23 简单就是美——RISC-V架构的设计哲学 )指令jalr指令能够用于子程序返回指令,通过将jal指令(跳转进入子程序)保存的链接寄存器用于jalr指令的基地址寄存器,则可以从子程序返回。RISC-V架构...