diff --git a/README.md b/README.md index b843a5a..d7bdb30 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ sudo apt install -y build-essential cmake git openjdk-11-jre ### 2.3 安装 LLVM 工具链 -`scripts/verify_ir.sh` 在 `--run` 模式下会调用 LLVM 工具链(`llc` 与 `clang`)将生成的 IR 编译并运行。 +`scripts/verify_ir.sh` 在 `--run` 模式下会调用 LLVM 工具链(`llc` 与 `clang`)将生成的 IR 编译、运行,并在存在同名 `.out` 时自动比对输出结果。 ```bash sudo apt update @@ -88,10 +88,10 @@ cmake --build build -j "$(nproc)" ./build/bin/compiler --help ``` -跑完整编译流程自检:从 SysY 源码生成 AArch64 汇编,完成汇编、链接,并在 QEMU 下运行结果程序: +跑完整编译流程自检:从 SysY 源码生成 AArch64 汇编,完成汇编、链接,在 QEMU 下运行结果程序,并与 `test/test_case` 下同名 `.out` 自动比对: ```bash ./scripts/verify_asm.sh test/test_case/simple_add.sy test/test_result/asm --run ``` -如果最终看到 `退出码: 3`,说明当前最小子集示例 `return a + b` 的完整链路已经跑通。 +如果最终看到 `输出匹配: test/test_case/simple_add.out`,说明当前最小子集示例 `return a + b` 的完整链路已经跑通。 diff --git a/doc/Lab2-中间表示生成.md b/doc/Lab2-中间表示生成.md index 4c08c5c..a30df09 100644 --- a/doc/Lab2-中间表示生成.md +++ b/doc/Lab2-中间表示生成.md @@ -81,7 +81,7 @@ cmake --build build -j "$(nproc)" ./build/bin/compiler --emit-parse-tree test/test_case/simple_add.sy ``` -推荐使用统一脚本验证 “IR -> LLVM 后端 -> 可执行程序” 整体链路,用于验证 IR 的正确性: +推荐使用统一脚本验证 “IR -> LLVM 后端 -> 可执行程序” 整体链路。`--run` 模式下会自动读取同名 `.in`,并将程序输出与退出码和同名 `.out` 比对,用于验证 IR 的正确性: ```bash diff --git a/doc/Lab3-指令选择与汇编生成.md b/doc/Lab3-指令选择与汇编生成.md index 507b2b6..8ced82e 100644 --- a/doc/Lab3-指令选择与汇编生成.md +++ b/doc/Lab3-指令选择与汇编生成.md @@ -79,10 +79,10 @@ cmake --build build -j "$(nproc)" ./build/bin/compiler --emit-asm test/test_case/simple_add.sy ``` -推荐使用统一脚本验证 “源码 -> 汇编 -> 可执行程序” 整体链路,用于验证后端代码生成的正确性: +推荐使用统一脚本验证 “源码 -> 汇编 -> 可执行程序” 整体链路。`--run` 模式下会自动读取同名 `.in`,并将程序输出与退出码和同名 `.out` 比对,用于验证后端代码生成的正确性: ```bash ./scripts/verify_asm.sh test/test_case/simple_add.sy test/test_result/asm --run ``` -若最终输出 `退出码: 3`,说明当前最小子集示例 `return a + b` 的完整后端链路已经跑通。 +若最终输出 `输出匹配: test/test_case/simple_add.out`,说明当前最小子集示例 `return a + b` 的完整后端链路已经跑通。 diff --git a/doc/Lab4-寄存器分配.md b/doc/Lab4-寄存器分配.md index a7cf33f..4e8116d 100644 --- a/doc/Lab4-寄存器分配.md +++ b/doc/Lab4-寄存器分配.md @@ -135,7 +135,7 @@ cmake --build build -j "$(nproc)" ./build/bin/compiler --emit-asm test/test_case/simple_add.sy ``` -推荐继续使用统一脚本验证 “源码 -> 汇编 -> 可执行程序” 整体链路,用于做最小回归: +推荐继续使用统一脚本验证 “源码 -> 汇编 -> 可执行程序” 整体链路。`--run` 模式下会自动读取同名 `.in`,并将程序输出与退出码和同名 `.out` 比对,用于做最小回归: ```bash ./scripts/verify_asm.sh test/test_case/simple_add.sy test/test_result/asm --run diff --git a/doc/Lab5-基本标量优化.md b/doc/Lab5-基本标量优化.md index 56d8260..e523b8e 100644 --- a/doc/Lab5-基本标量优化.md +++ b/doc/Lab5-基本标量优化.md @@ -209,11 +209,11 @@ cmake --build build -j "$(nproc)" ### 8.2 语义回归 -```bash + ```bash ./scripts/verify_ir.sh test/test_case/simple_add.sy test/test_result/ir --run ./scripts/verify_asm.sh test/test_case/simple_add.sy test/test_result/asm --run -``` + ``` -目标:优化后程序行为与优化前保持一致。 +目标:脚本自动读取同名 `.in`,并将程序输出与退出码和同名 `.out` 比对,确保优化后程序行为与优化前保持一致。 --- diff --git a/doc/Lab6-并行与循环优化.md b/doc/Lab6-并行与循环优化.md index 206f381..7099702 100644 --- a/doc/Lab6-并行与循环优化.md +++ b/doc/Lab6-并行与循环优化.md @@ -161,6 +161,8 @@ cmake --build build -j "$(nproc)" ./scripts/verify_asm.sh test/test_case/simple_add.sy test/test_result/asm --run ``` +`--run` 模式下脚本会自动读取同名 `.in`,并将程序输出与退出码和同名 `.out` 比对。 + ### 9.2 优化效果对比(示例) ```bash