From 8c2c06069128b26ec75618650af78462c8264fec Mon Sep 17 00:00:00 2001 From: Lane0218 Date: Fri, 26 Dec 2025 13:07:43 +0800 Subject: [PATCH] =?UTF-8?q?docs(doc):=20=E5=90=8C=E6=AD=A5=20IR/MIR=20?= =?UTF-8?q?=E7=9B=AE=E5=BD=95=E7=BB=93=E6=9E=84=E4=B8=8E=E5=91=BD=E5=90=8D?= =?UTF-8?q?=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/目录结构设计.md | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/doc/目录结构设计.md b/doc/目录结构设计.md index 61224b7..ec37ad1 100644 --- a/doc/目录结构设计.md +++ b/doc/目录结构设计.md @@ -70,7 +70,7 @@ │ │ ├── Value.cpp │ │ ├── Instruction.cpp │ │ ├── IRBuilder.cpp -│ │ ├── Printer.cpp +│ │ ├── IRPrinter.cpp │ │ ├── analysis/ │ │ │ ├── DominatorTree.cpp │ │ │ └── LoopInfo.cpp @@ -81,17 +81,17 @@ │ │ ├── DCE.cpp │ │ └── CFGSimplify.cpp │ ├── mir/ -│ │ ├── MachineContext.cpp -│ │ ├── MachineFunction.cpp -│ │ ├── MachineBasicBlock.cpp -│ │ ├── MachineInstr.cpp +│ │ ├── MIRContext.cpp +│ │ ├── MIRFunction.cpp +│ │ ├── MIRBasicBlock.cpp +│ │ ├── MIRInstr.cpp │ │ ├── Register.cpp │ │ ├── Lowering.cpp +│ │ ├── RegAlloc.cpp │ │ ├── FrameLowering.cpp │ │ ├── AsmPrinter.cpp │ │ └── passes/ │ │ ├── PassManager.cpp -│ │ ├── RegAlloc.cpp │ │ └── Peephole.cpp │ └── utils/ │ ├── Log.cpp @@ -199,7 +199,7 @@ - 指令体系:二元运算、比较、load/store、call、br/condbr、ret、phi、alloca 等(按需求逐步补齐)。 - `src/ir/IRBuilder.cpp` - IR 构建工具:集中管理插入点与指令创建,降低 IRGen 复杂度。 -- `src/ir/Printer.cpp` +- `src/ir/IRPrinter.cpp` - IR 文本输出:打印为 `.ll` 风格文本,支撑调试与测试对比。 - `src/ir/analysis/DominatorTree.cpp` - 支配树分析:为 `mem2reg`、部分 CFG 优化与循环分析提供基础能力。 @@ -218,27 +218,27 @@ #### 3.2.8 `src/mir/`:Machine IR -- `src/mir/MachineContext.cpp` - - MIR 上下文:保存目标约束、指令集信息等(寄存器类定义合并在 `Register.cpp` 中)。 -- `src/mir/MachineFunction.cpp` +- `src/mir/MIRContext.cpp` + - MIR 上下文:保存目标约束、指令集信息等。 +- `src/mir/MIRFunction.cpp` - 机器函数:包含机器基本块、栈帧信息、虚拟/物理寄存器管理等。 -- `src/mir/MachineBasicBlock.cpp` +- `src/mir/MIRBasicBlock.cpp` - 机器基本块:机器指令列表与 CFG 信息。 -- `src/mir/MachineInstr.cpp` +- `src/mir/MIRInstr.cpp` - 机器指令:opcode + operands(寄存器/立即数/栈槽/符号/标签等)。 - `src/mir/Register.cpp` - 寄存器表示:区分虚拟寄存器与物理寄存器,提供编号/属性等。 - 寄存器类(RegClass):GPR/FPR 等分类与可分配集合描述(供 RA 使用)。 - `src/mir/Lowering.cpp` - IR → MIR:从平台无关 IR 生成 AArch64 指令的 MIR(在此完成指令选择),初始使用虚拟寄存器。 +- `src/mir/RegAlloc.cpp` + - 寄存器分配主入口:将虚拟寄存器分配到物理寄存器,并驱动 spill/reload 等后续处理。 - `src/mir/FrameLowering.cpp` - 栈帧布局与序言尾声:根据寄存器分配阶段记录的栈槽需求计算栈大小与对齐,插入 prologue/epilogue,保存/恢复 callee-saved 等。 - `src/mir/AsmPrinter.cpp` - 汇编打印:将最终机器指令 MIR 打印为 ARMv8-A 汇编 `.s`。 - `src/mir/passes/PassManager.cpp` - MIR pass 管理:组织后端 pass 的运行顺序(PreRA/PostRA/PEI 等阶段)。 -- `src/mir/passes/RegAlloc.cpp` - - 寄存器分配:将虚拟寄存器分配到物理寄存器;spill/reload 在此阶段完成。 - `src/mir/passes/Peephole.cpp` - 窥孔优化:删除冗余 move、合并常见指令模式,提升最终汇编质量。