From 5a647ff9ca6b2d165e6d804e87dc390440dcd600 Mon Sep 17 00:00:00 2001 From: willson walter Date: Tue, 5 Dec 2023 16:29:02 +0800 Subject: [PATCH] - add baseline code - add title for ep20 --- ep20/README.md | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/ep20/README.md b/ep20/README.md index 79297c0..77e04a2 100644 --- a/ep20/README.md +++ b/ep20/README.md @@ -1,3 +1,35 @@ +# 以`CFG`和`地址化`为中心的编译构造实作 + +## 测试样例源码 + +``` CPP + +int dec1(int x) { + return x - 1; +} + +int main() { + int i = 10; + while(i > 0) { + if (i > 5) { + print(i); + if(i == 7) { + return 7; + } + } + + print("break"); + + i = dec1(i); + } + + return 0; +} + + + +``` + ## 编译步骤流程图 ```mermaid @@ -26,6 +58,7 @@ graph LR - [x] 编译到[ep18](..%2Fep18)的VM - [x] 扩展[ep18](..%2Fep18)的VM支持更丰富的[指令实现](../ep18/VM_Design.md) - [x] 线性化IR和CFG +- [x] 跳转优化(空标签和重复跳转) ### 线性化IR 我们的IR本质上是tree模式的,这样一来我们的线性化实际上延迟到了指令生成时。 @@ -34,7 +67,6 @@ graph LR ### CFG - - Original CFG ```mermaid graph TD