预备知识

主线讲义假设你只学过基础 C 语法:变量、分支、循环、函数、数组。超出这些的东西,主线里会用“预备”小框给一句话的解释,想弄透就来这里。

不用一口气读完。主线里哪个小框看不懂,就点它的链接跳过来,读完对应一节再回去。每页的例子都在 prereq/examples/,本机有 gcc 就能跑。

主题

内存、地址与十六进制

内存是按编号排好的字节;地址为什么常写成 0x80000000;一个 int 占几个字节。

指针、结构体与 volatile

& 和 *;-> 是什么;为什么内核到处传地址;volatile 告诉编译器什么。

二进制与位运算

第几位怎么数;& | ~ << >>;“只改某几位,其他不动”的固定写法。

RISC-V 汇编最小集

寄存器;指令的格式;Lab1 用到的十几条指令;栈和函数调用在汇编里长什么样。

特权级与异常

CPU 为什么要分权限;异常发生时 CPU 自动做了什么;mret 怎么“返回”。

Git 基础

提交、分支、远端;add / commit / push / pull 的日常流程。

建议顺序

读 Lab0 之前:内存与地址、Git 基础。
读 Lab1 之前:指针、位运算、汇编、特权级与异常。