中科大编译原理实验中PASS模块

算法流程图

LoopSearch

在这里插入图片描述

Mem2Reg

名词解释

支配性、严格支配性、直接支配性、支配边界
支配性

如果每一条从流图到入口节点到节点n都需要经过节点d,则称d支配n,又记d (支配)dominance n。
在这里插入图片描述
如上图入口节点1到节点4都需要经过节点3,3节点则支配节点4.

严格支配性

当d!=n时且d dom n ,则d sdom n

直接支配性

在这里插入图片描述
在支配树(dominator tree)中,对于结点 n 来说,从根节点到结点 n 所在路径上的结点(不包括)都严格支配结点 n,例如上图中从根节点 1 -> 2 -> 3,其中结点 1 和 结点 2 都严格支配结点 3。该路径上离结点 n 最近的结点叫做结点 n 的 直接支配结点(immediate node),用 IDom(n) 表示,例如上图中 IDom(6) = 2。换句话说,就是在严格支配性的基础上还得是节点n前的最后一个严格支配节点。

支配边界
定义 Y 是 X 的支配边界,当且仅当 X 支配 Y 的一个前驱结点(CFG)同时 X 并不严格支配 Y

在这里插入图片描述

流程图

![在这里插入图片描述](https://img-blog.csdnimg.cn/86dbc1e62dfe465682bfdd3429a61a62.png

ActiveVars(活跃变量)

![在这里插入图片描述](https://img-blog.csdnimg.cn/7d88eb78eb394515bb0ac38ccde20c80.png在这里插入图片描述

在这里插入图片描述

名词解释

活跃变量:对于变量x和程序点p,如果在流图中沿着从p开始的某条路径会引用变量x在p点的值,则称变量x在点p是活跃(live)的,否则称变量x在点p不活跃(dead)。
out为基本块输出后的活跃变量
in为基本块输入的活跃变量
use为在这个基本块被引用的变量,在其之前未被定义。
def为在这个基本块被定义的变量,在其之前未被应用。


那这个算法什么意思呢?在这里插入图片描述
这个很好理解,B的输出就是B后继的输入嘛
在这里插入图片描述
useB则是B被引用了变量,虽然没有被定义但是也是活跃的。out[b]-def表示他俩的差集,out[B]是经过了B以后,但是我们要考虑刚定义了变量在以后是不一定使用的可能不是活跃变量所以需要作差。

循环不变式

![在这里插入图片描述](https://img-blog.csdnimg.cn/9a54e27aa9754cec9e1740c166bea977.png在这里插入图片描述

常量传播

根据不同操作,直接将常量运算替代进入。通过if else判断操作数即可。需要额外考虑判断、phi、是否变量被重新赋值等因素

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值