好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

第一章 编译概述(中国矿业大学).ppt

72页
  • 卖家[上传人]:豆浆
  • 文档编号:6306594
  • 上传时间:2017-08-08
  • 文档格式:PPT
  • 文档大小:1.03MB
  • / 72 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 编译技术,E-mail:zc@,计算机学院计算机系 张辰,课程简介,学时:56学时 分为两部分:理论基础:70%,课堂教学实践部分:30%,实验(16学时) 课程要求: 掌握编译技术的基本理论、编译系统的构造(结构和机理)并进行编译程序相关部分的设计,加深对计算机高级语言的理解,在此基础上能够灵活运用所学技术解决实际问题程序如何被翻译为机器指令 1.变量的本质是什么? 2.顺序、选择、循环语句对应哪些中间或目标代码? 3.函数调用时局部变量在内存中如何分配? 4.如何深入理解对象与变量的区别? 5.对象如何存放?程序中同一类对象如何存放?看不见的this指针到底有什么用? 6.函数重载编译器都做了什么? 7.什么是多态?编译器做了哪些工作来支持虚函数?虚函数运行时是什么情况? 8.任意给出一个面向过程或面向对象的程序,我如何深入分析执行过程?,为什么要学习编译原理,学习这门课程有利于加深对程序设计语言的理解,可以比较迅速掌握新的语言工具,也是读懂相关计算机著作的基础编译程序是计算机系统中的系统软件,包含许多软件技术,对于进行软件设计很有价值编译课程蕴含着计算机学科中解决问题的思路、抽象问题和解决问题的方法,(1)《编译原理及实践》 机械工业出版社, Kenneth C.Louden 冯博琴等翻译,英文 原版《Complier Construction Principles and Practice》 。

      2)《程序设计语言编译原理》,国防工业出版社,陈火旺等编著3)《编译原理》清华大学出版社,吕映芝等编著,19984)《编译原理和技术》中国科技大学出版社,陈意云编著,1997参考书,国外参考书(编译圣经),Compilers: Principles, Techniques and Tools (Dragon book),Modern Compiler Implementation in Java,C,ML (Tiger book),国外参考书(编译圣经),国外参考书(编译圣经),Advanced Compiler Design and Implementation (Whale book,鲸书),第一章 编译概述,1.1 什么是编译程序1.2 编译程序的逻辑结构1.3 编译阶段的组合1.4 编译程序实现的途径1.5 语言开发环境中的伙伴程序1.6 编译程序的构造工具,过程式语言 Fortran,Pascal,C函数式语言 Lisp逻辑式语言 Prolog对象式语言 C++        汇编语言        机器语言,程序设计语言:用来编写计算机程序的语言程序设计语言,,,,高级语言低级语言:面向机器的语言,,1.1 什么是编译程序,程序设计语言,机器语言:直接用计算机能够识别的二进制代码指令来编写程序的语言。

      由二进制的指令代码组成1 + 3 表示为 10000001 00000001 00000011是最底层的计算机语言,不需要翻译就可以直接被计算机硬件识别对应不同的计算机硬件有不同的机器语言 特点:执行速度快,但编写程序的难度大,修改、调试不方便,直观性差,不易移植程序设计语言,汇编语言:又称为符号语言与机器语言一一对应,采用能帮助记忆的英文缩写符号(指令助记符)来代替机器语言指令中的操作码,用地址符号来代替地址码用指令助记符及地址符号书写的指令称为汇编指令,用汇编指令编写的程序称为汇编语言源程序将X、Y中的内容相加 表示为 ADD X Y机器不能直接识别汇编语言程序,必须把它翻译为机器语言程序才能执行 特点:比机器语言直观,容易理解和记忆,比高级语言的执行效率高,但通用性和移植性较差程序设计语言,高级语言:与具体的计算机硬件无关,是面向问题的程序设计语言,其表达方式接近于自然语言和数学语言,易于人们接受和掌握 采用类似于数学公式的书写方式:x = 1 + 3特点:独立于具体的计算机硬件,程序的编制和调试方便,通用性和可移植性好在计算机执行之前,需要通过编译程序翻译成目标语言程序,或需要通过解释程序边解释,边执行。

      时间与空间效率比较低 目前比较流行的高级语言有:Visual C, Visual Basic, Java,FoxPro,Pascal,Lisp, Cobol等翻译程序 把一种语言书写的程序(源程序)翻译成另一种语言的等价的程序(目标程序)是汇编程序、编译程序以及各种变换程序的总称源程序、翻译程序、目标程序 三者关系:,,,源程序,翻译程序,目标程序,即源程序是翻译程序的输入,目标程序是翻译程序的输出,,,,,汇编程序 把汇编语言程序翻译成机器语言程序,这时的翻译程序称之为汇编程序,这种翻译过程称为“汇编”(Assemble)编译程序 把高级语言程序翻译成低级语言程序,这时的翻译程序称之为编译程序,这种翻译过程称“编译”(Compile),汇编程序与编译程序都是翻译程序,主要区别是加工对象的不同由于汇编语言格式简单,常与机器语言之间有一一对应的关系汇编程序所要做的翻译工作比编译程序简单的多编译程序是翻译程序的一种,它将一个用面向 人的源语言书写的程序(高级语言程序)翻译成 一个等价的面向硬件的目标程序(低级语言程序),源程序,目标程序,编译程序,,,,,人可以理解的高级语言,机器可以“理解”的低级语言,解释程序 对源程序进行解释执行的程序 以源程序作为输入,但不产生目标程序,对源程序边解释边执行,比较编译程序与解释程序的区别编译程序:生成一个与源程序等价的目标程序,它可以完全取代源程序,目标程序可运行任意多次,不必依赖编译程序。

      解释程序: 对源程序的每次执行都伴随着重新翻译的工作,而是不能摆脱翻译程序有些编译程序既支持解释执行又支持编译执行,在程序的开发和调试阶段用解释执行,一旦程序调试完毕,便采用编译执行编译和解释程序:,解释程序和编译程序的区别,解释程序和编译程序的根本区别:是否生成目标代码,1.2 编译程序的逻辑结构,典型的编译过程具有5个基本阶段,,源程序看作什么形式便于进行处理?,对于如下的字符串,词法分析程序将分析和识别出9个单词: X1 = ( 2.0 + 0.8 ) * C1 1 2 3 4 5 6 7 8 9,源程序是由字符序列构成的,词法分析扫描源程序,根据语言的词法规则识别出一个个单词符号(语义上关联的符号串),并以某种编码形式输出任务:分析和识别单词1 词法分析,词法分析(自动分词+词性标注),像翻译英文句子一样,先要分析单词,弄清各单词的意义和句中的作用,才能对句子进行翻译主要任务:从左到右一个字符一个字符地读入源程序,对构成源程序的字符流进行扫描和分解,从而识别出一个个单词。

      单词包括:保留字、标识符、运算符、分界符等例: position := initial + rate * 60;,词法分析(自动分词+词性标注) position := initial + rate * 60;,单词类型 单词值 标识符1(id1) position 算符(赋值) := 标识符2(id2) initial 算符(加) + 标识符3(id3) rate 算符(乘) * 整数 60 界符 ;,,又如一个C源程序片断: int a; a = a + 2;词法分析后可能返回:单词类型 单词值 保留字 int标识符(变量名) a界符 ;标识符(变量名) a算符(赋值) =标识符(变量名) a 算符(加) +整数 2界符 ;,有关术语,词法分析(lexical analysis or scanning) --The stream of characters making up a source program is read from left to right and grouped into tokens,which are sequences of characters that have a collective meaning.单词---token保留字---reserved word标识符 ---identifier(user-defined name),例如,对于前面提到的例子X1 = (2.0+ 0.8 ) * C1 语法分析将<变量>、<赋值操作符>、<表达式>识别出来,进而将<赋值语句>识别出来,在识别过程中进行语法检查,若有错误,则应输出出错信息。

      任务:在词法分析的基础上,根据语法规则分析单词序列对应的语法成分,如表达式、各种说明、各种语句、函数等,并进行语法正确性检查2 语法分析,语法分析(自动句法分析),语法分析程序与自然语言中句子的语法分析类似语法分析定义了程序的结构元素及其关系通常将语法分析的结果表示为分析树或语法树主要任务:在词法分析的基础上,将单词分解成各类语法短语 一般语法短语可表示成语法树功能:层次分析.依据源程序的语法规则把源程序的单词序列组成语法短语(表示成语法树).position := initial + rate * 60 ;,语法分析(自动句法分析),规则 <赋值语句>::=<标识符>“:=”<表达式> <表达式>::=<表达式>“+”<表达式> <表达式>::=<表达式>“*”<表达式> <表达式>::=“(”<表达式>“)” <表达式>::=<标识符> <表达式>::=<整数> <表达式>::=<实数>,,,赋值语句,标识符,表达式,表达式,+,表达式,表达式,标识符,整数,标识符,:=,表达式,*,,,,,,,,,,,,,,id1:=id2+id3*N,术语,语法分析(syntax analysis or parsing)The purpose of syntax analysis is to determine the source program’s phrase structure.This process is also called parsing.The source program is parsed to check whether it conforms to the source language’s syntax,and to construct a suitable representation of its phrase structure.语法树(推导树)(parse tree or derivation tree),3 语义分析和中间代码生成,语义分析:静态语义处理 审查源程序有无语义错误,为代码生成阶段收集类型信息。

      中间代码生成:动态语义处理,。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.