您好,欢迎光临本网站![请登录][注册会员]  
文件名称: 医院病房病情监控系统设计
  所属分类: Java
  开发工具:
  文件大小: 504kb
  下载次数: 0
  上传时间: 2019-03-02
  提 供 者: weixin_********
 详细说明:完整的规划设计、和系统分析、深入分析开发需求,设计模块、类等。联入式系统及应用课后作业 第一章:引言及编译器工作原理简介 1.1编译器简介 人类相互之间通过语言进行交流,人与计算机之间也通过语言进 行交流。编译原理所讨论的问题,就是如何把符合人类思维方式的 用文字描述的意凨(源程序)翻译成计算机能够理解和执行的形式(目 标程序)具体实现从源程序到目标程序转换的程序被称为编译程序或 编译器。 由丁应用的不同,有着各种各样面向人类的高级语言。 1.2编译器和解释器工作方式对比 编译器是一个罴盒子,源程序的翻译和翻译后程序的运行是两个 独立的不同阶段。而解释器采用另一种方式翻译源程序,它不像编译 器那样,把源程序的翻译和目标程序的运行分割丌来,而是把翻译和 运行结合在一起,翻译一段源程序紧接着就执行它,称之为解释。其 工作方式如图所示: 源程序 编译器 目标程序源程序 解释器 输出 输入数据→目标程序 输出输入数据一 a編译器的工作方式 (b)解释器的工作方式 联入式系统及应用课后作业 1.3对编译器各个阶段的划分 编译器工作阶段入下图所示 源程序 词法分析器 匿法分析器 语义分 表 中间代码生成器 代码优化器 目标代码生成器 目标代码 各个阶段具体工作通过下面例子进行讲解 现以仅包含一条声明语句和一条可执行语句的源程序为例,如下所示: var x, y, Z: real; X:=y+z*60; 首先进行此法分杆 var x, y, Z: real; 词法分析 var id1,id2, id3 real: id1: =id2+id3*60: 联入式系统及应用课后作业 1)词法分析是编译过程的基础,任务是扫描澒程序,根据语言的词法 规则分解和识别出每个单词,其输出是识别的记号流。 具体任务有以下五点: (1)组织源程序的输入 (2)拼出单词并查找其类别编号,形成二元式输出,得到单词流文 件 (3)删除注释、空格和无用符号 (4)发现并定位词法错误,需要输出错误的位置在源程序中的第几 行。将错误信息输出到屏幕上。 5)对亍普通的标识符和常量,分别建立标识符表和常量表(使用 线性表存储),当遇到一个标识符和常量时,杳找标识符表和常量表。 若存在,则返回位置,否则,返回0.并填写常量表和符号表。 )语法分析器以词法分析器返回的记号流为输入构造句子的结构,并 以树的形式表示出来,称之为语法树,如下图1.5所示: 联入式系统及应用课后作业 语法分析 id2 idI id2 图1.5语法树 语义分析 符号表 1 x real rea 3z real 8 图1.6语义分析 3)语义分析器根据语法分析器构造的语法树,进行适当的语义处理。 对声明语句,进行符号表的查填,符号表中,每一行存放一个符号的 信息。第一行存放标识符ⅹ的信息,它的类型是real,为它分配的 地址是0.第二行存放y的信息,它的类型是rea1,为它分配的地址 是4.由此可知其为每个实型数分配一个大小为四个单元的存储空间。 对于可执行的语句,检查结构合理的表达式运算是否有意义。由于变 量x,y,z均是real类型而60被认为是 integer类型,故而,在语义 5 联入式系统及应用课后作业 检查时将60转化为60.0处理,反映在语法树上,就是增加·个新的 节点itr(将整型数转化为实型数),如上图1.6所示 4)中间代码生成器对语法树进行遍历,并生成可以执行的中间代码序 列,最常用的中间代码形式是四元式,其形式如下所示 (序号)(op,arg1, argz, result 操作符左操作数右操作数结果 其中操作符也被称作算符,操作数也被称作算子,其上式表示对这个 四元式中的arg1和arg2进行op运算,将结果存进 result。其中间 代码生成过程如图1.7: 中间代码生成 (1)fit,60, T1) (2)(*,id3,T1,T) (3)(+,id2,T2,T3 (4) T3 图17中间代码生成 5)屮间代码优化 分析上面图中的四个四元式可以看出,60是编译时已经知道的常数, 所以把它转换成60.0的工作可以在编译时完成,没有必要生成图中 6 联入式系统及应用课后作业 (1)号四元式,它的作用仅仅是把T3的值传给id1,因而其也是多余 的四元式,经过优化后其就变为两个四元式即 中间代码优化 (1)(*,id3,60.0,T1) (2)(+,id2,T1,id1) 图18中间代码优化 6)根据优化后的中间代码生成目标代码,此处的目标代码使用的是汇 编指令,其中MOVF、MULF、ADDF分别表示浮点数的传送,乘和加操 作。对于二元运算MULF和ADF,操作形式为 OP source, target, 它表示 target:= source op target。即 Source和 target进行OP 运算,结果行进 target。对于一元运算MOVF,操作形式为M)VF Source, target,它表示 target:= source,即将 Source中的内容 移进 targe 目标代码生成 MOVF id3, R2 MULF #60.0 R2 MOⅤFid2,Rl ADDF R2. RI MOVF R1. id1 图1.9目标代码生成 联入式系统及应用课后作业 ⑦)错误检查和处理程序 程序编与人员编与的程序,错误是难免的,,一个仅能处理绝对正确 源程序的编译程序是没有价值的。一个比较完善的编译程序应具有广 泛的程序査错能力,并能准确的报告源程序的错误种类和错误出现的 位置。同时编译程序还应具有一定的校错能力。除报错外,编译程序 还可以生成一些另外的注释信息,帮助程序人员调整程序和编写程序 说明书。 8)信息表管理程序 在编译的过程屮,需要经常收集,记录或査询源程序屮所岀现的各种 量的有关属性。因而,需要建立或持有不同用途的表格(如常数表 各种名字表、表等)通常统称为符号表。 综上所述,对编译器各个阶段做如下归纳: 1.词法分析:词法分析器根据词法规灲识別出湶程序中的各个记号, 每个记号代表一类单词。源程序中的记号可以归为以下几大类: (1)关键字:如var, begin,end等,具有特定含义,一般不作 它用,也成称保留字 (2)标识符:如x,y,z等,在源程序中被用作变量名,过程名 等所有对象名称。 8 联入式系统及应用课后作业 (3)字面量:如60, Xidian university等,一般表示常数或 字符串常量 (4)特殊符号:如+、 、;等,其在源程序具有特定的 作用,可被细分为运算符,分隔符等。 2.语法分析器根据语法规则识别出记号流中的结构,并构造相应的 反应该结构的语法树。语法树的数据结构一般采用典型的二叉树 结构,因任何形态的树都可向其转换。 语义分析:语义分析器根据语义规则对语法树中的语法单元进行 静态语义检査,如类型检査和转换等,其目的是为了语法正确的 结构在语义上也是合法的。 4.中间代码生成:中间代码生成器根据语义分析器的输出生成中间 代码。中间代码可以有若干形式,其共同的特征是与具体的札器 无关。最常用的一种中间代码是三地址码,它的一种实现方式是 四元式,三地址码的优点是便于阅读和优化。 5.屮间代码优化:由于编译器将源程序翻译成屮间代码是杌械式的。 因而,生成的中间代码往往在时间上和空间上有很大浪费。若要 生成高效的目标代码就必须进行优化处理。由于中间代码不依赖 丁机器,在中间代码一级进行优化可以避开与机器有关的因素 把精力集中在对控制流和数据流的分析上。因此优化的大部分工 作在目标代码生成之前进行,只有少部分与及其有关的优化放在 日标代码生成时执行。
(系统自动生成,下载前可以参看下载内容)

下载文件列表

相关说明

  • 本站资源为会员上传分享交流与学习,如有侵犯您的权益,请联系我们删除.
  • 本站是交换下载平台,提供交流渠道,下载内容来自于网络,除下载问题外,其它问题请自行百度
  • 本站已设置防盗链,请勿用迅雷、QQ旋风等多线程下载软件下载资源,下载后用WinRAR最新版进行解压.
  • 如果您发现内容无法下载,请稍后再次尝试;或者到消费记录里找到下载记录反馈给我们.
  • 下载后发现下载的内容跟说明不相乎,请到消费记录里找到下载记录反馈给我们,经确认后退回积分.
  • 如下载前有疑问,可以通过点击"提供者"的名字,查看对方的联系方式,联系对方咨询.
 输入关键字,在本站1000多万海量源码库中尽情搜索: