增加文档
This commit is contained in:
parent
303e8aa32b
commit
becea1f7c4
69
src/main/java/org/jcnc/snow/compiler/ir/doc/README.md
Normal file
69
src/main/java/org/jcnc/snow/compiler/ir/doc/README.md
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
# Snow Compiler – IR 模块
|
||||||
|
|
||||||
|
> Snow 编译器的后端子模块 —— 将解析器生成的 AST 转换为中间表示(IR),并管理寄存器与指令序列
|
||||||
|
|
||||||
|
## 项目简介
|
||||||
|
|
||||||
|
**IR**(Intermediate Representation)模块位于 Snow 编译器的后端,承担将上游语法树(AST)“降解”为可供后续优化、寄存器分配与目标代码生成的中间指令流的任务。
|
||||||
|
它定义了 IR 程序、函数、指令与操作数的核心抽象,并提供了一个从 AST 到 IR 的构建器,便于插入各种优化 Pass 或不同后端。
|
||||||
|
|
||||||
|
## 核心功能
|
||||||
|
|
||||||
|
- **AST → IR 构建器**
|
||||||
|
`BasicIRBuilder` 递归遍历 AST 节点,生成 `IRProgram`、`IRFunction` 与指令序列。
|
||||||
|
- **虚拟寄存器管理**
|
||||||
|
按需分配唯一编号的 `VirtualRegister`,支持后续 SSA 扩展。
|
||||||
|
- **丰富的指令集**
|
||||||
|
算术运算、常量加载、返回、标签与跳转等指令由 `IROp` 枚举与 `IRInstruction` 子类统一管理。
|
||||||
|
- **模块化组织**
|
||||||
|
接口、值类型、指令实现、构建逻辑分包,职责清晰,易于扩展。
|
||||||
|
- **可扩展优化**
|
||||||
|
在 `IRFunction` 上可插入常量折叠、死代码消除、基本块重组等优化 Pass。
|
||||||
|
|
||||||
|
## 模块结构
|
||||||
|
|
||||||
|
```
|
||||||
|
org.jcnc.snow.compiler.ir
|
||||||
|
├── core/ // IR 核心类型与接口
|
||||||
|
│ ├── IRProgram.java
|
||||||
|
│ ├── IRFunction.java
|
||||||
|
│ ├── IRInstruction.java
|
||||||
|
│ ├── IROp.java
|
||||||
|
│ └── IRValue.java
|
||||||
|
│
|
||||||
|
├── value/ // 各类 IR 值类型
|
||||||
|
│ ├── VirtualRegister.java
|
||||||
|
│ ├── Constant.java
|
||||||
|
│ └── Label.java
|
||||||
|
│
|
||||||
|
├── instr/ // 具体指令实现
|
||||||
|
│ ├── LoadConstInstruction.java
|
||||||
|
│ ├── BinOpInstruction.java
|
||||||
|
│ ├── UnaryOpInstruction.java
|
||||||
|
│ └── ReturnInstruction.java
|
||||||
|
│
|
||||||
|
└── builder/ // AST → IR 构建器
|
||||||
|
└── BasicIRBuilder.java
|
||||||
|
```
|
||||||
|
|
||||||
|
## 快速上手
|
||||||
|
|
||||||
|
```
|
||||||
|
// 1. 假设已有一颗通过 Parser 生成的 AST 根节点列表
|
||||||
|
List<Node> roots = ...;
|
||||||
|
|
||||||
|
// 2. 创建 IR 构建器
|
||||||
|
BasicIRBuilder irBuilder = new BasicIRBuilder();
|
||||||
|
|
||||||
|
// 3. 构建 IRProgram
|
||||||
|
IRProgram program = irBuilder.buildProgram(roots);
|
||||||
|
|
||||||
|
// 4. 输出或后续优化
|
||||||
|
System.out.println(program);
|
||||||
|
```
|
||||||
|
|
||||||
|
## 开发环境
|
||||||
|
|
||||||
|
- JDK 21 或更高版本
|
||||||
|
- 建议使用 Maven 进行构建管理
|
||||||
|
|
||||||
Loading…
x
Reference in New Issue
Block a user