跳转至

2 基本块和控制流图

基本块

  • 连续的语句序列

  • 控制流从它的开始进入 —— 单一入口

  • 控制流从它的末尾离开 —— 单一出口

  • 基本块内部的执行没有停止或分支的可能性

外部:遇到基本块末尾进入下一个块除外

基本块的划分方法

确定所有入口语句

  • 语句序列的第一个语句
  • 能由(无)条件转移语句转到的语句
  • 紧跟在(无)条件转移语句转到的语句

每个入口语句到下一个入口语句之前(或到程序结束)的语句序列构成一个基本块

例子:

image-20221127202258512

流图

  • 有向边表示基本块之间的控制流信息
  • 基本块作为流图的结点

例子:

image-20221127202402532

转化成 SSA 格式:

  • 不同块中对 i 有不同的定值,来自不同控制流

image-20221127202506284

本文阅读量