Commit 843e628e authored by Yang's avatar Yang

fix a bug

parent daa009a2
...@@ -2,5 +2,5 @@ ...@@ -2,5 +2,5 @@
本仓库为 USTC 编译原理和技术 2025 的课程实验仓库。在本学期的编译实验中,你们将构建一个从词法分析器开始到后端代码生成的JIANMU编译器。 本仓库为 USTC 编译原理和技术 2025 的课程实验仓库。在本学期的编译实验中,你们将构建一个从词法分析器开始到后端代码生成的JIANMU编译器。
本分支提供了直到 lab2 的助教代码实现,可以用于完成 lab3 phase2 本分支用于完成 lab4
...@@ -142,7 +142,7 @@ void Mem2Reg::rename(BasicBlock *bb) { ...@@ -142,7 +142,7 @@ void Mem2Reg::rename(BasicBlock *bb) {
// 步骤一:对每个 alloca 非数组变量(局部变量), 在其存储值栈存入其当前的最新值(也就是目前的栈顶值) // 步骤一:对每个 alloca 非数组变量(局部变量), 在其存储值栈存入其当前的最新值(也就是目前的栈顶值)
// 步骤二:遍历基本块所有指令,执行操作并记录需要删除的 load/store/alloca 指令(注意: 并非所有 load/store/alloca 都是 Mem2Reg 需要处理的) // 步骤二:遍历基本块所有指令,执行操作并记录需要删除的 load/store/alloca 指令(注意: 并非所有 load/store/alloca 都是 Mem2Reg 需要处理的)
// - 步骤三: 将 store 指令存储的值,作为其对应局部变量的最新值(更新栈顶) // - 步骤三: 将 store 指令存储的值,作为其对应局部变量的最新值(更新栈顶)
// - 步骤四: 将 phi 指令的所有使用替换为其对应的局部变量的最新值 // - 步骤四: 将 phi 指令作为其对应局部变量的最新值(更新栈顶)
// - 步骤五: 将 load 指令的所有使用替换为其读取的局部变量的最新值 // - 步骤五: 将 load 指令的所有使用替换为其读取的局部变量的最新值
// 步骤六:为所有后继块的 phi 添加参数 // 步骤六:为所有后继块的 phi 添加参数
// 步骤七:对 bb 在支配树上的所有后继节点,递归执行 rename 操作 // 步骤七:对 bb 在支配树上的所有后继节点,递归执行 rename 操作
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment