os lab1

Lab 1:内核启动与时钟中断

首先复习一下openSBI是什么:alt text

1. RISC-V 汇编与调用约定

回忆之前在计组学习的关于汇编代码的内容,回忆以下的三个问题:alt text

  1. sp的作用:相当于在每次调用的循环开始的时候给当前需要用到的临时变量分配空间,之后使用这些空间进行临时的计算之后,在这个循环结束之后释放这些控件
  2. 使用16字节对齐可以提升访问的效率,这也是RISC-V的明确规定。
  3. alt text 总结来说,就是调用之前分配空间、保存内容,调用完之后恢复指针和地址,释放空间
除此之外,还要学习一系列所谓的”伪指令”: alt text alt text 以及下面所说的call与tail指令:alt text alt textalt text

2. 汇编器指令

对于汇编器指令,掌握如下几个内容: (1) =/ .set: 赋值,定义一个用于计算的常量值

(2) ==/ .eqv:创造一个别名,类似于c语言中的#define,作用是创造一个别名,增强代码的可读性

(3)另一个比较难理解的概念是局部标签:其格式和工作方式如下:alt text总而言之,局部标签就是一个简单的语法糖

还有一个作用域更小的美元局部标签:alt text

(4). 符号:其代表的是当前的内存地址,汇编器在将汇编语言转化为机器码时会跟踪这个地址。

alt text 这里罗列了在不同的代码中使用汇编器的标签的方法

回答下面的一系列问题:alt text 可以查看到以下内容:

0000000080200000 T _skernel

0000000080205008 B _ebss

之间的地址差为0x5008

观察到的image文件大小为0x3B00

关于栈空间的定义如下:

alt text
定义在.bss空间的开头,因为栈空间和其他的未初始化变量(.bss)具有相同的特性:都需要在启动时清零。对于各个段的具体定义如下所示:alt text

alt text

并且: alt text alt text 也就是说,如果有更高级的,当务之急是处理更高级的;处理完了之后再把原来的东西全部写回去

alt text
alt text
alt text

os lab1
https://zrwrz.github.io/2025/10/09/os-lab1/
作者
zrw
发布于
2025年10月9日
许可协议