当前位置:文档之家› 《编译原理实践及应用》第1章编译原理概述PPT课件

《编译原理实践及应用》第1章编译原理概述PPT课件


《编译原理实践及应用》
第6页
《编译原理》课程在计算机科学中 的地位
汇编语言
计算机组成原理
高级语言 程序设计
离散数学 数据结构
编译原理 操作系统
系统软件
信息系统 电子商务
《编译原理实践及应用》
应用软件
软件工程
第7页
学习本课程的目的和任务
• 加深对编程语言设计和实现的理解,对和编程语言 有关的理论有所了解,对宏观上把握编程语言来说, 起一个奠基的作用,提升自身的编程能力
• (2) 很多题目的解法比较固定,要熟练掌握相应的具体方法。
• (3) 多做习题, 对于编译这样的学科,题目的规模很大,步骤 繁多,而且前面的步骤一旦出错,后面都错。
• (4) 要扎扎实实地牢记重要算法,配合大量的习题进行练习, 达到拿到题目就可以动手做的地步。
• (5) 一边学习,一边总结,关键是找差异:同一问题可以用多 种方法来求解,不同方法适用于不同的文法,对文法的限制
和要求,相应的表格的构造、使用等,各个方面的差异都要 关注。
• (6) 亲自动手实现书上的一些算法,完成实验指导书上给出的
一个简单的编译程序,或者编译程序的一部分,这样能更灵
活地掌握编译程序构造《编的译精原理髓实。践及应用》
第10页
第一章
引论
《编译原理实践及应用》
第11页
本章要求
• 主要内容:各种翻译程序的概念,编译 过程和阶段划分,编译程序的组成和结 构,编译程序的构造方法
电出版社
《编译原理实践及应用》
第2页
考 核方法
• 平时成绩、作业完成:10%
– 要求上课不迟到早退,不旷课,有事请假,记好笔记 – 要求用大作业本, 不能交单张纸, 独立完成
• 实验:30%
– 要求程序可运行, 并有相关设计和使用说明
• 期末考试:60%
– 闭卷形式
《编译原理实践及应用》
第3页
C语言程序
• 掌握编译程序的基本结构,掌握常用的编译技术和 方法,将编译原理的理论和方法应用于一般的软件 设计中
• 培养团队协作能力
《编译原理实践及应用》
第8页
本课程的特点
• (1) 本课程理论性很强,学习时需要很强的逻辑思维能力
• (2) 涉及的算法复杂,要深入地理解这些算法很困难
• (3) 整个编译程序的构造方法非常精妙,就像一部走时精 确的时钟,很多齿轮、部件协调地运转,以驱动指针准确 地旋转;编译程序也是如此,一边扫描源程序,一边经过 各个部件的运算,准确地输出为目标语言。
• 4、随着微处理器技术的飞速发展,处理器 性能在很大程度上取决于编译器的质量、 编译技术成为计算机的核心技术,地位变 得越来越重要。
《编译原理实践及应用》
第5页
《编译原理》课程在计算机科学中 的重要地位
• (1) 学习编程最初是学习一门高级语言,C或Pascal,掌握编写 一些简单程序的方法;
• (2) 学习数据结构,建立“算法”的概念,对编程有更深入的 理解。遇到问题的时候,能够寻找相应的数据结构模型,设计 适当的算法来解决问题;
X=2
《编译原理实践及应用》
• (3) 学习汇编语言,这门课程是我们真正深入了解计算机内部 工作的第一门课程。通过学习了解汇编语言如何变为机器语言, 如何对应于一条指令;
• (4) 计算机组成原理课程的学习使我们了解到计算机的硬件组 成,以及机器指令程序如何在计算机中运行的过程。
• (5) 编译原理课程帮助我们了解高级语言程序转换成机器指令 程序的过程。可以帮助我们更深刻地理解高级语言程序运行的 内部机制。
• (4) 编译原理课程各个部分之间的独立性很强,包括词法 分析、语法分析、存储的组织与分配、中间语言、语法制 导翻译、代码生成与优化这几大部分。词法分析和语法分 析是其中的重点,语法分析也是难点,需要掌握比较复杂 的算法逻辑;其他部分相对来说知识性更强一些。各部分 之间的方法也互相独立,在学习时,便于逐个击破。
• (5) 考试考查的内容相对来说是很稳定的,绝大多数题目 的解法都非常机械。
《编译原理实践及应用》
第9页
学习方法
• (1) 尽可能地掌握编译原理的思想,要站得高一点,尽可能理 解算法的思想,而不是背固定的算法。应该尽力理解为什么
要这样做,逐渐在头脑中建立起编译器的整体概念,而不是 零零散散的一些算法。
200H
3 x:局部变量 mov z,ax
201H
2 y:局部变量 ......
202H
5 z:局部变量
……
……
《编译原理实践及应用》
第4页
为什么要学习编译原理?
• 1、有助于深刻理解和正确使用程序设计语
言,加深对高级语言程序执行过程的理解
• 2、有助于加深对整个计算机系统的理解。
• 3、设计开发编译程序的软件技术同样可以 用于其他软件的设计开发。
• 重点掌握:编译程序工作的基本过程及 其各阶段的基本任务,编译程序总框。
《编译原理实践及应用》
第12页
1.1 程序设计语言与翻译程序
为什么要使用编译程序?
• 机器语言 (machine language)
C7 06 0000 0002
• 汇编语言 (assembler language)
MOV X , 2
编译原理实践及应用
《编译原理实践及应用》
第1页
教材及主要黄贤英,清华大
学出版社
• 主要参考资料:
• (1) 编译原理,陈火旺,国防工业出版社
• 程序设计语言编译方法,肖军模,大连理工大学
出版社
• 编译原理,张素琴,吕映芝,清华大学出版社
• 编译原理,alfred V.Aho等著,李建中等译,人民邮
汇编语言程序
void main( )
……
{ int x,y,z; x=3;
序言
300 mov ax,3 302 mov x,ax
y=2;
304 mov ax,2
z=x+y; }
内存地址 内存内容
306 mov y,ax 308 mov ax,x 单元名字…… mov bx,y
……
……
……
add ax,bx
• 高级语言 (high-level language)
X=2
《编译原理实践及应用》
第13页
为什么要使用编译程序?
• 机器语言 (machine language)
C7 06 0000 0002
• 汇编语言 (assembler language)
MOV X , 2
• 高级语言 (high-level language)
相关主题