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 工具链
|
### 2.3 安装 LLVM 工具链
|
||||||
|
|
||||||
`scripts/verify_ir.sh` 在 `--run` 模式下会调用 LLVM 工具链(`llc` 与 `clang`)将生成的 IR 编译并运行。
|
`scripts/verify_ir.sh` 在 `--run` 模式下会调用 LLVM 工具链(`llc` 与 `clang`)将生成的 IR 编译、运行,并在存在同名 `.out` 时自动比对输出结果。
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo apt update
|
sudo apt update
|
||||||
@@ -88,10 +88,10 @@ cmake --build build -j "$(nproc)"
|
|||||||
./build/bin/compiler --help
|
./build/bin/compiler --help
|
||||||
```
|
```
|
||||||
|
|
||||||
跑完整编译流程自检:从 SysY 源码生成 AArch64 汇编,完成汇编、链接,并在 QEMU 下运行结果程序:
|
跑完整编译流程自检:从 SysY 源码生成 AArch64 汇编,完成汇编、链接,在 QEMU 下运行结果程序,并与 `test/test_case` 下同名 `.out` 自动比对:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./scripts/verify_asm.sh test/test_case/simple_add.sy test/test_result/asm --run
|
./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
|
./build/bin/compiler --emit-parse-tree test/test_case/simple_add.sy
|
||||||
```
|
```
|
||||||
|
|
||||||
推荐使用统一脚本验证 “IR -> LLVM 后端 -> 可执行程序” 整体链路,用于验证 IR 的正确性:
|
推荐使用统一脚本验证 “IR -> LLVM 后端 -> 可执行程序” 整体链路。`--run` 模式下会自动读取同名 `.in`,并将程序输出与退出码和同名 `.out` 比对,用于验证 IR 的正确性:
|
||||||
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
|||||||
@@ -79,10 +79,10 @@ cmake --build build -j "$(nproc)"
|
|||||||
./build/bin/compiler --emit-asm test/test_case/simple_add.sy
|
./build/bin/compiler --emit-asm test/test_case/simple_add.sy
|
||||||
```
|
```
|
||||||
|
|
||||||
推荐使用统一脚本验证 “源码 -> 汇编 -> 可执行程序” 整体链路,用于验证后端代码生成的正确性:
|
推荐使用统一脚本验证 “源码 -> 汇编 -> 可执行程序” 整体链路。`--run` 模式下会自动读取同名 `.in`,并将程序输出与退出码和同名 `.out` 比对,用于验证后端代码生成的正确性:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./scripts/verify_asm.sh test/test_case/simple_add.sy test/test_result/asm --run
|
./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
|
./build/bin/compiler --emit-asm test/test_case/simple_add.sy
|
||||||
```
|
```
|
||||||
|
|
||||||
推荐继续使用统一脚本验证 “源码 -> 汇编 -> 可执行程序” 整体链路,用于做最小回归:
|
推荐继续使用统一脚本验证 “源码 -> 汇编 -> 可执行程序” 整体链路。`--run` 模式下会自动读取同名 `.in`,并将程序输出与退出码和同名 `.out` 比对,用于做最小回归:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./scripts/verify_asm.sh test/test_case/simple_add.sy test/test_result/asm --run
|
./scripts/verify_asm.sh test/test_case/simple_add.sy test/test_result/asm --run
|
||||||
|
|||||||
@@ -214,6 +214,6 @@ cmake --build build -j "$(nproc)"
|
|||||||
./scripts/verify_asm.sh test/test_case/simple_add.sy test/test_result/asm --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
|
./scripts/verify_asm.sh test/test_case/simple_add.sy test/test_result/asm --run
|
||||||
```
|
```
|
||||||
|
|
||||||
|
`--run` 模式下脚本会自动读取同名 `.in`,并将程序输出与退出码和同名 `.out` 比对。
|
||||||
|
|
||||||
### 9.2 优化效果对比(示例)
|
### 9.2 优化效果对比(示例)
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
|||||||
Reference in New Issue
Block a user