《教妹学编译原理》(七)代码优化

数据流分析

  1. 数据流分析
  • 一组用来获取程序执行路径上的数据流信息的技术
  1. 数据流分析应用
  • 到达-定值分析
  • 活跃变量分析
  • 可用表达式分析
  1. 数据流分析模式
  • 语句的数据流模式
    《教妹学编译原理》(七)代码优化_第1张图片
  1. 基本块上的数据流模式

到达定值分析

  1. 到达定值
    《教妹学编译原理》(七)代码优化_第2张图片
  2. 到达定值分析的主要用途
  • 循环不变计算的检测
  • 常量合并
  • 判定变量x在p点上是否未经定值就被引用
  1. 到达定值的传递函数《教妹学编译原理》(七)代码优化_第3张图片
  2. 到达定值的数据流方程
    《教妹学编译原理》(七)代码优化_第4张图片

流图

基本块是最大的连续三地址指令序列。

《教妹学编译原理》(七)代码优化_第5张图片
基本块的划分算法

  1. 首先确认首指令
  2. 任意一个条件或无条件转移指令的目标指令是一个首指令
  3. 紧跟在一个条件或无条件转移指令之后的指令是一个首指令
    《教妹学编译原理》(七)代码优化_第6张图片
    《教妹学编译原理》(七)代码优化_第7张图片
    流图

流图的节点是一些基本块。

从基本块B到基本块C之间有一条边当且C的第一个指令可能紧跟在B的最后一条指令之后执行。

《教妹学编译原理》(七)代码优化_第8张图片

常用的代码优化方法

优化的分类:
《教妹学编译原理》(七)代码优化_第9张图片

删除公共子表达式

《教妹学编译原理》(七)代码优化_第10张图片

  • 局部公共子表达式

  • 全局公共子表达式

你可能感兴趣的:(编译原理,java,算法,数据结构,编译原理,代码优化)