fix(ir): 规范ir实现
This commit is contained in:
@@ -69,3 +69,8 @@ java -jar third_party/antlr-4.13.2-complete.jar \
|
||||
# 仅输出语法树
|
||||
./build/bin/compiler --emit-parse-tree test/test_case/simple_add.sy
|
||||
```
|
||||
|
||||
## 7. 关于 AST 的建议
|
||||
|
||||
同学们也可以自行设计一层抽象语法树(AST),将 ANTLR 语法树先转换为 AST,再进入后续阶段。
|
||||
这样可以减少对具体文法细节的依赖,使语义分析、IR 生成和后续扩展更清晰。这里不做具体要求。
|
||||
|
||||
@@ -57,6 +57,9 @@ Lab2 的目标是在该示例基础上扩展语义覆盖范围,逐步把更多
|
||||
|
||||
说明:当前阶段变量统一采用内存模型:先 `alloca` 分配栈槽,再通过 `store/load` 读写。即使变量由常量初始化(如 `int a = 1;`),也会先 `store` 到栈槽,而不是直接把变量替换成 SSA 值。后续实验中,同学可按需求再重构。
|
||||
|
||||
此外,当前 IR 还维护了最基本的 use-def 关系:每个 `Value` 会记录哪些 `Instruction` 使用了它。
|
||||
这对后续做数据流分析、死代码删除、常量传播等优化会很有帮助;但目前相关实现,接口仍不完整,后续实验中还需要同学继续补充和完善。
|
||||
|
||||
## 6. 构建与运行
|
||||
|
||||
```bash
|
||||
|
||||
Reference in New Issue
Block a user