当前位置:文档之家› 《编译原理课程教案》第1章:编译原理概述

《编译原理课程教案》第1章:编译原理概述

邮电出版社
2019年5月22日星期
《编译原理实践及应用》
第2页
序言
2019年5月22日星期
《编译原理实践及应用》
第3页
什么是编译?
从程序员可以理解的高级语言程序 到机器可以理解的机器语言程序 的自动翻译过程。
C语言程序
void main( ) { int x,y,z;
x=3; y=2; z=x+y; }
编译原理 操作系统
系统软件
信息系统 电子商务
《编译原理实践及应用》
应用软件
软件工程
第8页
学习本课程的目的和任务
• 加深对编程语言设计和实现的理解,对和编 程语言有关的理论有所了解,对宏观上把握 编程语言来说,起一个奠基的作用,提升自 身的编程能力
• 掌握编译程序的基本结构,掌握常用的编译 技术和方法,将编译原理的理论和方法应用 于一般的软件设计中
2019年5月22日星期
《编译原理实践及应用》
第4页
汇编语言程序
…… 300 mov ax,3 302 mov x,ax 304 mov ax,2 306 mov y,ax 308 mov ax,x …… mov bx,y
add ax,bx mov z,ax ......
机器码
内存地址 内存内容 单元名字
2019年5月22日星期
《编译原理实践及应用》
第10页
第一章
引论
《编译原理实践及应用》
本章要求
• 主要内容:各种翻译程序的概念,编译 过程和阶段划分,编译程序的组成和结 构,编译程序的构造方法
• 重点掌握:编译程序工作的基本过程及 其各阶段的基本任务,编译程序总框。
2019年5月22日星期
《编译原理实践及应用》
功能
源程序
解释程序
结果
2019年5月22日星期
输入数据
《编译原理实践及应用》
第16页
编译程序的分类
• 诊断编译程序 • 优化编译程序 • 可变目标编译程序 • 交叉编译程序
2019年5月22日星期
《编译原理实践及应用》
第17页
与编译程序相关的程序
• 解释程序(Interpreter) • 汇编程序(assembler) • 连接程序(linker)
……
……
……
200H 201H 202H
3 x:局部变量 2 y:局部变量 5 z:局部变量
……
……
2019年5月22日星期
《编译原理实践及应用》
第5页
为什么要学习编译原理?
• 1、有助于深刻理解和正确使用程序设计语
言,加深对高级语言程序执行过程的理解
• 2、有助于加深对整个计算机系统的理解。
• 3、设计开发编译程序的软件技术同样可以 用于其他软件的设计开发。
• (2) 学习数据结构,建立“算法”的概念,对编程有更深入的 理解。遇到问题的时候,能够寻找相应的数据结构模型,设计 适当的算法来解决问题;
• (3) 学习汇编语言,这门课程是我们真正深入了解计算机内部 工作的第一门课程。通过学习了解汇编语言如何变为机器语言, 如何对应于一条指令;
• (4) 计算机组成原理课程的学习使我们了解到计算机的硬件组 成,以及机器指令程序如何在计算机中运行的过程。
• 培养团队协作能力
2019年5月22日星期
《编译原理实践及应用》
第9页
本课程的特点
• (1) 本课程理论性很强,学习时需要很强的 逻辑思维能力
• (2) 涉及的算法复杂,要深入地理解这些算 法很困难
• (3) 编译原理课程各个部分之间的独立性很 强,包括词法分析、语法分析、存储的组 织与分配、中间语言、语法制导翻译、代 码生成与优化这几大部分。词法分析、及 语义分析是重点;其他部分相对来说知识 性更强一些。
编译程序(Compiler)——将高级程序设计语言 程序翻译成逻辑上等价的低级语言(汇编语言,机 器语言)程序的翻译程序。
功能 源程序
编译程序
目标程序
输入数据 计算机运行
2019年5月22日星期
《编译原理实践及应用》
结果
第14页
计算机中的语言层次和转换关系
转换
高级语言层 高级语言1
程序
高级语言2
第12页
• 问题:
• 1. 什么是编译程序? • 2. 编译程序的工作过程是什么样的? • 3. 编译程序的总体结构是什么样的? • 4. 什么叫编译前端、编译后端? • 5. 什么叫“遍”(pass)? • 6. 编译程序有哪些生成方法?
2019年5月22日星期
《编译原理实践及应用》
第13页
1.1 编译程序是什么
解释程序1 编译程序1 编译程序2
交叉编 译程序
高级语言3 高级语言4 编译程序3 编译程序4
汇编语言层
汇编语言1
汇编语言2
汇编程序
反汇编 程序
交叉汇 编程序
汇编程序
机器语言层
机器语言1
机器语言2
2019年5月22日星期
计算机1
《编译原理实践及应用》
计算机2
第15页
解释程序
解释程序(Interpreter)——将高级程序设计 语言写的源程序作为输入,边解释边执行源程 序本身,而不产生目标程序的翻译程序。
编译原理实践及应用
----中南大学 肖健宇
《编译原理实践及应用》
教材及主要参考资料
• 教材:编译原理实践及应用,黄贤英,清华大
学出版社
• 主要参考资料: • (1) 编译原理,陈火旺,国防工业出版社 • (2)程序设计语言编译方法,肖军模,大连理工
大学出版社
• (3)编译原理,张素琴,吕映芝,清华大学出版社 • (4)编译原理,alfred V.Aho等著,李建中等译,人民
– 连接系统函数与系统资源 • 装入程序(loader)
– 重定位(relocation) • 预处理器(Preprocessor) • 编辑器(editor) • Debugger,Profiler,Project
• (5) 编译原理课程帮助我们了解高级语言程序转换成机器指令 程序的过程。可以帮助我们更深刻地理解高级语言程序运行的 内部机制。
2019年5月22日星期
《编译原理实践及应用》
第7页
《编译原理》课程在计算机科学中 的地位
汇编语言
计算机组成原理
高级语言 程序设计
2019年5月22日星期
离散数学 数据结构
• 4、随着微处理器技术的飞速发展,处理器 性能在很大程度上取决于编译器的质量、 编译技术成为计算机的核心技术,地位变 得越来越重要。
2019年5月22日星期
《编译原理实践及应用》
第6页
《编译原理》课习一门高级语言,C或Pascal,掌握编写 一些简单程序的方法;
相关主题