编译程序bianyi chengxu
一种计算机系统程序,它能把用高级语言(如FORTRAN语言、PASCAL语言、COBOL语言)编写的源程序,“翻译”成机器语言程序,所得到的机器语言程序叫做目标程序;但这样的目标程序,计算机还不能执行,还要经过另一系统程序——链接装配程序的“加工”,得到装配程序模块(也叫可执行程序模块)才能执行.
编译程序与汇编程序不同,汇编程序产生的机器语言与汇编语言源程序是一一对应的,而编译程序是多对应的,即这些高级语言的源程序中,每一个语句可对应若干条机器指令.
编译程序与解释程序不同,它象一个“笔译工作者”,把源程序全部“翻译”成机器语言,并经装配链接成可执行的机器语言程序,所以它的执行时间短,但占内存空间大.编译程序对源程序要进行如下几步工作:❶词法分析,从源程序中识别出一个个具有独立意义的语法单位,并指出其属性,建立符号表;
❷语法分析,从符号表取出语法符号串,对照语法规则,识别出不同的语句;
❸语义分析,根据句子的不同句型,执行不同的加工处理子程序,产生中间语言程序;
❹代码优化,对中间语言程序进行不依赖于机器的优化工作;
❺存储空间分配,给常数、变量和中间语言程序分配存储单元;
❻生成目标程序,对优化后的中间语言程序生成目标程序或汇编语言程序;
❼生成机器语言程序.
编译程序Bianyi chengxu
是计算机系统软件的重要组成部分, 其任务是把高级语言的源程序翻译成可执行的目标代码。与把汇编语言程序转变为可执行代码的汇编程序功能相近。但有实质上的区别,由于汇编语言指令与机器指令1-1对应, 汇编程序是把汇编语言的程序一对一地转变为机器指令。编译程序则不然, 高级语言中一个语句将被翻译成若干条机器指令。
由于不同的高级语言的语法与语言构成互不相同,因此有不同的编译程序。而不同计算机有不同的指令系统, 故同一种语言针对不同的计算机也有不同的编译程序。即使同一高级语言,同一机器,也可以有不同的编译程序。一般地说一个编译程序可以分为若干工序: 即词法分析 (识别程序中的单词), 句法分析(识别程序中的语句), 这两个工序还包括源程序错误的诊断,报告及纠正;符号表生成,这一部分包括程序数据的存储空间安排及子程序入口地址与带标号语句地址的生成等;中间代码生成,这一工序生成与目标代码接近的中间代码, 采用中间代码的优点之一是提高编译程序的可移植性:最后是目标代码生成和优化。编译程序各工序间可以有不同的关联方式, 如果源程序经一道工序全部处理完毕,才进入下一工序,则称该编译程序是多遍的,另外一种办法是把源程序分段, 一道工序处理完毕一段则送入下一工序, 上一段经所有工序处理完毕才开始处理下 一段, 这样的编译程序称为单遍的。
现今的实用编译程序除了有上述编译功能外, 还配有标准函数库、工具库及帮助系统等,同时对于良好的用户界面给予充分的重视, 使得程序编辑与调试变得十分方便, 用户只须短时间训练就可以自如地使用计算机。