附录 A1:环境、工具链与预备知识

这门课默认你愿意动手写 C 代码,但不默认你已经学过完整编译原理课程。真正需要的前置知识主要是下面几类。

A1.1 你最好已经会什么

  • C 语言里的函数、结构体、指针、malloc/free
  • make 的最基本用法
  • 在终端里进入目录、运行命令、看错误输出
  • 知道“汇编”“链接”“可执行文件”是不同阶段

如果这些还不熟,不代表你不能学这门课,只是你需要准备好在阅读过程中反复回看代码和输出。

A1.2 这门课用到哪些工具

  • gcc:在主机上编译课程 lab
  • riscv64-unknown-linux-gnu-gcc / as / ld:生成和处理 RISC-V 目标代码
  • qemu-riscv32:在主机上运行 RISC-V 32 可执行文件

如果你在 Linux 上,优先先保证这三套工具能被 command -v 找到。

A1.3 为什么是 RISC-V

因为它的指令集相对干净,教学上更容易直接看到:

  • 返回值放在哪个寄存器
  • 参数怎样传递
  • 栈帧怎样建立
  • 条件跳转怎样编码

课程的重点不是“学会所有 RISC-V 指令”,而是把编译器输出如何映射到一套真实 ISA 上看明白。

A1.4 真正卡住时先做什么

如果你不确定问题是环境、讲义理解,还是自己代码写错了,优先按这个顺序排查:

  1. make clean && make test
  2. 仔细读第一条失败信息
  3. 对照 TASK.md 确认是不是改错文件
  4. 回到对应 chapter,重新看“为什么现在轮到它”

很多卡住并不是知识不会,而是边界没站稳。