style(doc): 简化实验文档文件指引
This commit is contained in:
@@ -12,39 +12,17 @@ Lab2 的目标是在该示例基础上扩展语义覆盖范围,逐步把更多
|
||||
2. 理解当前语法树 -> IR 的最小实现流程。
|
||||
3. 在现有框架上扩展 IR 生成能力,使其覆盖课程要求的Sysy语法。
|
||||
|
||||
## 3. 当前代码框架
|
||||
## 3. 相关文件
|
||||
|
||||
1. IR 定义与打印
|
||||
- `include/ir/IR.h`
|
||||
- `src/ir/IRBuilder.cpp`
|
||||
- `src/ir/IRPrinter.cpp`
|
||||
以下文件与本实验内容相关,建议优先阅读。
|
||||
|
||||
2. 语法树 -> IR 生成器
|
||||
- `include/irgen/IRGen.h`
|
||||
- `src/irgen/IRGenDriver.cpp`
|
||||
- `src/irgen/IRGenFunc.cpp`
|
||||
- `src/irgen/IRGenDecl.cpp`
|
||||
- `src/irgen/IRGenStmt.cpp`
|
||||
- `src/irgen/IRGenExp.cpp`
|
||||
- `include/ir/IR.h`
|
||||
- `include/irgen/IRGen.h`
|
||||
- `src/irgen/IRGenDecl.cpp`
|
||||
- `src/irgen/IRGenStmt.cpp`
|
||||
- `src/irgen/IRGenExp.cpp`
|
||||
|
||||
3. 入口流程
|
||||
- `src/main.cpp`
|
||||
|
||||
## 4. Lab2 需要补充的内容
|
||||
|
||||
1. 必须修改的文件
|
||||
- `src/irgen/IRGenDecl.cpp`
|
||||
- `src/irgen/IRGenStmt.cpp`
|
||||
- `src/irgen/IRGenExp.cpp`
|
||||
- `include/ir/IR.h`(当现有 IR 指令/类型不够用时)
|
||||
- `src/ir/IRBuilder.cpp`(当需要新增构建接口时)
|
||||
- `src/ir/IRPrinter.cpp`(新增 IR 指令后补齐打印)
|
||||
- `include/irgen/IRGen.h`(当需要扩展状态或辅助接口时)
|
||||
|
||||
2. 视实现需要可能修改
|
||||
- `src/main.cpp`(当需要调整输出阶段行为)
|
||||
|
||||
## 5. 当前最小示例实现说明
|
||||
## 4. 当前最小示例实现说明
|
||||
|
||||
当前语法树 -> IR 仅覆盖最小子集:
|
||||
|
||||
@@ -59,14 +37,14 @@ Lab2 的目标是在该示例基础上扩展语义覆盖范围,逐步把更多
|
||||
此外,当前 IR 还维护了最基本的 use-def 关系:每个 `Value` 会记录哪些 `Instruction` 使用了它。
|
||||
这对后续做数据流分析、死代码删除、常量传播等优化会很有帮助;但目前相关实现,接口仍不完整,后续实验中还需要同学继续补充和完善。
|
||||
|
||||
## 6. 构建与运行
|
||||
## 5. 构建与运行
|
||||
|
||||
```bash
|
||||
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
|
||||
cmake --build build -j "$(nproc)"
|
||||
```
|
||||
|
||||
## 7. Lab2 验证方式
|
||||
## 6. Lab2 验证方式
|
||||
|
||||
可先用单个样例检查 IR 输出是否基本正确:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user