如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
编译技术课程简介程序如何被翻译为机器指令1.变量的本质是什么?2.顺序、选择、循环语句对应哪些中间或目标代码?3.函数调用时局部变量在内存中如何分配?4.如何深入理解对象与变量的区别?5.对象如何存放?程序中同一类对象如何存放?看不见的this指针到底有什么用?6.函数重载编译器都做了什么?7.什么是多态?编译器做了哪些工作来支持虚函数?虚函数运行时是什么情况?8.任意给出一个面向过程或面向对象的程序,我如何深入分析执行过程?为什么要学习编译原理(1)《编译原理及实践》机械工业出版社,KennethC.Louden冯博琴等翻译,英文原版《ComplierConstructionPrinciplesandPractice》。(2)《程序设计语言编译原理》,国防工业出版社,陈火旺等编著。(3)《编译原理》清华大学出版社,吕映芝等编著,1998。(4)《编译原理和技术》中国科技大学出版社,陈意云编著,1997。国外参考书(编译圣经)ModernCompilerImplementationinJava,C,ML(Tigerbook)国外参考书(编译圣经)第一章编译概述过程式语言Fortran,Pascal,C函数式语言Lisp逻辑式语言Prolog对象式语言C++汇编语言机器语言程序设计语言程序设计语言程序设计语言比较编译程序是翻译程序的一种,它将一个用面向人的源语言书写的程序(高级语言程序)翻译成一个等价的面向硬件的目标程序(低级语言程序)解释程序对源程序进行解释执行的程序以源程序作为输入,但不产生目标程序,对源程序边解释边执行编译和解释程序:1.2编译程序的逻辑结构对于如下的字符串,词法分析程序将分析和识别出9个单词:X1=(2.0+0.8)*C1123456789词法分析(自动分词+词性标注)词法分析(自动分词+词性标注)position:=initial+rate*60;有关术语例如,对于前面提到的例子X1=(2.0+0.8)*C1语法分析将<变量>、<赋值操作符>、<表达式>识别出来,进而将<赋值语句>识别出来,在识别过程中进行语法检查,若有错误,则应输出出错信息。语法分析(自动句法分析)语法分析(自动句法分析)id1:=id2+id3*N术语3语义分析和中间代码生成四元式(三地址指令)优化:上面的四元式中第一个四元式是计算常量表达式值,该值在编译时就可以算出并存放在临时变量中,不必生成目标指令来计算,这样四元式可优化为:编译时:2.0+0.8→T15目标代码生成在上列五个阶段中都要做两件事:(1)建表和查表;(2)出错处理;所以编译程序中都要包括表格管理和出错处理两部分源程序示例经词法分析源程序被加工成单词流赋值语句:=生成中间代码优化符号表1.3编译阶段的组合这一结构对于编译器的可移植性十分重要。某一编译程序的前端加上相应不同的后端则可以为不同的机器构成同一个源语言的编译程序。如果不同编译程序的前端生成同一种中间代码,再使用一个共同的后端,则可为同一机器生成几个语言的编译程序。遍(PASS)遍:对源程序(或者源程序中间形式)从头到尾扫描一次,进行相应的加工处理,生成新的源程序中间形式或目标程序,通常称之为一遍。JAVA源程序1.4编译程序实现的途径编译程序的自动化技术词法分析器的自动生成程序语法分析器的自动生成程序自展技术编译程序的移植技术编译程序生成编译程序生成编译程序生成编译程序生成编译程序生成编译程序生成编译程序生成编译程序生成编译程序生成编译程序相关的软件1.6.2编译程序的移植技术编译程序相关的软件1.5、语言开发环境中的伙伴程序1.6编译程序的构造工具编译原理的最新发展什么是编译程序,同解释程序的区别编译程序的逻辑结构,分为那几个阶段编译阶段的组合,怎么组合?组合的依据编译程序实现的途径,如何实现,如何移植