一、通用寄存器
32位RISC-V体系结构提供32个32位的整型通用寄存器
寄存器 | 别名 | 全称 | 说明 |
---|---|---|---|
X0 | zero | 零寄存器 | 可做源寄存器(rs)或目标寄存器(rd) |
X1 | ra | 链接寄存器 | 保存函数返回地址 |
X2 | sp | 栈指针寄存器 | 指向栈的地址 |
X3 | gp | 全局寄存器 | 用于链接器松弛优化 |
X4 | tp | 线程寄存器 | 常用于在OS中保存指向进程控制块(task_struct)数据结构的指针 |
X5 ~ X7 X28 ~ X31 |
t0 ~ t6 | 临时寄存器 | |
X8 | s0/fp | 帧指针寄存器 | 用于函数调用,被调用函数需保存数据 |
X9 | s1 | 用于函数调用 ,被调用函数需要保存的数据 | |
X10 ~ X17 | a0 ~ a7 | 用于函数调用,传递参数和返回值 | |
X18 ~ X27 | s2 ~ s11 | 用于函数调用 ,被调用函数需要保存的数据 |
二、系统寄存器
系统控制状态寄存器(CSR)。
CSR地址空间映射:
地址范围 | bit[11:10] | bit[9:8] | bit[7:4] | 访问模式 | 访问权限 |
---|---|---|---|---|---|
0x000 ~ 0x0FF | 00 | 00 | xxxx | U | RW |
0x400 ~ 0x4FF | 01 | 00 | xxxx | U | RW |
0x800 ~ 0x8FF | 10 | 00 | xxxx | U | RW(用户自定义系统寄存器) |
0xC00 ~ 0xC7F | 11 | 00 | 0xxx | U | RO |
0xC80 ~ 0xCBF | 11 | 00 | 10xx | U | RO |
0xCC0 ~ 0xCFF | 11 | 00 | 11xx | U | RO |
0x100 ~ 0x1FF | 00 | 01 | xxxx | S | RW |
0x500 ~ 0x57F | 01 | 01 | 0xxx | S | RW |
0x580 ~ 0x5BF | 01 | 01 | 10xx | S | RW |
0x5C0 ~ 0x5FF | 01 | 01 | 11xx | S | RW(用户自定义系统寄存器) |
0x900 ~ 0x97F | 10 | 01 | 0xxx | S | RW |
0x980 ~ 0x9BF | 10 | 01 | 10xx | S | RW |
0x9C0 ~ 0x9FF | 10 |