编译原理-课程简介.ppt
《编译原理-课程简介.ppt》由会员分享,可在线阅读,更多相关《编译原理-课程简介.ppt(67页珍藏版)》请在三一办公上搜索。
1、1,编译原理和技术Principles of Compiling,大连理工大学软件学院徐秀娟,2,编译原理课程在计算机科学技术中的地位:,程序设计语言,离散数学,数据结构,编译原理,操作系统,系统软件,应用软件,软件工程,信息系统,电子商务,3,本讲纲要,课程简介编译技术概述,4,课 程 简 介,编译理论与方法计算机科学与技术中理论和实践相结合的最好典范 ACM 图灵奖,授予在计算机技术领域作出突出贡献的科学家程序设计语言、编译理论与方法约占1/3,5,课 程 简 介,教材和参考书陈意云、张昱,编译原理,高等教育出版社,2008年第二版陈火旺、刘春林等编著 程序设计语言编译原理(第3版),国防
2、工业出版社,2001年4月蒋立源等主编 编译原理(第2版),西北工业大学出版社,2002年1月。张素琴,吕映芝等编著 编译原理,清华大学出版社,2005年胡伦骏等 编译原理电子工业出版社 2005 年,6,课 程 简 介,教材和参考书Compilers:Principles,Techniques,and Tools 编译原理 技术与工具(英文版)Alfred V.Aho,Ravi Sethi,Jeffrey D.Ullman,人民邮电出版社.中文版:机械工业出版社http:/dragonbook.stanford.edu/“龙书”。龙书是于1986年出版第一版,由于出版年代较早,其中包含部分过
3、时的技术并且没有反映一些新的编译技术。新版的编译原理抛弃诸如算符优先分析等过时技术,增加面向对象编译、类型检查等新技术。,7,课 程 简 介,教材和参考书现代编译原理-C语言描述/Modern Compiler Implementation in C(美)安佩尔/2006-4-1/人民邮电出版社/C语言描述/45.0/平装/沈志宇/黄春/赵克佳“虎书”。虎书出版比较晚,与编译原理的知识点差不多,但增加了数据流分析、循环优化、内存管理等内容。与虎书比,编译原理更适合国内的编译原理课程教学。本书包括C版,还有java版和ML版,8,课 程 简 介,教材和参考书高级编译器设计与实现/Advanced
4、 Compiler Design and Implementation(美)马其尼克/2005-7-1/机械工业出版社/75.0/平装/沈志宇/赵克佳“鲸书”。鲸书侧重在对编译器后端优化的处理。在本科阶段的编译教学中旨在让学生对程序设计语言的编译全过程有系统的理解,因此会介绍编译器后端的处理技术,但不注重优化技术。,9,课 程 简 介,成绩评定学期总评=考试成绩占70%,平时成绩30分(作业+上机实验+平时点名)平时点名4次,每次2分。4次都不到的取消期末考试资格。作业+上机=22分,1-16周上课每周12次时间紧、任务重,10,课 程 简 介-要求,抄袭:不允许禁止c&p同学网上惩罚零分De
5、adline最后时间:每周第一次课课间交作业No Extension,11,课 程 简 介,课程要求目标:师生共同努力,帮助大家学有所得讲课进度较快,平时不复习并加深理解,后面将听不懂作业较多,要求独立完成上机实验,不要轻视阅读PL/0编译器,会有很大收获,12,课 程 简 介,课程内容介绍编译器构造的一般原理和基本实现方法介绍的理论知识:形式语言和自动机理论、语法制导的定义和属性文法、类型论等课程特点强调形式化描述技术强调对编译原理和技术的宏观理解,不把注意力分散到枝节算法,不偏向于某种源语言或目标机器,13,if(c=5)then if(c=5)then,编译器不报错,但实际上错了,课 程
6、 简 介,学习的意义它是计算机专业的核心课程。深刻的理解编程语言的设计和实现,有利于学习编程语言,知其然知其所以然。,14,课 程 简 介,学习的意义从软件工程看,编译器是一个很好的实例(基本设计、模块划分等),所介绍的概念和技术能应用到一般的软件设计之中。编译器也许是在本科阶段分析最透彻的实例。能了解到软件工程中的一些技术(如基于事件驱动的编程)。大多数程序员同时是语言的设计者,虽然是一些简单的语言(如输入输出),本课程的学习有助于提高对这些语言的设计水平。,15,课 程 简 介,学习的意义可以肯定地说,你们中的95%以上的人在一辈子的生涯中都没有机会去实现一个真正的复杂语言的编译器。但是每
7、一个人都绝对遇到需要使用编译技术的项目。以下就是一些小的“编译器”.,16,普通计算器,可编程计算器,课 程 简 介,学习的意义,17,课 程 简 介,自动聊天机器人,学习的意义,18,各种数据库查询语言及专家系统,select 课程 from table 课程表 where 任课老师=徐秀娟,课 程 简 介,学习的意义,19,在x86/Linux工作站上,以下两个结构的size分别是20和16,为什么不一样?typedef struct _atypedef struct _bchar c1;char c1;long i;charc2;charc2;long i;double f;double
8、 f;a;b;,课 程 简 介,学习的意义在计算机专业考研或者各大公司招聘时,必考内容。,20,typedef struct _atypedef struct _bchar c1;char c1;long l;charc2;charc2;long l;double f;double f;a;b;,课 程 简 介,sizeof(a):20a的首地址:0 xbf9a97c4a.c1的首地址:0 xbf9a97c4a.l的首地址:0 xbf9a97c8a.c2的首地址:0 xbf9a97cca.d的首地址:0 xbf9a97d0,Linux下测试结果:,sizeof(b):16b的首地址:0 xbf
9、9a97d8b.c1的首地址:0 xbf9a97d8b.c2的首地址:0 xbf9a97d9b.l的首地址:0 xbf9a97dcb.d的首地址:0 xbf9a97e0,21,typedef struct _atypedef struct _bchar c1;char c1;long l;charc2;charc2;long l;double f;double f;a;b;,课 程 简 介,sizeof(a):24a的首地址:0012FF18a.c1的首地址:0012FF18a.l的首地址:0012FF1Ca.c2的首地址:0012FF20a.d的首地址:0012FF28,VC下测试结果:,s
10、izeof(b):16b的首地址:0012FF08b.c1的首地址:0012FF08b.c2的首地址:0012FF09b.l的首地址:0012FF0Cb.d的首地址:0012FF10,22,在C程序设计中经常需要用到一种数据类型的长度(占内存的字节数),例如:int*p=NULL;p=(int*)malloc(10*sizeof(int);/*用sizeof(int)来得到int类型的长度*/,23,vc6中的编译选项有/Zp1|2|4|8|16,/Zp1表示以1字节边界对齐,相应的,/Zpn表示以n字节边界对齐。n字节边界对齐的意思是说,一个成员的地址必须安排在成员的尺寸的整数倍地址上或者是
11、n的整数倍地址上,取它们中的最小值。要使用这个选项,可以在vc6中打开工程属性页,c/c+页,选择Code Generation分类,在Struct member alignment可以选择。,24,字节对齐是为了提高CPU的读取效率.比如有些平台每次读都是从偶地址开始,如果一个int型(假设为32位系统)如果存放在偶地址开始的地方,那么一个读周期就可以读出这32bit,而如果存放在奇地址开始的地方,就需要2个读周期,并对两次读出的结果的高低字节进行拼凑才能得到该32bit数据.显然在读取效率上下降很多.,25,26,本讲纲要,课程简介编译技术概述,27,编辑器,源程序,编译器,操作系统,可执
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编译 原理 课程 简介
链接地址:https://www.31ppt.com/p-6599801.html