说明:本文参考Wikipedia的文章形成。感兴趣可以参见英文链接。
0.什么是一个Optimizing Compiler ?
Optimizing Compiler (后文以“优化编译器”代之) 就是试图最小化或最大化某些可执行文件属性的编译器。[1]
优化可能的方向
- 执行时间
- 内存开销
- 执行文件大小
- 低功耗
后两者经常会出现在嵌入式程序开发中。笔者曾经参与过相关的开发,品尝过抢code size的滋味(在项目刚开始写一些相对占size更大的code, 但功能没问题的,先把size占了,等后面不够了,把这段代码优化一下,size又挤出来了)
优化编译器常用的优化实现形式?
它通常被实现为一个优化转换的序列,该序列将会把程序转换成语义上等价的一个输出程序。该程序执行会更快或消耗更少的资源。(以LLVM为例,IR级别的优化就是一个或多个PassManager中代表的所有Pass集合)
1.优化的分类
根据优化所作用的域来分类,可以有如下类型
1 Peephole优化
通过检查一些相邻的指令(像通过一个小孔一样窥视整体代码)来看,它们是否可以由另外一个或一组更短的指令代替。</