控制流分析

           控制流分析是数据流分析以及后端优化的基础,其的目标是建立控制流图(control flow graph)。

           控制流图的结点代表一个基本块(basic block), 边代表控制流的运动方向。

           基本块: 其中的代码要么全部执行,要么全部不执行。基于这原则,有下列3种情况导致代码分入不同的basic block中。

                       1.  当前处理指令为分支指令,比如 if,goto,throw,switch

                       2.  当前指令为其他跳入指令的目标指令

                       3.  当前指令为return指令

          通过对指令序列的一遍扫描,记录每个基本块的出边,以及出边的目标结点(successor),同时记录基本块的前驱结点(predecessor),以此建立控制流图的整体逻辑。


          在后继数据流分析以及优化中,loop的识别尤为的重要。这里的loop不是通常意义下的loop,而是称为自然循环的loop。对他的定义是存在n->d,d为n的支配结点&#x

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值