my blog raw file
lighklife / blog Goto Github PK
View Code? Open in Web Editor NEWmy blog raw file
License: Other
my blog raw file
License: Other
寄存器组 | 保存者 | 功能 |
---|---|---|
a0~a7( x10~x17 ) |
调用者保存 | 用来传递输入参数。其中的 a0 和 a1 还用来保存返回值。 |
t0~t6( x5~x7,x28~x31 ) |
调用者保存 | 作为临时寄存器使用,在被调函数中可以随意使用无需保存。 |
s0~s11( x8~x9,x18~x27 ) |
被调用者保存 | 作为临时寄存器使用,被调函数保存后才能在被调函数中使用。 |
剩下的 5 个通用寄存器情况如下:
CSR 名 | 该 CSR 与 Trap 相关的功能 |
---|---|
sstatus | SPP 等字段给出 Trap 发生之前 CPU 处在哪个特权级(S/U)等信息 |
sepc | 当 Trap 是一个异常的时候,记录 Trap 发生之前执行的最后一条指令的地址 |
scause | 描述 Trap 的原因 |
stval | 给出 Trap 附加信息 |
stvec | 控制 Trap 处理代码的入口地址 |
segment | desc |
---|---|
.text |
代码段 |
.rodata |
已初始化,全局数据,只读 |
.data |
已初始化,全局数据,可读写 |
.bss |
未初始化,全局数据,可读写 |
未初始化数据段 .bss 保存程序中那些未初始化的全局数据,通常由程序的加载者代为进行零初始化,即将这块区域逐字节清零
Linker 需要做:
参考:
[1]: https://rcore-os.cn/rCore-Tutorial-Book-v3/chapter1/3first-instruction-in-kernel1.html
级别 | 编码 | 名称 |
---|---|---|
0 | 00 | 用户/应用模式 (U, User/Application) |
1 | 01 | 监督模式 (S, Supervisor) |
2 | 10 | 虚拟监督模式 (H, Hypervisor) |
3 | 11 | 机器模式 (M, Machine) |
在 RISC-V 中,会有两类属于高特权级 S 模式的特权指令:
指令 | 含义 |
---|---|
sret | 从 S 模式返回 U 模式:在 U 模式下执行会产生非法指令异常 |
wfi | 处理器在空闲时进入低功耗状态等待中断:在 U 模式下执行会产生非法指令异常 |
sfence.vma | 刷新 TLB 缓存:在 U 模式下执行会产生非法指令异常 |
访问 S 模式 CSR 的指令 | 通过访问 sepc/stvec/scause/sscartch/stval/sstatus/satp等CSR 来改变系统状态:在 U 模式下执行会产生非法指令异常 |
CSR 名 | 该 CSR 与 Trap 相关的功能 |
---|---|
sstatus | SPP 等字段给出 Trap 发生之前 CPU 处在哪个特权级(S/U)等信息 |
sepc | 当 Trap 是一个异常的时候,记录 Trap 发生之前执行的最后一条指令的地址 |
scause | 描述 Trap 的原因 |
stval | 给出 Trap 附加信息 |
stvec | 控制 Trap 处理代码的入口地址 |
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.