style(doc): 简化实验文档文件指引
This commit is contained in:
@@ -13,45 +13,17 @@ Lab3 的目标是在该示例基础上扩展后端语义覆盖范围,逐步把
|
||||
2. 理解当前 IR -> MIR -> 汇编输出的最小实现流程。
|
||||
3. 在现有框架上扩展后端代码生成能力,使其覆盖课程要求的 SysY 语义。
|
||||
|
||||
## 3. 当前代码框架
|
||||
## 3. 相关文件
|
||||
|
||||
1. MIR 定义与目标相关抽象
|
||||
- `include/mir/MIR.h`
|
||||
- `src/mir/MIRContext.cpp`
|
||||
- `src/mir/MIRFunction.cpp`
|
||||
- `src/mir/MIRBasicBlock.cpp`
|
||||
- `src/mir/MIRInstr.cpp`
|
||||
- `src/mir/Register.cpp`
|
||||
以下文件与本实验内容相关,建议优先阅读。
|
||||
|
||||
2. IR -> MIR 与汇编生成
|
||||
- `src/mir/Lowering.cpp`
|
||||
- `src/mir/RegAlloc.cpp`
|
||||
- `src/mir/FrameLowering.cpp`
|
||||
- `src/mir/AsmPrinter.cpp`
|
||||
- `include/mir/MIR.h`
|
||||
- `src/mir/Lowering.cpp`
|
||||
- `src/mir/RegAlloc.cpp`
|
||||
- `src/mir/FrameLowering.cpp`
|
||||
- `src/mir/AsmPrinter.cpp`
|
||||
|
||||
3. 入口流程
|
||||
- `src/main.cpp`
|
||||
- `include/utils/CLI.h`
|
||||
- `src/utils/CLI.cpp`
|
||||
|
||||
## 4. Lab3 需要补充的内容
|
||||
|
||||
1. 必须修改的文件
|
||||
- `src/mir/Lowering.cpp`
|
||||
- `src/mir/RegAlloc.cpp`
|
||||
- `src/mir/FrameLowering.cpp`
|
||||
- `src/mir/AsmPrinter.cpp`
|
||||
- `include/mir/MIR.h`(当现有 MIR 数据结构或接口不够用时)
|
||||
- `src/mir/MIRInstr.cpp`(当需要新增机器指令或操作数表达时)
|
||||
- `src/mir/MIRFunction.cpp`(当需要扩展栈帧或机器函数状态时)
|
||||
- `src/mir/Register.cpp`(当需要扩展物理/虚拟寄存器表示时)
|
||||
|
||||
2. 视实现需要可能修改
|
||||
- `src/main.cpp`(当需要调整输出阶段行为时)
|
||||
- `src/utils/CLI.cpp`(当需要扩展后端相关命令行选项时)
|
||||
- `scripts/verify_asm.sh`(当需要扩展统一验证脚本时)
|
||||
|
||||
## 5. 当前最小示例实现说明
|
||||
## 4. 当前最小示例实现说明
|
||||
|
||||
当前 IR -> 汇编仅覆盖最小子集:
|
||||
|
||||
@@ -61,17 +33,16 @@ Lab3 的目标是在该示例基础上扩展后端语义覆盖范围,逐步把
|
||||
4. `RegAlloc` 当前仅执行最小一致性检查,不实现真实寄存器分配。
|
||||
5. `FrameLowering` 当前会插入最小序言/尾声,并按 16 字节对齐栈帧。
|
||||
|
||||
|
||||
说明:当前阶段后端主要用于演示完整流程。即使中间值可以暂存在寄存器中,也会先写回栈槽,而不是直接构造更接近最终机器代码的寄存器流。后续实验中,同学可按需求继续扩展指令选择、寄存器分配、调用约定与控制流相关功能。
|
||||
|
||||
## 6. 构建与运行
|
||||
## 5. 构建与运行
|
||||
|
||||
```bash
|
||||
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
|
||||
cmake --build build -j "$(nproc)"
|
||||
```
|
||||
|
||||
## 7. Lab3 验证方式
|
||||
## 6. Lab3 验证方式
|
||||
|
||||
可先用单个样例检查汇编输出是否基本正确:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user