编译原理课程实践改革探索.ppt

上传人:re****.1 文档编号:568223678 上传时间:2024-07-23 格式:PPT 页数:35 大小:367.50KB
返回 下载 相关 举报
编译原理课程实践改革探索.ppt_第1页
第1页 / 共35页
编译原理课程实践改革探索.ppt_第2页
第2页 / 共35页
编译原理课程实践改革探索.ppt_第3页
第3页 / 共35页
编译原理课程实践改革探索.ppt_第4页
第4页 / 共35页
编译原理课程实践改革探索.ppt_第5页
第5页 / 共35页
点击查看更多>>
资源描述

《编译原理课程实践改革探索.ppt》由会员分享,可在线阅读,更多相关《编译原理课程实践改革探索.ppt(35页珍藏版)》请在金锄头文库上搜索。

1、张昱张昱 陈意云陈意云 中国科学技术大学中国科学技术大学编译原理课程实践改革探索编译原理课程实践改革探索中国科学技术大学中国科学技术大学 计算机科学技术系计算机科学技术系张昱张昱 陈意云陈意云0551-3603804,yuzhang,http:/ 济南 山东大学张昱张昱 陈意云陈意云 中国科学技术大学中国科学技术大学编译原理课程实践改革探索编译原理课程实践改革探索2/35提纲提纲v引言引言v课程程实践方案践方案规划与划与历程程课程程实验的的组成要素成要素实验平台与相关工具平台与相关工具课程程设计软件包的特点件包的特点v实验改革改革实践与践与经验教教训v课堂教学中与堂教学中与实际的的联系系2张昱

2、张昱 陈意云陈意云 中国科学技术大学中国科学技术大学编译原理课程实践改革探索编译原理课程实践改革探索3/35计算机科学与技术学科的本科教学目标计算机科学与技术学科的本科教学目标 计算机科学与技术学科的毕业生除了要掌握该学计算机科学与技术学科的毕业生除了要掌握该学科的各个知识领域的基本知识和技术之外,还必须具科的各个知识领域的基本知识和技术之外,还必须具有较扎实的数学功底,掌握科学的研究方法,熟悉计有较扎实的数学功底,掌握科学的研究方法,熟悉计算机如何得以实际应用,并具有有效的沟通技能和良算机如何得以实际应用,并具有有效的沟通技能和良好的团队工作能力。好的团队工作能力。中国中国计算机科学与技算机

3、科学与技术教程教程2002(CCC2002)张昱张昱 陈意云陈意云 中国科学技术大学中国科学技术大学编译原理课程实践改革探索编译原理课程实践改革探索4/35专业实践及其意义专业实践及其意义v专业实践的形式践的形式课程程实践践、实习、毕业设计、竞赛、v专业实践的意践的意义激激发学生的学学生的学习兴趣趣巩固和消化巩固和消化课堂知堂知识提高提高实践技能践技能培养培养创新能力新能力增增强交流能力交流能力张昱张昱 陈意云陈意云 中国科学技术大学中国科学技术大学编译原理课程实践改革探索编译原理课程实践改革探索5/35存在问题存在问题v毕业生在就生在就业中暴露出的一些中暴露出的一些问题动手能力手能力较差差分

4、析分析问题、解决、解决问题能力能力较薄弱薄弱岗前技前技术培培训:其中有些是学校可以做而没有做的:其中有些是学校可以做而没有做的 岗前工程意前工程意识、质量意量意识和和团队精神的教育:学校也精神的教育:学校也可以逐步培养的可以逐步培养的 v课程程实践中存在的践中存在的问题各各课程的程的课程程实践各自独立践各自独立内容内容陈旧、覆盖面窄、旧、覆盖面窄、综合性不高、合性不高、难度低、度低、规模小模小不注重不注重对学生工程、学生工程、质量、量、团队等意等意识的培养的培养学生数增加,学生数增加,检查力度和深度不力度和深度不够学生学生对课程程实践的践的热情未情未调动起来,拷起来,拷贝风气增气增长张昱张昱

5、陈意云陈意云 中国科学技术大学中国科学技术大学编译原理课程实践改革探索编译原理课程实践改革探索6/35专业实践改革专业实践改革v指指导思想思想首先抓首先抓课程程实践改革,践改革,课程程实践要践要整体整体规划划像像讨论教学教学计划那划那样来来讨论技技术水平的培养:水平的培养:语言、言、工具、平台的覆盖范工具、平台的覆盖范围和相互之和相互之间的的衔接。接。 v其覆盖程度依其覆盖程度依赖于于制度的保制度的保证、学科机构的、学科机构的资源、教源、教职人人员的利益的利益软件件类的的课程程实践践-学生至少参与完成一个有一定规模的软件项目的设计与开发学生至少参与完成一个有一定规模的软件项目的设计与开发, 涉

6、及对多门课程所学原理的综合运用涉及对多门课程所学原理的综合运用-遵循由小到大、循序渐进的原则遵循由小到大、循序渐进的原则-整体规划课程实践涉及的语言、工具和环境整体规划课程实践涉及的语言、工具和环境-注意培养工程意识、质量意识和团队意识注意培养工程意识、质量意识和团队意识张昱张昱 陈意云陈意云 中国科学技术大学中国科学技术大学编译原理课程实践改革探索编译原理课程实践改革探索7/35专业实践改革专业实践改革软件件类的的课程程实践践v低年低年级的的课程程实践(如践(如C语言、数据言、数据结构)构)以巩固以巩固课程知程知识的小的小实验为主主训练学生基本的程序学生基本的程序设计技能技能v高年高年级的的

7、课程程实践(如践(如编译原理、操作系原理、操作系统等)等)以以综合运用的合运用的课程程设计为主主训练学生学生软件工程的能力件工程的能力张昱张昱 陈意云陈意云 中国科学技术大学中国科学技术大学编译原理课程实践改革探索编译原理课程实践改革探索8/35提纲提纲v引言引言v课程程实践方案践方案规划与划与历程程课程程实验的的组成要素成要素实验平台与相关工具平台与相关工具课程程设计软件包的特点件包的特点v实验改革改革实践与践与经验教教训v课堂教学中与堂教学中与实际的的联系系8张昱张昱 陈意云陈意云 中国科学技术大学中国科学技术大学编译原理课程实践改革探索编译原理课程实践改革探索9/35课程实践的规划课程实

8、践的规划v定位:定位:综合运用的合运用的课程程设计(通通过合作合作)为某个某个语言言设计开开发一个可运行的一个可运行的编译器器为适适应个性化学个性化学习,布局多个小型,布局多个小型课程程设计学生可学生可针对自己的基自己的基础选择适合自己的适合自己的课程程设计,当,当然不同然不同难度系数的度系数的课程程设计的得分不一的得分不一样。 v历程程调研研做做UC Berkeley的的编译课程程设计设计适合国情适合国情的的课程程设计及其支持及其支持软件与文档件与文档2007/2008年春:在年春:在04/05级本科生中开展本科生中开展编译实验目前仍在目前仍在进一步改一步改进和完善中和完善中张昱张昱 陈意云

9、陈意云 中国科学技术大学中国科学技术大学编译原理课程实践改革探索编译原理课程实践改革探索10/35课程实验的组成要素课程实验的组成要素(1)v源源语言言SimpleMiniJOOL语言言(仅有一个有一个main函数、整型函数、整型)SkipOOMiniJOOL语言言(非面向非面向对象,有整型、布象,有整型、布尔型、一型、一维数数组类型型)MiniJOOL语言言(面向面向对象象)v中中间表示表示高高级中中间表示:表示:Eclipse JDT中的中的AST低低级中中间表示表示:降低:降低汇编代代码生成的生成的难度,开展度,开展优化化v目目标机的机的选择X86: CISCMIPS: RISCv编译器

10、器组件:件:分析器、解分析器、解释器、器、优化器化器、汇编代代码生成器生成器v汇编代代码的内部表示的内部表示统一表示,以此一表示,以此为基基础设计实现寄存器分配器寄存器分配器张昱张昱 陈意云陈意云 中国科学技术大学中国科学技术大学编译原理课程实践改革探索编译原理课程实践改革探索11/35SimpleMiniJOOL程序程序分析器分析器高级中间表示高级中间表示(Eclipse AST)解释器解释器SkipOOMiniJOOL程序程序语义检查器语义检查器X86汇编代码汇编代码生成器生成器MIPS汇编代码汇编代码生成器生成器汇编代码的汇编代码的内部表示内部表示寄存器分配器寄存器分配器分析器分析器X8

11、6汇编码汇编码MIPS汇编码汇编码用GCC编译连接用SPIM解释执行课程实验的组成要素课程实验的组成要素(2)MiniJOOL程序程序转换器转换器优化器优化器低级中间表示低级中间表示(三地址码三地址码)X86汇编代码汇编代码生成器生成器MIPS汇编代码汇编代码生成器生成器寄存器分配器寄存器分配器分析器分析器张昱张昱 陈意云陈意云 中国科学技术大学中国科学技术大学编译原理课程实践改革探索编译原理课程实践改革探索12/35实验平台与相关软件实验平台与相关软件(1)v编译器开器开发所使用的所使用的语言:言:JavaJava SDK 1.5以上以上Eclipse IDEv分析器的生成工具分析器的生成工

12、具词法分析器的生成工具:法分析器的生成工具:JFlexLALR分析器的生成工具:分析器的生成工具:CUPLL(k)分析器的生成工具:分析器的生成工具:Java CCv目目标机机X86汇编代代码:GCC(MinGW),), GDBMIPS汇编代代码:SPIM模模拟器器v编译工具:工具:ant张昱张昱 陈意云陈意云 中国科学技术大学中国科学技术大学编译原理课程实践改革探索编译原理课程实践改革探索13/35实验平台与相关软件实验平台与相关软件(2)v实验平台平台软件(当前的版本)件(当前的版本)实验平台接口:平台接口:组件接口、异常件接口、异常类、中、中间表示表示访问接口接口实验运行平台运行平台-配

13、置文件配置文件-根据配置加载、运行各编译器组件根据配置加载、运行各编译器组件一些有用的工具包一些有用的工具包-AST的图形显示的图形显示-低级中间表示低级中间表示-汇编代码的内部表示汇编代码的内部表示-寄存器分配器寄存器分配器-一些语言的分析器一些语言的分析器-张昱张昱 陈意云陈意云 中国科学技术大学中国科学技术大学编译原理课程实践改革探索编译原理课程实践改革探索14/35实验平台与相关软件实验平台与相关软件(3)v课程程设计软件包件包(现有版本有版本)http:/ Lab1:一个:一个SimpleMiniJOOL程序的解程序的解释器器Lab2: 词法分析法分析-用用JFlex为为MiniJO

14、OL语言生成一个词法分析器语言生成一个词法分析器-手工编写一个简单的词法分析器手工编写一个简单的词法分析器-编写一个编写一个NFA生成器生成器-编写一个词法分析器的生成器编写一个词法分析器的生成器Lab3: 语法分析法分析-手工编写一个语法分析器手工编写一个语法分析器-用用CUP编写一个语法分析器编写一个语法分析器-用用JavaCC编写一个语法分析器编写一个语法分析器-编写一个语法分析器的生成器编写一个语法分析器的生成器张昱张昱 陈意云陈意云 中国科学技术大学中国科学技术大学编译原理课程实践改革探索编译原理课程实践改革探索15/35实验平台与相关软件实验平台与相关软件(4)v课程程设计软件包件

15、包(现有版本有版本)http:/ Lab4: 语义分析分析-为为AST构造符号表构造符号表-对对AST进行语义分析进行语义分析-在语法分析的同时构造符号表在语法分析的同时构造符号表-在语法分析的同时做语义分析在语法分析的同时做语义分析Lab5: MIPS汇编代代码生成生成-利用现有的寄存器分配器生成利用现有的寄存器分配器生成MIPS汇编代码汇编代码-独立实现完整的独立实现完整的MIPS汇编代码生成器汇编代码生成器Lab6: x86汇编代代码生成生成-利用现有的寄存器分配器生成利用现有的寄存器分配器生成x86汇编代码汇编代码-独立实现完整的独立实现完整的x86汇编代码生成器汇编代码生成器张昱张昱

16、 陈意云陈意云 中国科学技术大学中国科学技术大学编译原理课程实践改革探索编译原理课程实践改革探索16/35实验平台与相关软件实验平台与相关软件(5)v课程程设计软件包件包(现有版本有版本)http:/ PB05011:综合性合性实验-以以SkipOOMiniJOOL语言作为要实现的源语言语言作为要实现的源语言-每个学生独立完成编译器的前端或后端每个学生独立完成编译器的前端或后端-每个学生自行选择完成后端或前端的合作伙伴每个学生自行选择完成后端或前端的合作伙伴前端要求前端要求:-词法分析、语法分析、语义检查并生成词法分析、语法分析、语义检查并生成AST后端要求后端要求:-由由AST生成生成x86

17、汇编代码或汇编代码或MIPS汇编代码,不要求代码优汇编代码,不要求代码优化,但要求考虑寄存器分配等问题化,但要求考虑寄存器分配等问题提交要求提交要求:-一个完整的编译器一个完整的编译器张昱张昱 陈意云陈意云 中国科学技术大学中国科学技术大学编译原理课程实践改革探索编译原理课程实践改革探索17/35实验平台与相关软件实验平台与相关软件(6)v课程程设计软件包件包(未来版本未来版本)Lab1:一个:一个SimpleMiniJOOL程序的解程序的解释器器Lab2: 词法分析法分析Lab3: 语法分析法分析(增增强对错误处理的指理的指导)Lab4: 语义检查(补充充样例和指例和指导说明明)Lab5:

18、低低级中中间代代码生成生成Lab6: 优化器化器Lab7: MIPS汇编代代码生成生成Lab8: x86汇编代代码生成生成Lab9: 面向面向对象程序的象程序的编译张昱张昱 陈意云陈意云 中国科学技术大学中国科学技术大学编译原理课程实践改革探索编译原理课程实践改革探索18/35课程设计软件包的特点课程设计软件包的特点(1)v规范性范性目目录结构构编译运行运行-批处理脚本、配置文件批处理脚本、配置文件-Eclipse IDE工程文件工程文件v指指导性性提供提供样例及其例及其说明明如:以赋值语句序列语言示意语法分析如:以赋值语句序列语言示意语法分析的实现的实现提供一般性的提供一般性的处理理规则如:

19、语法结构与汇编代码的映射规则如:语法结构与汇编代码的映射规则提供框架代提供框架代码张昱张昱 陈意云陈意云 中国科学技术大学中国科学技术大学编译原理课程实践改革探索编译原理课程实践改革探索19/35课程设计软件包的特点课程设计软件包的特点(2)v整体性整体性每个每个课程程设计的的实验内容着眼于内容着眼于局部点局部点,但是但是课程程设计的运行完成一个相的运行完成一个相对完整的功能完整的功能,例如,例如一个一个编译器、一个分析器的生成器,等等。器、一个分析器的生成器,等等。v灵活性灵活性对课程程设计的的选择,可根据,可根据实际情况灵活确定情况灵活确定-与课堂教学同步进行:选择各个独立的课程设计与课堂

20、教学同步进行:选择各个独立的课程设计-综合性课程实验:前端综合性课程实验:前端/后端后端对编译、调试、运行方法的灵活、运行方法的灵活选择-Eclipse工程、命令控制台脚本、实验平台脚本工程、命令控制台脚本、实验平台脚本组件件实现方法的灵活方法的灵活选择编译器器实现方法的灵活方法的灵活选择张昱张昱 陈意云陈意云 中国科学技术大学中国科学技术大学编译原理课程实践改革探索编译原理课程实践改革探索20/35提纲提纲v引言引言v课程程实践方案践方案规划与划与历程程课程程实验的的组成要素成要素实验平台与相关工具平台与相关工具课程程设计软件包的特点件包的特点v实验改革改革实践与践与经验教教训v课堂教学中与

21、堂教学中与实际的的联系系20张昱张昱 陈意云陈意云 中国科学技术大学中国科学技术大学编译原理课程实践改革探索编译原理课程实践改革探索21/35实验改革实践实验改革实践(1)v课程程实践及其任践及其任务去年春季,在去年春季,在04级编译原理教学中原理教学中实施。施。每个学生独立完成每个学生独立完成SkipOOMiniJOOL语言言编译器的前器的前端或后端端或后端,并自行并自行选择完成后端或前端的合作伙伴。完成后端或前端的合作伙伴。v时间节点点3月底印月底印发编译原理原理实验教程教程安排两次安排两次课堂堂辅导:4月下旬和月下旬和5月月10日左右日左右5月份开始上机月份开始上机6月下旬通月下旬通过网

22、网络提交提交课程程设计-源代码、类库文件、测试程序、设计文档等源代码、类库文件、测试程序、设计文档等6月下旬考月下旬考评张昱张昱 陈意云陈意云 中国科学技术大学中国科学技术大学编译原理课程实践改革探索编译原理课程实践改革探索22/35实验改革实践实验改革实践(2)v考考评方法方法学生分成若干学生分成若干组,每,每组约10人人各各组用一个上午、下午或晚上的用一个上午、下午或晚上的时间进行行现场测试、答答辩和公开和公开评分分评委:教委:教师、研究生助教、同、研究生助教、同组的所有同学的所有同学教教师主主导测试过程,学生自己程,学生自己动手按老手按老师要求操作,要求操作,并用投影机当众并用投影机当众

23、显示示测试过程程老老师和同学均可以提和同学均可以提问,学生需当众回答,学生需当众回答所提所提问题主要主要围绕完成的完成的设计和和编程,以及程,以及测试中暴中暴露出的露出的设计或或编程程错误等展开等展开张昱张昱 陈意云陈意云 中国科学技术大学中国科学技术大学编译原理课程实践改革探索编译原理课程实践改革探索23/35实验改革实践实验改革实践(3)v评分依据分依据工程的工程的规范性范性编译器的正确性器的正确性 错误定位与恢复能力定位与恢复能力 所生成的目所生成的目标代代码质量量回答回答问题时所表所表现出的出的对本本课程程设计所涉及知所涉及知识的掌的掌握程度握程度 对自己自己设计和和编码的前端(后端)

24、的熟悉程度的前端(后端)的熟悉程度 操作的熟操作的熟练程度程度提交物的完整性、条理性及其中反映的分析和提交物的完整性、条理性及其中反映的分析和设计的的思想思想 张昱张昱 陈意云陈意云 中国科学技术大学中国科学技术大学编译原理课程实践改革探索编译原理课程实践改革探索24/35实验改革实践实验改革实践(4)v评分方法分方法每个每个评委当委当场给该组的全部同学排名次的全部同学排名次由助教根据所有有效排名表,由助教根据所有有效排名表,给出最出最终的排名的排名由老由老师根据本根据本组的情况确定本的情况确定本组的最高分和最低分,的最高分和最低分,并依据排名,主要按等并依据排名,主要按等间隔确定每个同学的分

25、数隔确定每个同学的分数张昱张昱 陈意云陈意云 中国科学技术大学中国科学技术大学编译原理课程实践改革探索编译原理课程实践改革探索25/35实验改革实践实验改革实践(5)v其他其他评分分细则如被老如被老师、助教和、助教和过半数同学半数同学认为所提交的不是自己所提交的不是自己的的课程程设计成果成果时,为0分;分;未按未按时提交也是提交也是0分;分;独自完成整个独自完成整个编译器,分器,分组评定成定成绩后降后降10分;分;当前后端人数比例当前后端人数比例严重失重失调,则抬高少数人一端分数抬高少数人一端分数若所开若所开发的前端(或后端)被多个同学(开的前端(或后端)被多个同学(开发的合作的合作伙伴除外)

26、采用,伙伴除外)采用,则在分在分组评分的基分的基础上加分,加分上加分,加分原原则是:是:-每增加两个采用者加每增加两个采用者加1分分-课程设计和平时作业合计不超过课程设计和平时作业合计不超过50分分张昱张昱 陈意云陈意云 中国科学技术大学中国科学技术大学编译原理课程实践改革探索编译原理课程实践改革探索26/35实践效果实践效果v反响反响BBS CompilerTech版版: 07.5.10(978) 07.6(+300)学生学生1(张昊中)昊中)收益收益-加深了对加深了对LALR分析的理解;分析的理解;-大概了解了一个编译器(特别是前端)的结构和工作流程大概了解了一个编译器(特别是前端)的结构

27、和工作流程-积累了一些做工程的经验。积累了一些做工程的经验。存在问题存在问题-对实验中要处理的语言的定义不清晰;对实验中要处理的语言的定义不清晰;-实验指导不足。实验指导不足。张昱张昱 陈意云陈意云 中国科学技术大学中国科学技术大学编译原理课程实践改革探索编译原理课程实践改革探索27/35实践效果实践效果学生学生2(李(李勋浩)浩)收益收益-了解了编译器的基本运行方式,以及经典程序语言运行的基本方式了解了编译器的基本运行方式,以及经典程序语言运行的基本方式-一些一直以来未能理解的概念和疑问,在自己的摸索中明朗了一些一直以来未能理解的概念和疑问,在自己的摸索中明朗了-在这样相对较为开放的实验环境

28、中,一定程度上激发了我创造的热情。在这样相对较为开放的实验环境中,一定程度上激发了我创造的热情。实现中我会不断假想,假如用另一种方法去实现,会怎么样?假如增实现中我会不断假想,假如用另一种方法去实现,会怎么样?假如增加某种功能,是否容易?如果不容易,需要加入什么样的内容?加某种功能,是否容易?如果不容易,需要加入什么样的内容?不足之处不足之处-大三下课程较紧,实验周期不长,学生不易在已完成结果上扩展大三下课程较紧,实验周期不长,学生不易在已完成结果上扩展-实验中能够找到的非常相关的阅读材料不足,能找到的也大多是英文实验中能够找到的非常相关的阅读材料不足,能找到的也大多是英文的,这对大多数学生来

29、说是个障碍的,这对大多数学生来说是个障碍; ;-抄袭现象较严重,这也是跟本次实验相对其它课程实验来说更难入门抄袭现象较严重,这也是跟本次实验相对其它课程实验来说更难入门有关。有关。张昱张昱 陈意云陈意云 中国科学技术大学中国科学技术大学编译原理课程实践改革探索编译原理课程实践改革探索28/35经验教训经验教训v经验提供程序框架和文档提供程序框架和文档说明:既有挑明:既有挑战性又有好的效果性又有好的效果以中以中间表示作表示作为编译器器组件件间信息信息传递的接口:既控的接口:既控制了学生开制了学生开发的的规模又允模又允许有自行有自行设计的空的空间提供提供AST图形形显示并要求生成示并要求生成汇编码

30、,便于,便于测试和考和考评合作开合作开发、自主推、自主推销和和选择、整体、整体评测,既培养了,既培养了团队精神,又增精神,又增强了了质量意量意识规定了定了统一的版本提交截止一的版本提交截止时间,既有公平性和工程,既有公平性和工程性,又易于性,又易于评测教教师主主导的集体公开的集体公开评分方式,既有公平性又易分方式,既有公平性又易评测由学生参与由学生参与评分,既能弥分,既能弥补教教师对学生学生实际情况了解情况了解的局限性,又能的局限性,又能调动学生的参与学生的参与热情情 张昱张昱 陈意云陈意云 中国科学技术大学中国科学技术大学编译原理课程实践改革探索编译原理课程实践改革探索29/35经验教训经验

31、教训v教教训及改及改进之之处多种开多种开发工具和工具和环境加境加宽了学生的技了学生的技术层面,但面,但导致致学生不能集中精力到和学生不能集中精力到和编译有关的技有关的技术上来。上来。前前导软件件课程程实践中逐步熟悉掌握其中的部分工具,践中逐步熟悉掌握其中的部分工具,提供提供对这些工具的文档些工具的文档说明和明和样例。例。对要要实现的的语言描述不言描述不够=形式化形式化语言言规范范对提交提交环境目境目录和和编写能写能编译运行运行编译器的批器的批处理文理文件等要求件等要求发布太布太迟。增加相关的要求与指南,平增加相关的要求与指南,平时注意注意对学生学生强调它它们。只有提交截止只有提交截止时间=多多

32、时间节点和多次提交的点和多次提交的过程管程管理与控制理与控制需要配需要配备技技术水平高的水平高的软件件实验师,研究生助教承担,研究生助教承担不好不好这样的的实验指指导 张昱张昱 陈意云陈意云 中国科学技术大学中国科学技术大学编译原理课程实践改革探索编译原理课程实践改革探索30/35提纲提纲v引言引言v课程程实践方案践方案规划与划与历程程课程程实验的的组成要素成要素实验平台与相关工具平台与相关工具课程程设计软件包的特点件包的特点v实验改革改革实践与践与经验教教训v课堂教学中与堂教学中与实际的的联系系30张昱张昱 陈意云陈意云 中国科学技术大学中国科学技术大学编译原理课程实践改革探索编译原理课程实

33、践改革探索31/35课堂教学策略课堂教学策略v总体策略体策略涉及的基本理涉及的基本理论必必须了解了解对编译原理和技原理和技术的宏的宏观理解及全局把握比了解一些理解及全局把握比了解一些局部的算法重要得多局部的算法重要得多准准备了很多从了很多从实际程序程序编译和运行和运行时碰到的碰到的问题中抽中抽象出来例子象出来例子-选择选择 C C 语言作为实例语言语言作为实例语言-引导用所学知识去分析、解决、理解实际编程中遇到的问题引导用所学知识去分析、解决、理解实际编程中遇到的问题规模模较大的大的课程程设计:两个合作完成一个:两个合作完成一个Java小子小子集的集的编译器器张昱张昱 陈意云陈意云 中国科学技

34、术大学中国科学技术大学编译原理课程实践改革探索编译原理课程实践改革探索32/35例题例题1:类型系统:类型系统在在X86/Linux机器上,机器上,编译器器报告最后一行有告最后一行有错误:incompatible types in returntypedef int A110;| A2 *fun1( ) typedef int A210;| return(&a); A1 a;| typedef struct int i;S1;| S2 fun2( ) typedef struct int i;S2;| return(s); S1 s;C语言言对除除结构构类型型以以外外的的所所有有类型型都都使使

35、用用结构构等等价价,而而对结构构类型使用名字等价。型使用名字等价。张昱张昱 陈意云陈意云 中国科学技术大学中国科学技术大学编译原理课程实践改革探索编译原理课程实践改革探索33/35例题例题2:局部存储分配:局部存储分配在在SPARC/Solaris工作站上,下面两个工作站上,下面两个结构构的的size分分别是是24和和16,为什么不一什么不一样?typedef struct _a typedef struct _b char c1; char c1;long i; char c2;charc2; long i;double f; double f; a; b;张昱张昱 陈意云陈意云 中国科学技

36、术大学中国科学技术大学编译原理课程实践改革探索编译原理课程实践改革探索34/35例题例题2:局部存储分配:局部存储分配在在SPARC/Solaris工作站上,下面两个工作站上,下面两个结构构的的size分分别是是24和和16,为什么不一什么不一样?typedef struct _a typedef struct _b char c1;0 char c1;0long i;4 char c2; 1charc2;8 long i; 4double f;16 double f; 8 a; b;数据在存数据在存储分配分配时有有对齐问题张昱张昱 陈意云陈意云 中国科学技术大学中国科学技术大学编译原理课程实践改革探索编译原理课程实践改革探索35/3535谢谢 谢谢 !

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

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