美文网首页
编译器笔记62-代码生成-窥孔优化

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

作者: 衣忌破 | 来源:发表于2020-03-21 17:06 被阅读0次

窥孔优化

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

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

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

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

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

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

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

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

相关文章

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

    窥孔优化 窥孔(peephole)是程序上的一个小的滑动窗口 窥孔优化是指在优化的时候,检查目标指令的一个滑动窗口...

  • 编译器前端和后端

    编译器粗略分为词法分析,语法分析,类型检查,中间代码生成,代码优化,目标代码生成,目标代码优化。把中间代码生成及之...

  • 编译原理——寄存器

    •代码生成是编译器的最后阶段。代码生成器通过前端产生的中间表示法或者通过代码优化器在代码优化阶段,映射到目标程序中...

  • Flutter 前端编译器编译流程分析

    1. 前端编译器和后端编译器的区别 编译流程粗略分为词法分析、语法分析、类型检查、中间代码生成、代码优化、目标代码...

  • 编译器的工作过程

    编译器的工作过程划分为:词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成。 词法分析器的任务是把...

  • 编译原理概述

    编译器原理 词法分析器 语法分析器 语义分析器 中间代码生成 符号表 独立机器的代码优化器 代码生成器 依赖于机器...

  • c++:模板

    编译器会根据代码自动生成函数。

  • IDEA 的常用快捷键

    1. 代码生成/优化 Ctrl + Alt + O(字母) 优化导入的类和包 Alt + Insert 生成代码(...

  • iOS的性能优化

    1、ipa包体积优化 1.1 编译配置优化:编译器代码层面优化Optimize Level;Bitcode(较难...

  • Mac下的Java:生成.java文件和.class文件

    生成.java文件 1:打开文本编译器 文本编译器打开是这个样子滴: 2:写入java代码 生成.class文件 ...

网友评论

      本文标题:编译器笔记62-代码生成-窥孔优化

      本文链接:https://www.haomeiwen.com/subject/hfquyhtx.html