大连理工大学编译原理课件.

上传人:我** 文档编号:117886729 上传时间:2019-12-11 格式:PPT 页数:67 大小:3.02MB
返回 下载 相关 举报
大连理工大学编译原理课件._第1页
第1页 / 共67页
大连理工大学编译原理课件._第2页
第2页 / 共67页
大连理工大学编译原理课件._第3页
第3页 / 共67页
大连理工大学编译原理课件._第4页
第4页 / 共67页
大连理工大学编译原理课件._第5页
第5页 / 共67页
点击查看更多>>
资源描述

《大连理工大学编译原理课件.》由会员分享,可在线阅读,更多相关《大连理工大学编译原理课件.(67页珍藏版)》请在金锄头文库上搜索。

1、编译原理和技术 大连理工大学软件学院大连理工大学软件学院 刘馨月 自我介绍 刘馨月,女,博士,副教授 主讲课程:数据结构与算法,编译技术 研究方向:数据挖掘,信息检索 数据结构与算法教学团队成员 智能信息处理研究所成员( ) Email:Email: xinyue_dlutxinyue_dlut 课程定位核心课程 分类课程名称课程定位备注 计算机基础 计算机导论入门 算法和数据结构基础 高级语言程序设计(1,2)必备工具 计算机理论 (离散数学1,2,3) 数理逻辑 计算机数学 集合论和图论 组合数学 计算机硬件类课程 数子电路和数字逻辑硬件基础课程含实验 计算机原理和汇编语言部件原理含实验

2、计算机接口与通讯部件间通讯含实验 计算机体系结构体系结构含实验 计算机网络 计算机软件类课程 编译技术 系统软件层 含课程设计 操作系统含课程设计 数据库系统原理含课程设计 软件工程 信息系统分析与设计应用类 计算机图形学(多媒体技术 ) 应用类 操作系统 课课 程程 简简 介介 课程内容课程内容 介绍编译器构造的一般原理和基本实现方法介绍编译器构造的一般原理和基本实现方法 介绍的理论知识:形式语言和自动机理论、介绍的理论知识:形式语言和自动机理论、 语法制导的定义和属性文法、类型论等语法制导的定义和属性文法、类型论等 课程特点课程特点 强调形式化描述技术强调形式化描述技术 强调对编译原理和技

3、术的宏观理解,不把注强调对编译原理和技术的宏观理解,不把注 意力分散到枝节算法,不偏向于某种源语言意力分散到枝节算法,不偏向于某种源语言 或目标机器或目标机器 课课 程程 简简 介介 编译理论与方法 计算机科学与技术中理论和实践相结合的最好 典范 Intel公司的David Kuck院士曾经将编译器誉为 “计算机科学与技术的皇后” ACM图灵奖“计算机界的诺贝尔奖”,授予在 计算机技术领域作出突出贡献的科学家 程序设计语言、编译理论与方法约占1/3 课程简介 本专业人员4种基本的专业能力 计算思维能力 算法的设计与分析能力 程序设计和实现能力 计算机软硬件系统的认知、分析、设计与应用 能力 计

4、算思维能力 逻辑思维能力和抽象思维能力 构造模型对问题进行形式化描述 理解和处理形式模型 课课 程程 简简 介介 课程要求课程要求 目标:师生共同努力,帮助大家学有所得目标:师生共同努力,帮助大家学有所得 讲课进度较快,平时不复习并加深理解,后讲课进度较快,平时不复习并加深理解,后 面将听不懂面将听不懂 作业较多,要求独立完成作业较多,要求独立完成 上机实验,不要轻视上机实验,不要轻视 阅读阅读PL/0PL/0编译器,会有很大收获编译器,会有很大收获 课课 程程 简简 介介 成绩评定成绩评定 学期总评学期总评 = = 考试成绩考试成绩(70%)+(70%)+平时成绩平时成绩(30%)(30%)

5、 平时成绩平时成绩 = = 考勤考勤+ + 书面作业书面作业+ + 上机作业上机作业 考勤:考勤:4 4次,缺勤一次扣次,缺勤一次扣2 2分,缺勤分,缺勤4 4次取消考试资格次取消考试资格 CompilersCompilers课程的相关教学资料下载课程的相关教学资料下载 邮邮 箱:箱:163163邮箱邮箱 用户名:用户名:ssdut_csssdut_cs 密密 码:码:cs2015cs2015 课课 程程 简简 介介 教材和参考书教材和参考书 陈意云、张昱,陈意云、张昱,编译原理编译原理,高等教育出版社,高等教育出版社, 2002008 8年年 第二版第二版 陈火旺、刘春林等编著 程序设计语言

6、编译原理(第3 版) ,国防工业出版社,2001年4月 蒋立源等主编 编译原理(第2版) ,西北工业大学出版 社,2002年1月。 张素琴,吕映芝等编著 编译原理,清华大学出版社, 2005年 胡伦骏等 编译原理电子工业出版社 2005 年 编译原理、技术和工具 Compilers:Principles,Techniques,and Tools (美)阿霍,等 / 2003-8-1 / 机械工业出版 社 / 55.00 / 平装 / 李建中 2009年第二版,89.00 “龙书”。龙书是Alfred V. Aho等人于 1986年出版的,由于出版年代较早,其中包 含部分过时的技术并且没有反映一

7、些新的编 译技术。新编的编译原理抛弃诸如算符 优先分析等过时技术,增加面向对象编译、 类型检查等新技术。 课课 程程 简简 介介 课程简介 现代编译原理-C语言描述 / Modern Compiler Implementation in C (美)安佩尔 / 2006-4-1 / 人民邮电出版 社 / C语言描述 / 45.0 / 平装 / 沈志宇 / 黄 春 / 赵克佳 “虎书”。虎书出版比较晚,与编译 原理的知识点差不多,但增加了数据 流分析、循环优化、内存管理等内容。 与虎书比,编译原理更适合国内的 编译原理课程教学。这本是C版,还有 java版和ML版。 课程简介 高级编译器设计与实现

8、 / Advanced Compiler Design and Implementation (美)马其尼克 / 2005-7-1 / 机械工业出版 社 / 75.0 / 平装 / 沈志宇 / 赵克佳 “鲸书”。鲸书侧重在对编译器后端优化 的处理。在本科阶段的编译教学中旨在让学 生对程序设计语言的编译全过程有系统的理 解,因此会介绍编译器后端的处理技术,但 不注重优化技术。 课课 程程 简简 介介 与其他自然科学相比,计算机科学的发展历史并 不久远,是较新的学科体系,尚有许多未知的领 域有待探索。因此,本专业学生或工程技术人员 仅仅满足于学习或应用几门程序设计语言是远远 不够的。一些看似抽象的

9、课程才是提高专业人员“ 内功”修为的秘技,例如数据结构、操作系统、编 译原理、计算机系统结构、计算机网络等。不过 ,经典课程的学习并不是一蹴而就的,如何学习 与理解课程的精髓是值得关注的。 课课 程程 简简 介介 学习的意义 l 有人认为,编译技术似乎已经相当成熟了,继续深入研究是没有任何意义的 。实际上,任何科学技术都是发展变化的。表面上看,编译器设计的高层问 题似乎已经形成了完美的体系,但当我们深入其内核就会发现事实并非如此 。现代编译器设计面临的挑战是来自目标计算机系统结构、新颖程序设计语 言及本身的计算资源等多方面的。其中,任何一方面的因素都足以颠覆某些 传统理论与算法。 l 当然,从

10、更高的层次上讲,学习编译器设计的目的还不仅仅局限于其本身的 理论与技术。作为一个系统软件的设计学科,其解决问题的思路与方法更是 值得读者细细品味的。这可能是一个漫长而艰辛的历程,不过,这才是经典 学科的魅力所在。以品味经典为目的来学习与研究操作系统、数据库技术、 计算机网络、编译技术等学科是诸君努力方向。 课课 程程 简简 介介 学习的意义学习的意义 它是计算机专业的核心课程。对编程语言的它是计算机专业的核心课程。对编程语言的 设计和实现有深刻的理解,有利于学习编程设计和实现有深刻的理解,有利于学习编程 语言,知其然知其所以然。语言,知其然知其所以然。 if (c = 5) then if (

11、c = 5) then if (c = 5) thenif (c = 5) then if (5 = c) then if (5 = c) then if (5 = c) thenif (5 = c) then 编译器不报错,编译器不报错, 但实际上错了但实际上错了 编译器报错编译器报错 课课 程程 简简 介介 学习的意义学习的意义 对软件工程来说,编译器是一个很好的实例(基本设计 、模块划分等),也是本科期间能碰到的唯一的大型例 子,从本课程的学习也能了解到软件工程中的一些技术 (如基于事件驱动的编程)。本课程所介绍的概念和技 术能应用到一般的软件设计之中。 大多数程序员同时是语言的设计者,

12、虽然是一些简单 的语言(如输入输出),本课程的学习有助于提高对这 些语言的设计水平。 自学能力的考查,抽象思维能力的锻炼 课课 程程 简简 介介 学习的意义学习的意义 可以肯定地说,你们中的可以肯定地说,你们中的95%95%以上的人在一以上的人在一 辈子的生涯中都没有机会去实现一个真正的辈子的生涯中都没有机会去实现一个真正的 复杂语言的编译器。但是每一个人都绝对遇复杂语言的编译器。但是每一个人都绝对遇 到需要使用编译技术的项目。到需要使用编译技术的项目。 以下就是一些以下就是一些小的小的“ “编译器编译器” ”. . 课课 程程 简简 介介 学习的意义学习的意义 普通计算器普通计算器可编程计算

13、器可编程计算器 课课 程程 简简 介介 学习的意义学习的意义 自动聊天机器人自动聊天机器人 课课 程程 简简 介介 学习的意义学习的意义 各种数据库查询语言及专家系统各种数据库查询语言及专家系统 select select 课程课程 from table from table 课程表课程表 where where 任课老师任课老师= =刘馨月刘馨月 课 程 简 介 学习的意义 在计算机专业考研或者各大公司招聘时,必 考内容。 在x86/Linux工作站上,以下两个结构的size分别是20和16 ,为什么不一样? typedef struct _atypedef struct _b char c

14、1; char c1; long i; char c2; charc2; long i; double f; double f; a; b; 在C程序设计中我们经常需要用到一种数据 类型的长度(占内存的字节数),例如: int *p = NULL; p = (int *)malloc(10*sizeof(int); /*用 sizeof(int)来得到int类型的长度*/ vc结果 vs Linux下gcc的结果 前者按前者按8 8字节对齐,后者按字节对齐,后者按4 4字节对齐字节对齐 vc6中的编译选项有 /Zp1|2|4|8|16 ,/Zp1表示 以1字节边界对齐,相应的,/Zpn表示以n

15、字节边 界对齐。n字节边界对齐的意思是说,一个成员的 地址必须安排在成员的尺寸的整数倍地址上或者 是n的整数倍地址上,取它们中的最小值。 要使用这个选项,可以在vc6中打开工程属性页 ,c/c+页,选择Code Generation分类,在 Struct member alignment可以选择。 字节对齐是为了提高CPU的读取效率.比如有些平 台每次读都是从偶地址开始,如果一个int型(假设 为32位系统)如果存放在偶地址开始的地方,那么 一个读周期就可以读出这32bit,而如果存放在奇地 址开始的地方,就需要2个读周期,并对两次读出的 结果的高低字节进行拼凑才能得到该32bit数据.显 然在读取效率上下降很多. 类型字节数 char1 short2 i

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号