您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > 大连理工大学编译原理课件.
编译原理和技术大连理工大学软件学院刘馨月自我介绍刘馨月,女,博士,副教授主讲课程:数据结构与算法,编译技术研究方向:数据挖掘,信息检索数据结构与算法教学团队成员智能信息处理研究所成员(wisdom.dlut.edu.cn)Email:xinyue_dlut@163.com课程定位--核心课程分类课程名称课程定位备注计算机基础计算机导论入门算法和数据结构基础高级语言程序设计(1,2)必备工具计算机理论(离散数学1,2,3)数理逻辑计算机数学集合论和图论组合数学计算机硬件类课程数子电路和数字逻辑硬件基础课程含实验计算机原理和汇编语言部件原理含实验计算机接口与通讯部件间通讯含实验计算机体系结构体系结构含实验计算机网络计算机软件类课程编译技术系统软件层含课程设计操作系统含课程设计数据库系统原理含课程设计软件工程信息系统分析与设计应用类计算机图形学(多媒体技术)应用类操作系统课程简介课程内容介绍编译器构造的一般原理和基本实现方法介绍的理论知识:形式语言和自动机理论、语法制导的定义和属性文法、类型论等课程特点强调形式化描述技术强调对编译原理和技术的宏观理解,不把注意力分散到枝节算法,不偏向于某种源语言或目标机器课程简介编译理论与方法计算机科学与技术中理论和实践相结合的最好典范Intel公司的DavidKuck院士曾经将编译器誉为“计算机科学与技术的皇后”ACM图灵奖—“计算机界的诺贝尔奖”,授予在计算机技术领域作出突出贡献的科学家程序设计语言、编译理论与方法约占1/3课程简介本专业人员4种基本的专业能力计算思维能力算法的设计与分析能力程序设计和实现能力计算机软硬件系统的认知、分析、设计与应用能力计算思维能力逻辑思维能力和抽象思维能力构造模型对问题进行形式化描述理解和处理形式模型课程简介课程要求目标:师生共同努力,帮助大家学有所得讲课进度较快,平时不复习并加深理解,后面将听不懂作业较多,要求独立完成上机实验,不要轻视阅读PL/0编译器,会有很大收获课程简介成绩评定学期总评=考试成绩(70%)+平时成绩(30%)平时成绩=考勤+书面作业+上机作业考勤:4次,缺勤一次扣2分,缺勤4次取消考试资格Compilers课程的相关教学资料下载邮箱:163邮箱用户名:ssdut_cs密码:cs2015课程简介教材和参考书陈意云、张昱,编译原理,高等教育出版社,2008年第二版陈火旺、刘春林等编著程序设计语言编译原理(第3版),国防工业出版社,2001年4月蒋立源等主编编译原理(第2版),西北工业大学出版社,2002年1月。张素琴,吕映芝等编著编译原理,清华大学出版社,2005年胡伦骏等《编译原理》电子工业出版社2005年编译原理、技术和工具Compilers:Principles,Techniques,andTools(美)阿霍,等/2003-8-1/机械工业出版社/55.00/平装/李建中2009年第二版,89.00“龙书”。龙书是AlfredV.Aho等人于1986年出版的,由于出版年代较早,其中包含部分过时的技术并且没有反映一些新的编译技术。新编的《编译原理》抛弃诸如算符优先分析等过时技术,增加面向对象编译、类型检查等新技术。课程简介课程简介现代编译原理-C语言描述/ModernCompilerImplementationinC(美)安佩尔/2006-4-1/人民邮电出版社/C语言描述/45.0/平装/沈志宇/黄春/赵克佳“虎书”。虎书出版比较晚,与《编译原理》的知识点差不多,但增加了数据流分析、循环优化、内存管理等内容。与虎书比,《编译原理》更适合国内的编译原理课程教学。这本是C版,还有java版和ML版。课程简介高级编译器设计与实现/AdvancedCompilerDesignandImplementation(美)马其尼克/2005-7-1/机械工业出版社/75.0/平装/沈志宇/赵克佳“鲸书”。鲸书侧重在对编译器后端优化的处理。在本科阶段的编译教学中旨在让学生对程序设计语言的编译全过程有系统的理解,因此会介绍编译器后端的处理技术,但不注重优化技术。课程简介与其他自然科学相比,计算机科学的发展历史并不久远,是较新的学科体系,尚有许多未知的领域有待探索。因此,本专业学生或工程技术人员仅仅满足于学习或应用几门程序设计语言是远远不够的。一些看似抽象的课程才是提高专业人员“内功”修为的秘技,例如数据结构、操作系统、编译原理、计算机系统结构、计算机网络等。不过,经典课程的学习并不是一蹴而就的,如何学习与理解课程的精髓是值得关注的。课程简介学习的意义有人认为,编译技术似乎已经相当成熟了,继续深入研究是没有任何意义的。实际上,任何科学技术都是发展变化的。表面上看,编译器设计的高层问题似乎已经形成了完美的体系,但当我们深入其内核就会发现事实并非如此。现代编译器设计面临的挑战是来自目标计算机系统结构、新颖程序设计语言及本身的计算资源等多方面的。其中,任何一方面的因素都足以颠覆某些传统理论与算法。当然,从更高的层次上讲,学习编译器设计的目的还不仅仅局限于其本身的理论与技术。作为一个系统软件的设计学科,其解决问题的思路与方法更是值得读者细细品味的。这可能是一个漫长而艰辛的历程,不过,这才是经典学科的魅力所在。以品味经典为目的来学习与研究操作系统、数据库技术、计算机网络、编译技术等学科是诸君努力方向。课程简介学习的意义它是计算机专业的核心课程。对编程语言的设计和实现有深刻的理解,有利于学习编程语言,知其然知其所以然。if(c==5)then…if(c=5)then…if(5==c)then…if(5=c)then…编译器不报错,但实际上错了编译器报错课程简介学习的意义对软件工程来说,编译器是一个很好的实例(基本设计、模块划分等),也是本科期间能碰到的唯一的大型例子,从本课程的学习也能了解到软件工程中的一些技术(如基于事件驱动的编程)。本课程所介绍的概念和技术能应用到一般的软件设计之中。大多数程序员同时是语言的设计者,虽然是一些简单的语言(如输入输出),本课程的学习有助于提高对这些语言的设计水平。自学能力的考查,抽象思维能力的锻炼课程简介学习的意义可以肯定地说,你们中的95%以上的人在一辈子的生涯中都没有机会去实现一个真正的复杂语言的编译器。但是每一个人都绝对遇到需要使用编译技术的项目。以下就是一些小的“编译器”.课程简介学习的意义普通计算器可编程计算器课程简介学习的意义自动聊天机器人课程简介学习的意义各种数据库查询语言及专家系统select课程fromtable课程表where任课老师=刘馨月课程简介学习的意义在计算机专业考研或者各大公司招聘时,必考内容。在x86/Linux工作站上,以下两个结构的size分别是20和16,为什么不一样?typedefstruct_a{typedefstruct_b{charc1;charc1;longi;charc2;charc2;longi;doublef;doublef;}a;}b;在C程序设计中我们经常需要用到一种数据类型的长度(占内存的字节数),例如:int*p=NULL;p=(int*)malloc(10*sizeof(int));/*用sizeof(int)来得到int类型的长度*/vc结果vsLinux下gcc的结果前者按8字节对齐,后者按4字节对齐vc6中的编译选项有/Zp[1|2|4|8|16],/Zp1表示以1字节边界对齐,相应的,/Zpn表示以n字节边界对齐。n字节边界对齐的意思是说,一个成员的地址必须安排在成员的尺寸的整数倍地址上或者是n的整数倍地址上,取它们中的最小值。要使用这个选项,可以在vc6中打开工程属性页,c/c++页,选择CodeGeneration分类,在Structmemberalignment可以选择。字节对齐是为了提高CPU的读取效率.比如有些平台每次读都是从偶地址开始,如果一个int型(假设为32位系统)如果存放在偶地址开始的地方,那么一个读周期就可以读出这32bit,而如果存放在奇地址开始的地方,就需要2个读周期,并对两次读出的结果的高低字节进行拼凑才能得到该32bit数据.显然在读取效率上下降很多.类型字节数char1short2int4float4long4longlong8double8longdouble10Intel和微软公司同时出现的面试题,练习一下:#pragmapack(8)/*指定按8字节对齐*/structs1{shorta;longb;};structs2{charc;s1d;longlonge;};#pragmapack()/*取消指定对齐,恢复缺省对齐*/问题:1.sizeof(s2)=?2.s2的c后面空了几个字节接着是d?答案:sizeof(S2)结果为24。s2的c后面空了3个字节接着是d。分析:S1中,成员a是2字节默认按2字节对齐,指定对齐参数为8,这两个值中取2,a按2字节对齐;同理,成员b是4个字节,按4字节对齐,所以sizeof(S1)应该为8;abS1的内存布局:11**,1111S2中,c按1字节对齐,而d是个结构,它是8个字节,它按什么对齐呢?对于结构来说,它的默认对齐方式就是它的所有成员使用的有效对齐值中最大的一个,S1的就是4.所以,成员d就是按4字节对齐.成员e是8个字节,它是默认按8字节对齐,和指定的一样,所以它对到8字节的边界上,这时,已经使用了12个字节了,所以添加了4个字节的空,从第16个字节开始放置成员e。这样一共使用了24个字节。cS1.aS1.bdS2的内存布局:1***,11**,1111,****11111111程序设计语言的发展机器语言(机器指令)汇编语言面向用户的语言面向问题的语言低级语言高级语言C70600000002MOVx,2x=2低级语言(LowlevelLanguage)字位码、机器语言、汇编语言特点:与特定的机器有关,功效高,但使用复杂、繁琐、费时、易出错高级语言--Fortran、Pascal、C语言等特点:不依赖具体机器,移植性好、对用户要求低、易使用、易维护等。用高级语言编制的程序,计算机不能立即执行,必须通过一个“翻译程序”加工,转化为与其等价的机器语言程序,机器才能执行。这种翻译程序,称之为“编译程序”。•源程序用汇编语言或高级语言编写的程序称为源程序。•目标程序用目标语言所表示的程序。目标语言:可以是介于源语言和机器语言之间的“中间语言”,可以是某种机器的机器语言,也可以是某机器的汇编语言。•翻译程序将源程序转换为目标程序的程序称为翻译程序。它是指各种语言的翻译器,包括汇编程序和编译程序,是汇编程序、编译程序以及各种变换程序的总称。基本概念课程简介编译技术研究对象:编译器的构造与分析编辑器源程序编译器操作系统可执行程序.exe解释器C,C++,Pascal,Delphi,VC,BCEdit,Word,Notepad,Vigcc,vc,bc31虚拟机集成开发环境BASIC年代的解释器功能:它将高级语言的源程序翻译成一种中间语言程序,然后对中间语言程序进行解释执行在那个年代,编译和解释两个功能是合在一个程序中,该程序被称为解释器Java年代的解释器解释器的上述两个功能分在两个程序中前一个叫做编译器,它把源程序翻译成一种叫做字节码的中间语言程序后一个叫做解释器,它对字节码程序进行解释执行编译器和解释器的区别编译器和解释器的区别编译器与解释器的区别编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快;而解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的.第一章引论翻译器:把一种语言变换到另外一种语言的软件。这两种语言分别称为源语言和目标语言。编译器:一种翻译器,它的目标语言比源语言低级。第一章引论词法分析器语法分析器语义分析器源程序中间代码生成器代码优化器代码生成器目标程序出错管理器符号表管理器编译器编译器从逻辑上可以分成若干阶段,每个阶段
本文标题:大连理工大学编译原理课件.
链接地址:https://www.777doc.com/doc-2514794 .html