style(doc): 完善实验文档验证要求

master
Lane0218 7 days ago
parent 1449cf3a01
commit 422a30e5a8

@ -94,4 +94,5 @@ cmake --build build -j "$(nproc)"
./scripts/verify_asm.sh test/test_case/simple_add.sy test/test_result/asm --run
```
如果最终看到 `输出匹配: test/test_case/simple_add.out`,说明当前最小子集示例 `return a + b` 的完整链路已经跑通。
如果最终看到 `输出匹配: test/test_case/simple_add.out`,说明当前示例用例 `return a + b` 的完整链路已经跑通。
但这条命令只适合做单个用例检查。完成对应实验后,不能只停留在 `simple_add`,还应覆盖 `test/test_case` 下全部测试用例;如有需要,也可以自行编写批量测试脚本统一执行。

@ -57,7 +57,7 @@ java -jar third_party/antlr-4.13.2-complete.jar \
## 6. Lab1 测试建议
按提供的测试输入回归验证
先用单个样例检查语法树输出是否基本正常
1. 运行 `./build/bin/compiler --emit-parse-tree <case.sy>` 检查解析是否成功。
2. 出现报错时优先回查 `SysY.g4` 逻辑。
@ -68,6 +68,8 @@ java -jar third_party/antlr-4.13.2-complete.jar \
./build/bin/compiler --emit-parse-tree test/test_case/simple_add.sy
```
但最终不能只检查 `simple_add`。完成 Lab1 后,应至少对 `test/test_case` 下全部 `.sy` 用例逐个验证解析是否成功;如有需要,也可以自行编写批量测试脚本统一执行。
## 7. 关于 AST 的建议
同学们也可以自行设计一层抽象语法树AST将 ANTLR 语法树先转换为 AST再进入后续阶段。

@ -68,7 +68,7 @@ cmake --build build -j "$(nproc)"
## 7. Lab2 验证方式
项目编译后按提供测试输入回归
可先用单个样例检查 IR 输出是否基本正确
```bash
./build/bin/compiler --emit-ir test/test_case/simple_add.sy
@ -86,3 +86,5 @@ cmake --build build -j "$(nproc)"
```bash
./scripts/verify_ir.sh test/test_case/simple_add.sy test/test_result/ir --run
```
但最终不能只检查 `simple_add`。完成 Lab2 后,应对 `test/test_case` 下全部测试用例逐个回归,确认 IR 生成与 `--run` 链路都能通过;如有需要,也可以自行编写批量测试脚本统一执行。

@ -73,7 +73,7 @@ cmake --build build -j "$(nproc)"
## 7. Lab3 验证方式
项目编译后按提供测试输入回归
可先用单个样例检查汇编输出是否基本正确
```bash
./build/bin/compiler --emit-asm test/test_case/simple_add.sy
@ -85,4 +85,5 @@ cmake --build build -j "$(nproc)"
./scripts/verify_asm.sh test/test_case/simple_add.sy test/test_result/asm --run
```
若最终输出 `输出匹配: test/test_case/simple_add.out`,说明当前最小子集示例 `return a + b` 的完整后端链路已经跑通。
若最终输出 `输出匹配: test/test_case/simple_add.out`,说明当前示例用例 `return a + b` 的完整后端链路已经跑通。
但最终不能只检查 `simple_add`。完成 Lab3 后,应对 `test/test_case` 下全部测试用例逐个回归,确认代码生成结果能够通过统一验证;如有需要,也可以自行编写批量测试脚本统一执行。

@ -129,13 +129,13 @@ cmake --build build -j "$(nproc)"
## 7. Lab4 验证方式
项目编译后可先按当前最小样例检查后端链路是否仍能运行:
项目编译后可先用当前示例用例检查后端链路是否仍能运行:
```bash
./build/bin/compiler --emit-asm test/test_case/simple_add.sy
```
推荐继续使用统一脚本验证 “源码 -> 汇编 -> 可执行程序” 整体链路。`--run` 模式下会自动读取同名 `.in`,并将程序输出与退出码和同名 `.out` 比对,用于做最小回归
推荐继续使用统一脚本验证 “源码 -> 汇编 -> 可执行程序” 整体链路。`--run` 模式下会自动读取同名 `.in`,并将程序输出与退出码和同名 `.out` 比对,用于检查单个用例的完整结果
```bash
./scripts/verify_asm.sh test/test_case/simple_add.sy test/test_result/asm --run
@ -147,4 +147,4 @@ cmake --build build -j "$(nproc)"
2. 是否减少了不必要的 `load/store` 与重复访存。
3. 是否消除了无意义的恒等操作。
完成 Lab4 后,最终不应只停留在 `simple_add` 这一最小示例,而应对 `test/test_case` 下全部测试用例逐个回归,确保生成代码功能正确;在此基础上,再尽量减少不必要的 spill/reload、无效拷贝、冗余访存与低效机器指令以提升最终性能表现。
完成 Lab4 后,最终不应只停留在 `simple_add` 这一示例用例,而应对 `test/test_case` 下全部测试用例逐个回归,确保生成代码功能正确;如有需要,也可以自行编写批量测试脚本统一执行。在此基础上,再尽量减少不必要的 spill/reload、无效拷贝、冗余访存与低效机器指令以提升最终性能表现。

@ -207,6 +207,8 @@ cmake --build build -j "$(nproc)"
./build/bin/compiler --emit-ir test/test_case/simple_add.sy
```
这条命令只适合先观察单个样例的 IR 形态。完成 Lab5 后,不能只检查 `simple_add`,还应覆盖 `test/test_case` 下全部测试用例。
### 8.2 语义回归
```bash
@ -215,5 +217,6 @@ cmake --build build -j "$(nproc)"
```
目标:脚本自动读取同名 `.in`,并将程序输出与退出码和同名 `.out` 比对,确保优化后程序行为与优化前保持一致。
完成 Lab5 后,应对 `test/test_case` 下全部测试用例逐个回归;如有需要,也可以自行编写批量测试脚本统一执行。
---

@ -163,6 +163,8 @@ cmake --build build -j "$(nproc)"
`--run` 模式下脚本会自动读取同名 `.in`,并将程序输出与退出码和同名 `.out` 比对。
完成 Lab6 后,不能只检查 `simple_add` 这类单个样例,而应对 `test/test_case` 下全部测试用例逐个回归;如有需要,也可以自行编写批量测试脚本统一执行。
### 9.2 优化效果对比(示例)
```bash
@ -171,4 +173,6 @@ cmake --build build -j "$(nproc)"
./build/bin/compiler --emit-asm test/test_case/simple_add.sy
```
这里的 `simple_add` 只用于展示如何观察单个样例的输出差异;实际评估优化效果时,仍应结合更多测试用例,必要时覆盖全部测试集。
---

Loading…
Cancel
Save