From e111ea1cee69c849752ddf8e600512f540aeb37f Mon Sep 17 00:00:00 2001 From: guo guangyao <61312678+Alfrredgy@users.noreply.github.com> Date: Tue, 9 Jul 2024 00:13:31 +0800 Subject: [PATCH] Update 08CSE.md fixed a spell mistake and an index error in lcm --- 03Compiler/03Frontend/08CSE.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/03Compiler/03Frontend/08CSE.md b/03Compiler/03Frontend/08CSE.md index e52245cc..3c37977d 100644 --- a/03Compiler/03Frontend/08CSE.md +++ b/03Compiler/03Frontend/08CSE.md @@ -134,7 +134,7 @@ $$ 从公式上看,可能下沉表达式集合分为两部分。若表达式 $e\in Earliest(i,j)$,则表达式 e 一定是可能下沉的表达式,而另一部分的表达式来自于 从 $b_i$ 下沉下来的表达式,这些表达式满足在 $b_i$ 的入口处是可下沉的,并且这些表达式在 $b_i$ 不是向上展示的表达式,因为如果表达式 $e\in UEExpr(i)$,则表明表达式在 $b_i$ 中被求值,如果下沉,那么下沉的这个表达式则成为冗余表达式。 -#### 重新代码 +#### 重写代码 最后一步使用 $LaterIn(n)$ 和 $Later(i,j)$ 生成额外的集合指导编译器重写代码,额外集合包括 $Insert(i,j)$ 和 $Delete(i)$ 集合。 @@ -149,7 +149,7 @@ $$ 插入规则为: - 如果 $b_i$ 只有一个后继节点 $b_j$,则将 $Insert(i,j)$ 中的表达式插入到 $b_i$ 的出口处。 -- 如果 $b_j$ 只有一个前趋节点 $b_i$,则将 $Insert(i,j)$ 中的表达式插入到 $b_i$ 的入口处。 +- 如果 $b_j$ 只有一个前趋节点 $b_i$,则将 $Insert(i,j)$ 中的表达式插入到 $b_j$ 的入口处。 - 若前两个条件都不满足,则在边 {i->j} 上新建一个基本块,将 $Insert(i,j)$ 中的表达式插入到该基本块中。 需要注意的是,由于插入的是新的赋值语句,所以插入后,有一些表达式冗余了。比如对于一个基本块的向上展示的表达式。因此编译器对每个基本块都需要维护一个删除集合,记为 $Delete(i)$。其定义如下: