已有1条回答
管理员
能将高级语言转换成目标程序的是编译程序。由高级语言编写的程序称为“源程序”,由二进制代码表示的程序称为“目标程序”,而把源程序转换成机器能够识别的目标程序是由“编译程序”完成的。编译程序是将整个高级语言编写的源程序先翻译成机器语言程序,然后再生成可在操作系统下直接运行的目标程序。
编译程序(Compiler,compilingprogram),也称为编译器,是指把用高级程序设计语言书写的源程序,翻译成等价的机器语言格式目标程序的翻译程序。编译程序属于采用生成性实现途径实现的翻译程序。它以高级程序设计语言书写的源程序作为输入,而以汇编语言或机器语言表示的目标程序作为输出。编译出的目标程序通常还要经历运行阶段,以便在运行程序的支持下运行,加工初始数据,算出所需的计算结果。
编译程序已作为实现编程的重要软件工具,被纳入到软件支援环境的基本层软件工具之中。因此,规划编译程序实现方案时,应从所处的具体软件支援环境出发,既要遵循整个环境的全局性要求和规定,又要精心考虑与其他诸层软件工具之间的相互支援、配合和衔接关系。
编译程序把一个源程序翻译成目标程序的工作过程分为五个阶段:词法分析;语法分析;中间代码生成;代码优化;目标代码生成。主要是进行词法分析和语法分析,又称为源程序分析,分析过程中发现有语法错误,给出提示信息。
1、词法分析。词法分析的任务是对由字符组成的单词进行处理,从左至右逐个字符地对源程序进行扫描,产生一个个的单词符号,把作为字符串的源程序改造成为单词符号串的中间程序。执行词法分析的程序称为词法分析程序或扫描器。
源程序中的单词符号经扫描器分析,一般产生二元式:单词种别;单词自身的值。单词种别通常用整数编码,如果一个种别只含一个单词符号,那么对这个单词符号,种别编码就完全代表它自身的值了。若一个种别含有许多个单词符号,那么,对于它的每个单词符号,除了给出种别编码以外,还应给出自身的值。词法分析器一般来说有两种方法构造:手工构造和自动生成。手工构造可使用状态图进行工作,自动生成使用确定的有限自动机来实现。
2、语法分析。编译程序的语法分析器以单词符号作为输入,分析单词符号串是否形成符合语法规则的语法单位,如表达式、赋值、循环等,最后看是否构成一个符合要求的程序,按该语言使用的语法规则分析检查每条语句是否有正确的逻辑结构,程序是最终的一个语法单位。编译程序的语法规则可用上下文无关文法来刻画。
语法分析的方法分为两种:自上而下分析法和自下而上分析法。自上而下就是从文法的开始符号出发,向下推导,推出句子。而自下而上分析法采用的是移进归约法,基本思想是:用一个寄存符号的先进后出栈,把输入符号一个一个地移进栈里,当栈顶形成某个产生式的一个候选式时,即把栈顶的这一部分归约成该产生式的左邻符号。
3、中间代码生成。中间代码是源程序的一种内部表示,或称中间语言。中间代码的作用是可使编译程序的结构在逻辑上更为简单明确,特别是可使目标代码的优化比较容易实现。中间代码即为中间语言程序,中间语言的复杂性介于源程序语言和机器语言之间。中间语言有多种形式,常见的有逆波兰记号、四元式、三元式和树。
4、代码优化。代码优化是指对程序进行多种等价变换,使得从变换后的程序出发,能生成更有效的目标代码。所谓等价,是指不改变程序的运行结果。所谓有效,主要指目标代码运行时间较短,以及占用的存储空间较小。这种变换称为优化。
有两类优化:一类是对语法分析后的中间代码进行优化,它不依赖于具体的计算机;另一类是在生成目标代码时进行的,它在很大程度上依赖于具体的计算机。对于前一类优化,根据它所涉及的程序范围可分为局部优化、循环优化和全局优化三个不同的级别。
5、目标代码生成。目标代码生成是编译的最后一个阶段。目标代码生成器把语法分析后或优化后的中间代码变换成目标代码。目标代码有三种形式:可以立即执行的机器语言代码,所有地址都重定位;待装配的机器语言模块,当需要执行时,由连接装入程序把它们和某些运行程序连接起来,转换成能执行的机器语言代码;汇编语言代码,须经过汇编程序汇编后,成为可执行的机器语言代码。
目标代码生成阶段应考虑直接影响到目标代码速度的三个问题:一是如何生成较短的目标代码;二是如何充分利用计算机中的寄存器,减少目标代码访问存储单元的次数;三是如何充分利用计算机指令系统的特点,以提高目标代码的质量。
猜你喜欢
荣耀80 GT怎么把YOYO建议设置到桌面
红旗h5最低价成交价(全新红旗h5 深度体验)
微信隐藏了怎么恢复到桌面
商业保险报销后农村合作医疗还能报销吗
1.6l是什么意思
苏联现在叫什么名字
水养富贵竹的摆放位置,小富贵竹摆放位置
雅阁230和260区别多大 区别是发动机扭距差30扭米
车子轮胎多少公里适合换(轮胎更换是根据公里数还是时间)
生韭菜可以生吃吗
iPhone 14 Pro Max怎么拍月亮好看
OPPO Find X5 pro处理器介绍
最新学习
东风最新款suv车型ix7 外观设计出色越野性能强劲
华为MateX5外屏有多大
指纹可以在物体上保留多久
Redmi Note 11 5G开空调教程
夏天养水培植物,这几点做不到,你的花就没命了!
minitab 箱线图怎么添加次坐标轴
苹果手机勿扰模式别人打电话提示什么
win10zip格式转rar格式
15万以内适合女生的车 十几万适合女生开的车
小米13万能遥控器在哪
15万以内的车有哪些值得推荐的(经济实惠家用车都有哪几款)
以神秘的月亮为主题的开场白