优化注释
This commit is contained in:
parent
49deeef9fd
commit
98ceb4faa8
@ -1,49 +1,31 @@
|
||||
# Snow Compiler – IR 模块
|
||||
# Snow Compiler - IR 模块
|
||||
|
||||
> Snow 编译器的中间表示子模块 —— 负责将带有类型和符号信息的 AST 转换为可优化的中间表示(IR)并管理相关数据结构
|
||||
> Snow 编译器的中间表示模块 —— 负责构建、组织和输出中间表示指令(IR)
|
||||
|
||||
## 项目简介
|
||||
|
||||
**IR** 是 [Snow 编译器]() 的后端子模块,承担在语义分析(Semantic)之后,将抽象语法树(AST)构建成一套通用、可扩展的中间表示。
|
||||
该模块定义了 IR 的核心数据结构、指令集与构建流程,通过分层的 Builder API 从高层 AST 生成完整的 `IRProgram`,为后续优化和目标代码生成阶段提供坚实基础。
|
||||
**IR(Intermediate Representation)** 是 [Snow 编译器]() 项目的核心模块,承担中间表示的构建、组织与管理任务。
|
||||
它用于在前端语法分析与后端目标代码生成之间,提供结构清晰、便于优化和转换的抽象表示形式。
|
||||
|
||||
IR 模块以类 SSA(Static Single Assignment)形式设计,通过统一的指令体系、虚拟寄存器模型和构建器架构,实现了良好的表达力与可扩展性,为后续优化和代码生成阶段打下基础。
|
||||
|
||||
## 核心功能
|
||||
|
||||
* **IR 构建**:`IRProgramBuilder` 将顶层 AST 节点列表或模块节点,构建为完整的 `IRProgram`
|
||||
* **分块构建器**:`FunctionBuilder`、`ExpressionBuilder`、`StatementBuilder` 在上下文 `IRContext` 和 `IRBuilderScope` 中协同生成 IR
|
||||
* **指令定义**:提供一元运算、二元运算、加载常量、返回等指令实现
|
||||
* **核心数据结构**:`IRProgram`、`IRFunction`、`IRInstruction`、`IROpCode`、`IRValue`
|
||||
* **值管理**:支持虚拟寄存器(`IRVirtualRegister`)、常量(`IRConstant`)、标签(`IRLabel`)
|
||||
* **可扩展性**:`InstructionFactory` 支持自定义或扩展新指令
|
||||
* **统一的中间表示模型**:表达控制流与数据流,支持函数、指令、值等核心结构
|
||||
* **IR 构建器体系**:模块化构建函数、表达式与语句 IR,简化前端对接
|
||||
* **灵活的指令层级结构**:支持二元操作、跳转、返回等多种基本指令
|
||||
* **寄存器与常量模型**:统一管理虚拟寄存器、常量、标签等值类型
|
||||
* **IR 打印与调试支持**:辅助输出 IR 文本格式,支持可视化与调试
|
||||
|
||||
## 模块结构
|
||||
|
||||
```
|
||||
ir/
|
||||
├── builder/ // AST → IR 构建器
|
||||
│ ├── IRProgramBuilder.java
|
||||
│ ├── FunctionBuilder.java
|
||||
│ ├── ExpressionBuilder.java
|
||||
│ ├── StatementBuilder.java
|
||||
│ ├── InstructionFactory.java
|
||||
│ ├── IRContext.java
|
||||
│ └── IRBuilderScope.java
|
||||
├── core/ // 核心 IR 数据结构
|
||||
│ ├── IRProgram.java
|
||||
│ ├── IRFunction.java
|
||||
│ ├── IRInstruction.java
|
||||
│ ├── IROpCode.java
|
||||
│ └── IRValue.java
|
||||
├── instruction/ // 各类指令实现
|
||||
│ ├── BinaryOperationInstruction.java
|
||||
│ ├── UnaryOperationInstruction.java
|
||||
│ ├── LoadConstInstruction.java
|
||||
│ └── ReturnInstruction.java
|
||||
├── value/ // IR 值类型
|
||||
│ ├── IRVirtualRegister.java
|
||||
│ ├── IRConstant.java
|
||||
│ └── IRLabel.java
|
||||
└── doc/ // 文档与示例(README 等)
|
||||
├── builder/ // 构建器模块:负责构造表达式、函数与语句的 IR
|
||||
├── core/ // 核心定义:IR 基础结构,如函数、指令、程序、访问器等
|
||||
├── instruction/ // 指令实现:具体的 IR 指令类型(如加法、跳转、返回等)
|
||||
├── value/ // 值模型:常量、标签、虚拟寄存器等
|
||||
└── doc/ // 模块文档
|
||||
```
|
||||
|
||||
## 开发环境
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user