一张图了解编译程序-----第一章--引论--思维导图

引论

1.编译程序的概念及功能

1.1.为什么要用编译器

编译器中的编译程序要把高级语言翻译成机器语言,机器语言能运行

1.2.翻译程序

接受某种语言的源语言程序后,将它改造成另一种逻辑上等价的目标语言程序。
汇编程序:源语言为汇编语言,目标语言为机器语言的翻译程序。

1.3.编译程序

源语言为高级语言,目标语言是低级语言(汇编或机器语言)的翻译程序,而后者与前者在逻辑上是等价的。
宿主机:运行编译程序的计算机
目标机:运行编译程序产生目标代码的计算机 。
编译程序实现语言:用于生成编译程序的语言。

1.4.编译程序与解释程序

解释程序:以源程序为输入,在执行过程中不再产生目标程序,而是边解释边执行。运行效率不高,空间开销大。

1.5.编译器的发展阶段

2.编译程序的逻辑结构及过程概述

2.1.编译程序的结构
在这里插入图片描述

2.2.编译程序的主要过程

词法分析

输入源程序,对构成源程序的字符串进行扫描和分解,识别出一个一个的单词

遵循词法规则

语法分析

在词法分析的基础上,根据语言的语法规则,把单词符号串分解成各类语法单位

遵循语法规则,常用的语法规则用上下文无关文法描述

语义分析和中间代码的产生

对语法分析所识别出的各类语法范畴分析其含义,并进行初步翻译,产生中间代码;依循的是语言的语义规则

静态语义检查
中间代码的翻译

优化

对前一阶段产生的中间代码进行加工交换,以期在最后阶段能够产生出运行效率更高的(省时间和空间)的目标代码

等价变换原则

目标代码的生成

把中间代码(或经过优化处理之后)变换成特定机器上的低级语言代码。
2.3.表格和表格管理

符号表:用来登记源程序中出现的每个名字以及名字的各种属性
编译各阶段都涉及到构造、查找或更新有关的表格。
2.4.出错处理

编译程序在各个阶段应诊断和报告源程序中的错误,报告出错地点,并给出简明准确的提示信息

词法分析阶段能够检测出“非法字符”之类的错误
语法分析阶段能够检测出诸如“括号不匹配”、“缺少;”之类的错误。
语义错误包括:说明错误、作用域错误、类型不一致等。
3.编译程序(器)的组织

3.1.前端与后端

前端:主要与源语言有关但与目标机无关的那些部分,一般包括:词法分析、语法分析、语义分析与中间代码产生等;
后端:包括编译程序中与目标机有关的那些部分,如与目标机有关的代码优化和目标代码生成等。后端不依赖于源程序而仅仅依赖于中间语言。
在这里插入图片描述

3.2.遍(PASS)(趟)

对输入文件(源程序或其等价的中间形式)从头到尾扫描,完成预定的处理,生成新的中间结果或目标程序。
3.3.分析与综合

分析:词法分析、语法分析、语义分析
综合:中间代码的产生、优化、目标代码的产生

在这里插入图片描述

4.编译程序的生成

4.1.T形图

在这里插入图片描述

4.2.编译程序的自展

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述在这里插入图片描述

我的理解:step3中A将S编译成A,S与A等价,既然S可以将L编译成A,那么A也可以将L编译成A。
4.3.已知一种语言的编译器,构造另一种语言的编译器
在这里插入图片描述

4.4.编译程序的移植

利用A机器上已有的高级语言L编写一个在B机器上运行的高级语言L的编译程序。
做法(一次编程两次编译)
(1)先用L语言编写产生B机器代码的L编译程序源程序R
(2)R经过A机器上的L的编译程序编译后,生成能够在A机器上运行的、产生B机器代码的目标程序(编译程序)I
(3)现在我们可以用I编译R,就产生了上述的P程序,P程序由B机器代码构成,因而可以在B机器上运行,而P的作用正是将L语言编译成能够在B机器上运行的、由B机器代码构成的目标程序。

在这里插入图片描述

4.5.具有代表意义的自动化编译工具

Flex
bison++
GAG(Generator based on Attributed Grammars), HLP(Helsinki Language Processor)
SIS(Semantics Implementation System)
CGSG(Compiler Generator for Semantics Grammars)
4.6.NET的公共语言运行环境请添加图片描述

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值