编译原理与技术.ppt

上传人:ga****84 文档编号:492186 上传时间:2018-10-14 格式:PPT 页数:35 大小:322KB
下载 相关 举报
编译原理与技术.ppt_第1页
第1页 / 共35页
编译原理与技术.ppt_第2页
第2页 / 共35页
编译原理与技术.ppt_第3页
第3页 / 共35页
编译原理与技术.ppt_第4页
第4页 / 共35页
编译原理与技术.ppt_第5页
第5页 / 共35页
点击查看更多>>
资源描述

1、2018/10/14,编译原理与技术讲义,1,编译原理与技术,2018/10/14,编译原理与技术讲义,2,第一章 引论,什么是编译程序?翻译程序、解释程序和汇编程序编译程序的组成结构编译程序的生成相关话题,2018/10/14,编译原理与技术讲义,3,语言翻译过程,算法描述,求某整数n的阶乘fact(n), n0 1 / n = 0 fact(n) = n * fact( n-1 ) / n! = n * (n-1)!伪语言描述fact(n) = if n 0 then 1 else n*fact(n-1),2018/10/14,编译原理与技术讲义,4,语言翻译过程,高级程序设计语言描述,(

2、如C语言)int fact( int n )if (n 记号流,position = initial + rate * 60 字符流,scanner,id1 = id2 + id3 * 60 记号流,标识符 赋值运算符 标识符 加运算符 标识符 乘运算符 整型常量,2018/10/14,编译原理与技术讲义,16,编译程序的组成结构,语法分析阶段parser记号流 分析树(语法树),id1 = id2 + id3 * 60 记号流,parser,=,id1,id2,+,*,id3,60,语法树,2018/10/14,编译原理与技术讲义,17,编译程序的组成结构,语义分析语义树带有语义信息的分析树

3、(语法树),id1,id2,+,*,id3,60,=,int float,进行类型转换,2018/10/14,编译原理与技术讲义,18,编译程序的组成结构,中间代码生成形式多样 三地址码,p-code等t1 := int_to_float( 60 )t2 := id3 * t1t3 := id2 + t2id1 := t3,2018/10/14,编译原理与技术讲义,19,编译程序的组成结构,代码优化得到“优化”后的中间代码;也可以在最后的代码生成阶段实施“优化”t1 := rate * 60.0 / 直接用浮点数60.0position := initial + t1 / 去除多余的/ 临时变

4、量较优化前,减少2条中间代码,2018/10/14,编译原理与技术讲义,20,编译程序的组成结构,代码生成与目标机器有密切联系,如指令选择,寄存器的使用等。movf rate, R1mulf #60.0, R1movf initial, R2addf R2, R1movf R1, position,2018/10/14,编译原理与技术讲义,21,编译程序的组成结构,符号表管理,编译程序中使用的符号表,2018/10/14,编译原理与技术讲义,22,编译程序的组成结构,出错处理程序错误分类出错处理的目标与方法1) if ( n = 0 return 1; / missing “)”2) if (

5、 n = 0 ) return 1 / missing “;” else return ( n * fact(n-1) );,2018/10/14,编译原理与技术讲义,23,编译程序的组成结构,semantics,parser,scanner,optimizer,code generator,符号表管理,出错处理,2018/10/14,编译原理与技术讲义,24,编译程序生成,手工编写耗时,“效率”问题。自动生成 各个阶段基本上有相应的自动生成工具,如 lex、yacc。自展(bootstrapping),2018/10/14,编译原理与技术讲义,25,编译程序生成,编译程序的自展/自编译T型图

6、,源语言S,目标语言T,编译程序的实现语言I,2018/10/14,编译原理与技术讲义,26,编译程序生成,编译程序的自展/自编译 我们的目标是在机器A(目标语言)上,用语言A(实现语言)构造高级语言L(源语言)的编译程序。,2018/10/14,编译原理与技术讲义,27,编译程序生成,编译程序的自展/自编译 Step1: 我们可以考虑源语言L的子集语言S, S L。在机器A(目标语言)上,用语言A(实现语言)构造语言S的编译程序。,2018/10/14,编译原理与技术讲义,28,编译程序生成,编译程序的自展/自编译 Step2: 在机器A(目标语言)上,用语言S(实现语言)构造语言L的编译程

7、序。,2018/10/14,编译原理与技术讲义,29,编译程序生成,编译程序的自展/自编译 Step3:,2018/10/14,编译原理与技术讲义,30,编译程序生成,编译程序的移植/交叉编译考虑将A机器上语言L的编译实现移植到机器B上,即我们的目标是:,2018/10/14,编译原理与技术讲义,31,编译程序生成,编译程序的移植/交叉编译我们已有的编译程序是:,2018/10/14,编译原理与技术讲义,32,编译程序生成,编译程序的移植/交叉编译Step1:,用语言L编写的语言L到语言B的编译程序,借助已有的A机器上语言L的编译程序,得到机器A上(实现语言)语言L到语言B的编译程序,2018

8、/10/14,编译原理与技术讲义,33,编译程序生成,编译程序的移植/交叉编译Step2:,用语言L编写的语言L到语言B的编译程序,新的A机器上语言L到语言B的编译程序,得到机器B上(实现语言)语言L到语言B的编译程序,2018/10/14,编译原理与技术讲义,34,编译程序相关的软件,预处理程序preprocessor宏替换macro包含文件展开include files汇编程序assembler两趟扫描解释程序interpreter连接程序linker装入程序loader重定位,2018/10/14,编译原理与技术讲义,35,编译程序相关的软件,调试程序debuggercc 编译器中 g 选项;与-O的关系描述程序profiler性能分析,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文资料库 > 毕业论文

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。