docs(doc): 同步验证脚本自动比对说明
This commit is contained in:
@@ -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` 的完整链路已经跑通。
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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` 的完整后端链路已经跑通。
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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` 比对,确保优化后程序行为与优化前保持一致。
|
||||
|
||||
---
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user