已阅读5页,还剩62页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,编译原理和技术PrinciplesofCompiling,大连理工大学软件学院徐秀娟xuxiujuan,2,编译原理课程在计算机科学技术中的地位:,程序设计语言,离散数学,数据结构,编译原理,操作系统,系统软件,应用软件,软件工程,信息系统,电子商务,3,本讲纲要,课程简介编译技术概述,4,课程简介,编译理论与方法计算机科学与技术中理论和实践相结合的最好典范ACM图灵奖,授予在计算机技术领域作出突出贡献的科学家程序设计语言、编译理论与方法约占1/3,5,课程简介,教材和参考书陈意云、张昱,编译原理,高等教育出版社,2008年第二版陈火旺、刘春林等编著程序设计语言编译原理(第3版),国防工业出版社,2001年4月蒋立源等主编编译原理(第2版),西北工业大学出版社,2002年1月。张素琴,吕映芝等编著编译原理,清华大学出版社,2005年胡伦骏等编译原理电子工业出版社2005年,6,课程简介,教材和参考书Compilers:Principles,Techniques,andTools编译原理技术与工具(英文版)AlfredV.Aho,RaviSethi,JeffreyD.Ullman,人民邮电出版社.中文版:机械工业出版社/“龙书”。龙书是于1986年出版第一版,由于出版年代较早,其中包含部分过时的技术并且没有反映一些新的编译技术。新版的编译原理抛弃诸如算符优先分析等过时技术,增加面向对象编译、类型检查等新技术。,7,课程简介,教材和参考书现代编译原理-C语言描述/ModernCompilerImplementationinC(美)安佩尔/2006-4-1/人民邮电出版社/C语言描述/45.0/平装/沈志宇/黄春/赵克佳“虎书”。虎书出版比较晚,与编译原理的知识点差不多,但增加了数据流分析、循环优化、内存管理等内容。与虎书比,编译原理更适合国内的编译原理课程教学。本书包括C版,还有java版和ML版,8,课程简介,教材和参考书高级编译器设计与实现/AdvancedCompilerDesignandImplementation(美)马其尼克/2005-7-1/机械工业出版社/75.0/平装/沈志宇/赵克佳“鲸书”。鲸书侧重在对编译器后端优化的处理。在本科阶段的编译教学中旨在让学生对程序设计语言的编译全过程有系统的理解,因此会介绍编译器后端的处理技术,但不注重优化技术。,9,课程简介,成绩评定学期总评=考试成绩占70%,平时成绩30分(作业+上机实验+平时点名)平时点名4次,每次2分。4次都不到的取消期末考试资格。作业+上机=22分,1-16周上课每周12次时间紧、任务重,10,课程简介-要求,抄袭:不允许禁止ccharc1;longi;charc2;charc2;longi;doublef;doublef;a;b;,课程简介,学习的意义在计算机专业考研或者各大公司招聘时,必考内容。,20,typedefstruct_atypedefstruct_bcharc1;charc1;longl;charc2;charc2;longl;doublef;doublef;a;b;,课程简介,sizeof(a):20a的首地址:0 xbf9a97c4a.c1的首地址:0 xbf9a97c4a.l的首地址:0 xbf9a97c8a.c2的首地址:0 xbf9a97cca.d的首地址:0 xbf9a97d0,Linux下测试结果:,sizeof(b):16b的首地址:0 xbf9a97d8b.c1的首地址:0 xbf9a97d8b.c2的首地址:0 xbf9a97d9b.l的首地址:0 xbf9a97dcb.d的首地址:0 xbf9a97e0,21,typedefstruct_atypedefstruct_bcharc1;charc1;longl;charc2;charc2;longl;doublef;doublef;a;b;,课程简介,sizeof(a):24a的首地址:0012FF18a.c1的首地址:0012FF18a.l的首地址:0012FF1Ca.c2的首地址:0012FF20a.d的首地址:0012FF28,VC下测试结果:,sizeof(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字节边界对齐的意思是说,一个成员的地址必须安排在成员的尺寸的整数倍地址上或者是n的整数倍地址上,取它们中的最小值。要使用这个选项,可以在vc6中打开工程属性页,c/c+页,选择CodeGeneration分类,在Structmemberalignment可以选择。,24,字节对齐是为了提高CPU的读取效率.比如有些平台每次读都是从偶地址开始,如果一个int型(假设为32位系统)如果存放在偶地址开始的地方,那么一个读周期就可以读出这32bit,而如果存放在奇地址开始的地方,就需要2个读周期,并对两次读出的结果的高低字节进行拼凑才能得到该32bit数据.显然在读取效率上下降很多.,25,26,本讲纲要,课程简介编译技术概述,27,编辑器,源程序,编译器,操作系统,可执行程序.exe,解释器,中间代码,可执行程序.exe,Edit,Word,Notepad,Vi,gcc,vc,bc31,虚拟机,集成开发环境,编译技术研究对象:编译器的构造与分析,28,BASIC年代的解释器功能:它将高级语言的源程序翻译成一种中间语言程序,然后对中间语言程序进行解释执行在那个年代,编译和解释两个功能是合在一个程序中,该程序被称为解释器Java年代的解释器解释器的上述两个功能分在两个程序中前一个叫做编译器,它把源程序翻译成一种叫做字节码的中间语言程序后一个叫做解释器,它对字节码程序进行解释执行,课程简介,29,编译器和解释器的区别,三种奶牛三种嗜好,30,编译器和解释器的区别,改进后的方案,31,编译器和解释器的区别,牧草我们的各种编程语言,C/C+/C#,Java,Pascal,PHP,Perl,JavaScript等切割机各种编译器奶牛各种CPU,比如x86,ARM,MIPS等奶牛会有吃不同形状牧草的嗜好,这个奇怪的比喻是为了表示不同的CPU接受的不同的机器语言。,32,编译器和解释器的区别,33,编译器和解释器的区别,34,第一章引论,翻译器:把一种语言变换到另外一种语言的软件。这两种语言分别称为源语言和目标语言。编译器:一种翻译器,它的目标语言比源语言低级。编译器处理的对象:编程语言,35,编程语言演义,编程语言机器语言汇编语言高级语言(Fortran,C,Java,),36,编程语言演义,机器语言特点0,1串打卡输入c70600000002movx,c其中符号x的地址是0000,c=2计算机可以直接理解机器语言程序机器语言缺点可读性差可维护性差,机器语言汇编语言高级语言,37,编程语言演义,汇编语言形式movx,2c70600000002变量x的地址可以由汇编器维护,而不需要固定到某个绝对地址,机器语言汇编语言高级语言,38,编程语言演义,高级语言形式赋值语句:x=2贴近人类思维方式,贴近实际问题描述形式计算机无法直接理解需要编译器辅助,将其转换为机器语言形式,机器语言汇编语言高级语言,39,编译器功能,完成从源语言到目标语言的转换源语言:通常是高级语言(C,Java,)目标语言:汇编语言,或者其他形式的低级语言(如Java字节码)编译器实现技术已经发展成熟,并且划分为功能相对明确的多个功能模块,40,编译器,编译器从逻辑上可以分成若干阶段,每个阶段把源程序从一种表示变换成另一种表示,翻译家,第一章引论,41,第一章引论,FORTRAN(FORmulaTRANslation)第一个实用的高级语言擅长于数学函数运算常用于科学计算中第一个编译器历史上第一个实用的编译器(JohnBackus):FortrancompilerfortheIBM704/709/7090/7094JohnBackus,引入了编译器的“阶段”或称为“遍”的概念,是编译设计的模块化的开始,42,遍,编译的几个阶段常用一遍(pass)扫描实现,一遍扫描包括读一个输入文件和写一个输出文件。,第一章引论,43,遍,类比:刷墙艺术中的“遍”的概念,网线,水泥,瓷砖,任务:在一面墙上布置网线,并粉刷水泥,然后贴上瓷砖,第一章引论,44,遍,类比:刷墙艺术中的“遍”的概念,方法一:,第一遍:布上全部网线,网线,水泥,瓷砖,第一章引论,45,遍,类比:刷墙艺术中的“遍”的概念,方法一:,第二遍:粉刷全部墙面的水泥,网线,水泥,瓷砖,第一章引论,46,遍,类比:刷墙艺术中的“遍”的概念,方法一:,第三遍:给整个墙面贴上瓷砖,网线,水泥,瓷砖,第一章引论,47,遍,类比:刷墙艺术中的“遍”的概念,方法二:,一遍:一边布网线,一边粉刷水泥,一边贴瓷砖,网线,水泥,瓷砖,第一章引论,48,遍(趟):一遍或一趟:是指编译程序在编译时刻把源程序或源程序的等价物(中间程序)从头到尾扫描一遍并转换成另一紧邻的等价物的全过程。单遍扫描与多遍扫描:每一遍的扫视可完成上述一个阶段或多个阶段的工作。每一遍的输入都是上一遍的输出,第一遍的输入是源程序正文,最后一遍的输出是目标代码。单遍与多遍的比较:遍数多:编译器结构清晰,但时间效率不高遍数少:编译速度快,但对机器的内存要求高遍数的确定:主要因素是源程序和机器(目标机)的特征。,第一章引论,49,词法分析:源程序-词法记号(token)流,第一章引论,50,任何一个标识符都是表达式;任何一个数都是表达式;如果e1和e2都是表达式,那么e1+e2e1*e2(e1)也都是表达式,语法分析:词法记号(token)流-语法短语,任何名词都可以作宾语;如果e1和e2都是宾语,那么e1和e2e1与e2也都可以作宾语如果e1是定语,e2是宾语,那么e1e2也可以作宾语。,第一章引论,51,语法分析器,id,1=id,2+id,360,语法分析:词法记号(token)流-语法短语,名词1动词形容词名词2,语法分析,第一章引论,52,语义分析:检查程序的语义正确性,如类型检查等,你们是优秀的大工学子,你们是一个优秀的大工学子。,第一章引论,53,第一章引论,54,中间代码生成器,temp1:=inttoreal(60)temp2:=id3*temp1temp3:=id2+temp2id1:=temp3,英语文本生成,YouaregoodDLUTers.,第一章引论,55,代码优化器,temp1:=inttoreal(60)temp2:=id3*temp1temp3:=id2+temp2id1:=temp3,temp1:=id3*60.0id1:=id2+temp1,YouaregoodDLUTers.,英语文本改进,YouareexcellentDLUTers,第一章引论,56,日语文本生成,YouareexcellentDLUTers,君大連理工大学優秀学生。,第一章引论,57,第一章引论,58,第一章引论,59,前端后端,前端:依赖于源语言,独立于目标机器。,后端:依赖于目标机器,独立于源语言。,第一章引论,60,前端和后端:把编译过程分成前端和后端两部分前端:只依赖于源程序,独立于目标机器(生成中间代码)后端:依赖于目标机器,与源程序无关,只与中间语言有关(从中间代码生成目标代码)好处:提高开发编译器的效率取一个编译器的前端,重写它的后端以产生同一源语言在另一机器上的编译器不同的前端使用同一个后端,从而得到一个机器上的几个编译器(采用同一中间语言),第一章引论,61,源程序,目标机器1,目标机器2,目标机器3,目标机器n,编译器,不区分前端和后端的编译器,源程序,目标机器1,目标机器2,目标机器3,目标机器n,编译器前端,编译器后端,区分前端和后端的编译器,第一章引论,62,高级语言的实现高级编程语言易于编程,但程序运行较慢低级语言编程时可实施更有效的控制方式,得到更有效的代码,但难编写、易出错、难维护流行编程语言的大多数演变都是朝着提高抽象级别的方向每一轮编程语言新特征的出现都刺激编译器优化的新研究,1.2编译器技术的应用,63,程序翻译二进制翻译编译器技术可用于把一种机器的二进制代码翻译成另一种机器的代码,以运行原先为别的指令集编译的代码数据库查询解释器数据库查询由一些谓词组成,这些谓词由包含关系运算的布尔表达式组成,可以被解释执行,也可以被编译成搜索数据库的命令,1.2编译器技术的应用,6
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 餐饮业法律法规知识试题及答案
- 2026年宠物健康监测(体温测量)试题及答案
- 高三化学《化学反应的方向与调控》教学设计
- 初中英语七年级下册Unit 1 The secrets of happiness听说课教学设计
- 初中美术七年级下册《博物馆寻美》教学设计
- 2027年高三政治一轮复习第三课《领会科学思维》教学设计
- 高中信息技术必修一 分支结构程序实现 教学设计
- 高中政治必修四哲学与文化5.3社会历史的主体教案
- 高中物理必修第一册“瞬时问题与连接体问题”专题提升课教学设计
- 小学五年级劳动课“体验采摘苹果”实践活动教学设计
- 非遗课程设计详细教案
- 中国食物成分表2018年(标准版)第6版
- 狼图腾读书笔记摘抄及感悟第二章(4篇)
- 敖汉旗新惠工业园区项目地质灾害危险性评估报告
- 人机工程学-第九章人与环境的界面设计
- 话剧《收信快乐》
- 地面建筑压覆煤矿互不影响论证报告
- 公司租房合同续约
- 固体废物处理与资源化课后习题答案(赵由才第三版)及期末试题库
- YC/T 438-2012烟草商业企业卷烟物流配送车辆管理规范
- 口腔CBCT的临床应用课件
评论
0/150
提交评论