os lab1
Lab 1:内核启动与时钟中断
首先复习一下openSBI是什么:
1. RISC-V 汇编与调用约定
回忆之前在计组学习的关于汇编代码的内容,回忆以下的三个问题:
- sp的作用:相当于在每次调用的循环开始的时候给当前需要用到的临时变量分配空间,之后使用这些空间进行临时的计算之后,在这个循环结束之后释放这些控件
- 使用16字节对齐可以提升访问的效率,这也是RISC-V的明确规定。
总结来说,就是调用之前分配空间、保存内容,调用完之后恢复指针和地址,释放空间
以及下面所说的call与tail指令:

2. 汇编器指令
对于汇编器指令,掌握如下几个内容: (1) =/ .set: 赋值,定义一个用于计算的常量值
(2) ==/ .eqv:创造一个别名,类似于c语言中的#define,作用是创造一个别名,增强代码的可读性
(3)另一个比较难理解的概念是局部标签:其格式和工作方式如下:
总而言之,局部标签就是一个简单的语法糖
还有一个作用域更小的美元局部标签:
(4). 符号:其代表的是当前的内存地址,汇编器在将汇编语言转化为机器码时会跟踪这个地址。
这里罗列了在不同的代码中使用汇编器的标签的方法
回答下面的一系列问题:
可以查看到以下内容:
0000000080200000 T _skernel
0000000080205008 B _ebss
之间的地址差为0x5008
观察到的image文件大小为0x3B00
关于栈空间的定义如下:
并且:
也就是说,如果有更高级的,当务之急是处理更高级的;处理完了之后再把原来的东西全部写回去
os lab1
https://zrwrz.github.io/2025/10/09/os-lab1/