diff --git a/README.md b/README.md index d7bdb30..e68269c 100644 --- a/README.md +++ b/README.md @@ -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` 下全部测试用例;如有需要,也可以自行编写批量测试脚本统一执行。 diff --git a/doc/Lab1-语法树构建.md b/doc/Lab1-语法树构建.md index c0321f6..3198dee 100644 --- a/doc/Lab1-语法树构建.md +++ b/doc/Lab1-语法树构建.md @@ -57,7 +57,7 @@ java -jar third_party/antlr-4.13.2-complete.jar \ ## 6. Lab1 测试建议 -按提供的测试输入回归验证: +先用单个样例检查语法树输出是否基本正常: 1. 运行 `./build/bin/compiler --emit-parse-tree ` 检查解析是否成功。 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,再进入后续阶段。 diff --git a/doc/Lab2-中间表示生成.md b/doc/Lab2-中间表示生成.md index d6f50f1..bdb73c1 100644 --- a/doc/Lab2-中间表示生成.md +++ b/doc/Lab2-中间表示生成.md @@ -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` 链路都能通过;如有需要,也可以自行编写批量测试脚本统一执行。 diff --git a/doc/Lab3-指令选择与汇编生成.md b/doc/Lab3-指令选择与汇编生成.md index e3a40a4..5a4b657 100644 --- a/doc/Lab3-指令选择与汇编生成.md +++ b/doc/Lab3-指令选择与汇编生成.md @@ -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` 下全部测试用例逐个回归,确认代码生成结果能够通过统一验证;如有需要,也可以自行编写批量测试脚本统一执行。 diff --git a/doc/Lab4-寄存器分配.md b/doc/Lab4-寄存器分配.md index 7b52daf..4ea4acd 100644 --- a/doc/Lab4-寄存器分配.md +++ b/doc/Lab4-寄存器分配.md @@ -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、无效拷贝、冗余访存与低效机器指令,以提升最终性能表现。 diff --git a/doc/Lab5-基本标量优化.md b/doc/Lab5-基本标量优化.md index d6820b8..61c1076 100644 --- a/doc/Lab5-基本标量优化.md +++ b/doc/Lab5-基本标量优化.md @@ -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` 下全部测试用例逐个回归;如有需要,也可以自行编写批量测试脚本统一执行。 --- diff --git a/doc/Lab6-并行与循环优化.md b/doc/Lab6-并行与循环优化.md index 1b5d247..0aa5cee 100644 --- a/doc/Lab6-并行与循环优化.md +++ b/doc/Lab6-并行与循环优化.md @@ -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` 只用于展示如何观察单个样例的输出差异;实际评估优化效果时,仍应结合更多测试用例,必要时覆盖全部测试集。 + ---