本文主要是介绍第1章 编译程序概论,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
基本概念:
- 机器语言:能够被计算机的硬件系统直接执行的指令程序。
- 汇编语言:将硬件指令用一些助记符表示。如ADD表示加法操作,SUB表示减法操作等等
- 高级语言:使用便于理解的自然语言。
语言处理程序
- 解释程序(器):接受某种语言源程序,然后直接解释执行源程序。
- 编译程序(器):接受某种语言的源语 言程序后,将它改造成另一种逻辑上等价的目标语言程序。
- 词法分析
- 词法分析的功能是从左到右读入源程序的每个字符,对构成源程序的字符流进行扫描和分解,从而识别出一个个单词(也叫单词符号或符号)。
- 依据:语言的构词规则。
- 单词:逻辑上紧密相连的一组字符,这些字符具有集体含义。
- 如:标识符、保留字(关键字或基本字)、算符、界符等。
- 语法分析
- 语法分析的功给是将单词序列分解成各类语法短语(也叫语法单位,句子),确定整个输入串是否构成一个语法上正确的程序。
- 依据:语言的语法规则。
- 通过语法分析确定整个输入串是否构成一个语法上正确的程序。
- 语句的表示:
标识符:=表达式 是语句。
while (表达式) do 语句
if (表达式) then 语句 else 语句
都是语句。
- 语义分析
- 语义分析的功能是审查源程序有无语义错误,为代码生成阶段收集类型信息。
- 语义分析主要能识别的语义错误有变量没有声明就使用,变量重复声明,运算对象类型是否匹配等等。
- 中间代码生成
- 将源程序生成一种内部表示形式,这种内部表示形式叫中间代码。
- 中间代码:一种结构简单、含义明确的记号系统。
- 容易生成;
- 容易将它翻译成目标代码。
(运算符,运算对象1,运算对象2,结果)
- 代码优化
- 目的:使目标代码运行时间较短,占用空间较小。
- 目标代码生成
- 任务:把中间代码变换成特定机器上的绝对指令代码或可重定位的指令代码或汇编指令代码。
- 特点:与硬件系统结构和指令含义有关,涉及到硬件系统功能部件的运用、机器指令的选择、各种数据类型变量的存储空间分配以及寄存器和后缓寄存器的调度等。
- 符号表管理
- 符号表用来记录源程序中出现的标识符,并收集每个标识符的各种属性信息。
- 符号表是由若干记录组成的数据结构,每个标识符在表中有一条记录,每条记录有多个域,每个域记载标识符的一个属性。
- 有关名词:
- 前端(front end):主要依赖于源语言而与目标机器无关的编译阶段。如:词法分析、语法分析、语义分析、中间代码生成、部分优化工作、与前端有关的出错处理工作和符号表管理工作。
- 后端(back end):依赖于目标机而一般不依赖于源语言,只与中间代码有关的编译阶段。如:目标代码生成,以及相关出错处理和符号表操作。
- 遍(趟):对源程序或其等价的中间语言程序从头到尾扫视并完成规定任务的过程。每一遍扫视可完成上述一个阶段或多个阶段的工作。
这篇关于第1章 编译程序概论的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!