编译器笔记62-代码生成-窥孔优化

窥孔优化

  • 窥孔(peephole)是程序上的一个小的滑动窗口
  • 窥孔优化是指在优化的时候,检查目标指令的一个滑动窗口( 即窥孔) ,并且只要有可能就在窥孔内用更快或更短的指令来替换窗口中的指令序列。
  • 也可以在中间代码生成之后直接应用窥孔优化来提高中间表示形式的质量。

具有窥孔优化特点的程序变换的例子

  • 冗余指令删除
  • 控制流优化
  • 代数优化
  • 机器特有指令的使用
冗余指令删除
消除冗余的加载和保存指令.png
消除不可达代码.png
控制流优化
控制流优化.png
代数优化
  • 代数恒等式

消除窥孔中类似于x=x+0或x=x*1的运算指令

  • 强度削弱
  1. 对于乘数(除数)是2的幂的定点数乘法(除法),用移位运算实现代价比较低。
  2. 除数为常量的浮点数 除法可以通过乘数为该常量倒数的乘法来求近似值。
特殊指令的使用

充分利用目标系统的某些高效的特殊指令来提高代码效率

例如:INC 指令可以用来替代加1 的操作

注:这系列编译器笔记是参考陈鄞老师的编译器原理所写,有兴趣可以参考av17649289

你可能感兴趣的:(编译器笔记62-代码生成-窥孔优化)