编译原理第1章剖析.ppt

  1. 1、本文档共28页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
§1.1 什么是编译程序 第一章 引论 课程简介、编译程序的基本概念、典型的编译过程 §1.0 课程简介 课程基本信息 课程中文名称:编译原理 课程英文名称:Compile Principle 课程主要内容:编译程序的工作原理与开发设计方法 课程类别:必修 适用专业:信息工程学院计算机科学与技术专业 总学时:48学时(其中理论40学时,上机8学时) 总学分:3 本课程在教学计划中的地位、作用和任务 计算机科学与技术专业高年级学生的专业必修课。 先修课程:程序设计方法、高级程序设计语言(PASCAL、C、…)、数据结构、离散数学等。 作用和任务 专业素质与能力的训练与培养; 从事与编译系统相关的工作; 提高软件开发的能力; 一个难度很大的系统软件的实例; 大量实用的工具和方法; 考研需要。 三、参考书: 1.《编译原理》(原版名:Compiler Principles, Techniques, and Tools) 阿霍(Aho, A. V.)等著,李建中等译 机械工业出版社 (龙书) 2. 《现代编译原理-C语言描述》 (原版名:Modern Compiler Implementation in C )Andrew W. Appel等著,陈明译 电子工业出版社(虎书) 3. 《高级编译器设计与实现》 (原版名: Advanced Compiler Design and Implementation )Steven S. Muchnick等著 机械工业出版社 (鲸书) §1.1 什么是编译程序 翻译程序:把源语言程序逻辑等价的转换成目标语言程序的程序; 编译程序:源语言是高级语言,目标程序是低级语言的翻译程序; 编译程序的分类 诊断编译程序:用于帮助程序开发和调试; 优化编译程序:着重于提高目标代码的效率; 交叉编译程序:运行编译程序的计算机为宿主机,运行编译程序所产生的目标代码的计算机为目标机,如果编译程序产生不同于其宿主机的机器代码,称为交叉编译程序; 可变目标编译程序:若不需重写编译程序中与机器无关部分就能改变目标机,则该编译程序为可变目标编译程序; §1.2 编译程序工作过程 自然语言的翻译过程: 编译程序的工作过程: 词法分析(扫描程序) 任务:输入源程序,对构成源程序的字符串扫描和分解,识别出其中的单词 (如标识符、常数、算符、界限符等); 输入:源程序字符串; 输出:单词串,也就是等长的内部形式(即属性字); 依据:词法规则; 词法规则的研究和描述工具:正规式、自动机; 语法分析(识别程序) 任务:在词法分析的基础上,把单词符号串分解成各类语法单位(语法范畴),并确定整个输入串是否构成语法上正确的程序 ; 输入:单词符号串; 输出:语法单位(语法树); 依据:语法规则; 语法规则的描述:上下文无关文法,下推自动机; 例:id1=id2+id3*10的语法树 语义分析与中间代码生成 任务:分析各类语法范畴的含义,进行静态语义检查(类型检查、控制流检查、一致性检查和相关名字检查)并进行初步翻译; 输入:语法树或中间表示 输出:中间代码 (四元式); 依据:语义规则; 语义规则的描述:属性文法。 例:语义分析类型检查,有错误吗? int a, *p; a=10; p=a; 中间代码 中间代码是一种独立于具体硬件的记号系统,或者与现代计算机的指令形式有某种程度的接近,或者能比较容易地变换成机器指令。 中间代码主要有三元式、间接三元式、逆波兰记号、树形表示,常用的中间代码是四元式。 例1:id1=id2+id3*50的四元式 (1) (inttoreal 50 - t1) (2) (* id3 t1 t2) (3) (+ id2 t2 t3) (4) (= t3 - id1) 优化 对中间代码进行加工变换,以期在最后阶段产生更高效的目标代码; 输入:优化前的中间代码; 输出:优化后的中间代码; 依据:程序的等价变换规则; 常用技术:基本块优化、循环优化等。 例:id1=id2+id3*50的四元式优化处理 (1) (inttoreal 50 - t1) (2) (* id3 t1 t2) (3) (+ id2 t2 t3) (4) (= t3 - id1) 优化结果: (1) (* id3 60.0 t1) (2) (+ id2 t1 id1) 目标代码生成 任务:把优化后的中间代码变换成特定机器上的低级语言代码 (目标代码); 输入:中间代码; 输出:目标代码; 依据:硬件系统的结构和机器指令的含义; 目标代码种类: 绝对指令代码:目标代码可立即执行; 汇编指令代码:需汇编器汇编之后才能运行; 可重定位的指令代码:必须借

文档评论(0)

558411 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档