编译原理过程简述及中间代码优化
来源:互联网 发布:种族歧视 知乎 编辑:程序博客网 时间:2024/05/21 18:02
一、编译过程图示如下:
词法分析作用:找出单词 。如int a=b+c; 结果为: int,a,=,b,+,c和;
语法分析作用:找出表达式,程序段,语句等。如int a=b=c;的语法分析结果为int a=b+c这条语句。
语义分析作用:查看类型是否匹配等。
二、中间代码优化
所谓代码优化是指对程序代码进行等价(指不改变程序的运行结果)变换。程序代码可以是中间代码(如四元式代码),也可以是目标代码。等价的含义是使得变换后的代码运行结果与变换前代码运行结果相同。优化的含义是最终生成的目标代码短(运行时间更短、占用空间更小),时空效率优化。原则上,优化可以在编译的各个阶段进行,但最主要的一类是对中间代码进行优化,这类优化不依赖于具体的计算机。
优化目的:在不改变程序运行效果的前提下,对被编译的程序进行等价变换,使之能生成更加高效的目标代码。
优化原则:
等价原则。经过优化后不应该改变程序运行的结果。
等效原则。使优化后所产生的目标代码运行时间较短,占用的储存空间较小。
合算原则。应尽可能以较低的代价取得较好的优化效果。
附:
循环优化代码外提:
将在循环入口设置基本块,把循环中的循环不变运算提入基本块,且提入部分必须为循环出口必经运算。如图:
PS:
1、 代码优化就是对程序进行等价变换,以提高目标程序的效率,通常只对中间代码进行优化。通常包括控制流分析、数据流分析和变换三部分。
2、 以程序的基本块为基础,基本块内的优化叫局部优化,跨基本块的优化为全局优化,循环优化是针对循环进行的优化,是全局优化的一部分。
3、 公共子表达式的删除、复制传播、无用代码删除、代码外提、强度削弱和归纳变量删除等都是一些常用的针对局部或者全局的代码优化方法。
- 编译原理过程简述及中间代码优化
- Java代码编译过程简述
- 中间代码生成器-5-编译原理
- 编译原理——中间代码生成
- 编译原理实验三:中间代码生成
- 【编译原理】中间代码(一)
- 【编译原理】中间代码(二)
- 一张图解释编译过程词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成
- 编译原理之代码优化
- 读《编译原理》第六章,中间代码生成
- 编译原理结构框架10代码优化
- 编译原理实验六—代码优化
- 编译器 工作原理及 编译过程
- C语言的编译原理及过程
- 中间代码生成中的优化
- 安卓-编译过程简述
- c & c++ 编译过程简述
- Android应用程序编译过程简述
- c++
- Android地图轨迹抽稀、动态绘制
- Android夜间模式的实现方案
- Intellij Idea中运行tomcat 报內存溢出 PermGen space 解决方案
- designing a non-blocking server
- 编译原理过程简述及中间代码优化
- mapping.txt还原混淆代码
- Python解析txt文件、使用pdfminer解析pdf文件
- ConcurrentHashMap 详细分析
- 随想
- HDU 6114 Chess(组合数学)
- C#学习笔记16-结构体和类
- 为eclipse添加背景色
- 面向对象 接口