第1章编译原理概述剖析

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
编译程序 目标程序 结果
输入数据
计算机Hale Waihona Puke Baidu行
解释程序
源程序 解释程序 结果
输入数据
2018年12月23日星期 第11页
对编译程序的一些说明
编译程序实质上是一个翻译程序,要注意等价变换 本课程的任务就是讲解在这个转换过程中所涉及到 的一些理论和方法,最后,使用这些理论和方法, 自己编写一个小的编译器 转换是一个总体的功能,要抓住总体结构,逐层细 分,写编译器时要体现软件工程中软件设计的原则, 自顶向下,逐层分解。 编译器要完成的转换任务相当复杂,实现编译器时 必须分步骤分阶段实现。分阶段实现的好处是能够 简化程序的设计,当然也可以不分阶段实现。
2018年12月23日星期
第17页
用一个例子说明各阶段的功能
/*一个PASCAL语言的源程序*/ program test; /*this is an example,computing an area*/ var area, length, width: integer; begin length:=5;width:=5; area := 5+length *width+length *width end.
源程序
编译器
目标程序
词 法 分 析
2018年12月23日星期
语 法 分 析
语义分 析与中 间代码 生成
代 码 优 化
目标 代码 生成
第16页
按照词法分析、语法分析、语义分析等这种方式来 划分阶段的原因是:每个阶段的复杂程度不同,所 依据的理论基础不同,实现时采用的方法也不同。 主要是方便理解和实现。 划分阶段的依据是什么?每个阶段所实现的功能相 对独立。
编译原理
教材及主要参考资料
教材:编译原理及实践教程,黄贤英,清华大学出
版社
主要参考资料: 编译原理,陈火旺,国防工业出版社 编译原理(原书第2版)(龙书) ,ALFRED V.AHO
etc著,赵建华 郑滔等译 ,机械工业出版社 ,2008.12 社
程序设计语言编译方法,肖军模,大连理工大学出版 编译原理,张素琴,吕映芝,清华大学出版社
2018年12月23日星期
第18页
第一阶段:词法分析
任务: 从左到右扫描源程序,识别出每个单词 o 附加任务:a、滤掉空格 b、去掉注释 o 单词符号是语言的基本组成成分 o 词法分析的工作主要依据语言中单词的构成规则 o 单词的种类: (1) 标识符 (2) 关键字(char、int、if、else、while、for等) (3) 运算符(即运算符号 +、-、*、/、&等) (4) 界符(常见的有 ; , : ( )等) (5) 常数
汇 编 语 言 程 序
mov ax,3 mov x,ax mov bx,2 mov y,bx add ax,bx mov z,ax ......
300H
302H 304H 306H 308H ......
3A03
3AE1 3A02 3AE2 DA6C 3A71
代 码 区
第一章
编译原理概述
本章要求
汇编程序
汇编程序
机器语言层
机器语言1 计算机1
机器语言2 计算机2
第8页
2018年12月23日星期
什么叫翻译程序
翻译程序:能够将某种语言写的程序转换成 另一种语言的程序,而且后者与前者在逻辑 上是等价的。 编译程序:将高级程序设计语言程序翻译成 逻辑上等价的低级语言(汇编语言,机器语言) 程序的翻译程序。 解释程序:将高级程序设计语言写的源程序 作为输入,边解释边执行源程序本身,而不 产生目标程序的翻译程序。
2018年12月23日星期 第9页
翻译程序所处的层次
语言处 理程序
Fortran语言
Fortran编译程序
高 级 语 言
C 语 言
操作系统
C 编译 程序
计算机硬件 汇编语言
Basic解释程序
Basic语言
. . . . . .
. . . . . .
2018年12月23日星期
第10页
编译程序
源程序
主要内容:各种翻译程序的概念,编译 过程和阶段划分,编译程序的组成和结 构,编译程序的构造方法 重点掌握:编译程序工作的基本过程及 其各阶段的基本任务,编译程序总框。
第5页
1.1 程序设计语言与翻译程序
为什么要使用编译程序?
机器语言 (machine language)
C7 06 0000 0002
更多教材及参考资料参见编译原理精品课程网站。
第2页
C语言程序
void main( ) { int x,y,z; x=3; y=2; z=x+y; }
在内存中:
序言
内存地址 内存内容
单元名字
……
……
……
x:局部变量
y:局部变量 z:局部变量
200H
202H 204H ……
3
2 5 ……
数 据 区
汇编语言 (assembler language)
MOV X , 2
高级语言 (high-level language)
X=2
第6页
为什么要使用编译程序?
机器语言 (machine language)
C7 06 0000 0002
汇编语言 (assembler language)
MOV X , 2
高级语言 (high-level language)
X=2
2018年12月23日星期
第7页
计算机中的语言层次和翻译程序
转换 程序 编译程序1
高级语言层
高级语言1
高级语言2 交叉编 译程序
高级语言3 编译程序3
高级语言4 编译程序4
解释程序1
编译程序2 汇编语言1 反汇编 程序
汇编语言层
汇编语言2 交叉汇 编程序
2018年12月23日星期
第12页
编译程序的分类

诊断编译程序 优化编译程序 可变目标编译程序 交叉编译程序
2018年12月23日星期
第13页
编译器的伙伴
编辑器(editor) 预处理器(Preprocessor)
将源程序汇集到一起,宏展开等
汇编程序(assembler) 连接程序(linker) 连接系统函数与系统资源 装入程序(loader) 重定位(relocation) Debugger,Profiler,Project Manager
2018年12月23日星期
第14页
什么是编译原理
编译原理是讨论编译程序设计的基本理论、 基本概念、基本方法
2018年12月23日星期
第15页
1.2 编译过程概述
1、逻辑上分五个阶段:词法分析、语法分析、语义
分析与中间代码生成、代码优化、目标代码生成 每个阶段把源程序从一种表示变换成另一种表示
相关文档
最新文档