网站大量收购独家精品文档,联系QQ:2885784924

第1章引论1编译程序概论重点.ppt

  1. 1、本文档共23页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 第1章 编译程序概论 1.1 什么是编译程序 1.2 编译过程和编译程序的结构 1.3 解释程序和一些软件工具 1.4 程序设计语言范型 编译程序 高级语言程序 (源程序) 低级语言程序 (目标程序) 解释程序 源程序 输入数据 计算结果 编译程序 运行系统 目标程序 输入数据 计算结果 源程序 需预处理的源程序 预处理程序 源程序 编译程序 汇编程序 装配/连接编辑程序 目标汇编程序 可再装配的机器代码 绝对机器代码 可再装配目标文件 高级语言程序的处理过程 表 格 管 理 词法分析 语法分析 语义分析 中间代码生成 代码优化 目标代码生成 出 错 处 理 源程序 目标程序 编译的各个阶段 词法分析 从左到右读入源程序的每个字符,对构成源程序的字符流进行扫描和分解,从而识别出一个个单词(也叫单词符号或符号)。 单词:逻辑上紧密相连的一组字符,这些字符具有集体含义。 如:标识符、保留字(关键字或基本字)、算符、界符等。 例. 某源程序片断如下: begin var sum , first , count : real ; sum := first + count * 10 end. 保留字 begin 保留字 var 标识符 sum 逗号 , 标识符 first 逗号 , 标识符 count 冒号 : 保留字 real 分号 ; 标识符 sum 赋值号 := 标识符 first 加号 + 标识符 count 乘号 * 整数 10 保留字 end 界符 . 语法分析 将单词序列分解成各类语法短语(也叫语法单位),如“程序”、“语句”、“表达式”等。 依据:语言的语法规则。 通过语法分析确定整个输入串是否构成一个语法上正确的程序。 赋值语句 标识符 表达式 表达式 + 表达式 表达式 标识符 整数 标识符 := 表达式 * id1:=id2+id3*10 的语法树 id1 sum id2 first id3 count 10 id1:=id2+id3*10 的语法树的另一种形式 := id1 + id2 * id3 10 程序结构的递归表示 表达式的表示: 任何标识符是表达式。 任何常数(整常数、实常数)是表达式。 若表达式1和表达式2都是表达式,那么 表达式1+表达式2 表达式1*表达式2 (表达式1) 都是表达式。 语句的表示: 标识符:=表达式 是语句。 while (表达式) do 语句 和 if (表达式) then 语句 else 语句 都是语句。 语义分析 如:类型检查。 := id1 + id2 * id3 10 inttoreal sum := first + count * 10 中间代码生成 中间代码:一种结构简单、含义明确的记号系统。 原则: 容易生成; 容易将它翻译成目标代码。 四元式: (运算符,运算对象1,运算对象2,结果) 如:源程序 sum := first + count * 10 生成的四元式可以是: ( inttoreal 10 - t1 ) ( * id3 t1 t2 ) ( + id2 t2 t3 ) ( := t3 - id1) := id1 + id2 * id3 10 inttoreal 代码优化 ( inttoreal 10 - t1 ) ( * id3 t1 t2 ) ( + id2 t2 t3 ) ( := t3 - id1) ( * id3 10.0 t2 ) ( + id2 t2 id1 ) ( * id3 10.0 t1 ) ( + id2 t1 id1 ) 目标代码生成 任务:把中间代码变换成特定机器上的绝对指令代码或可重定位的指令代码或汇编指令代码。 特点:与硬件系统结构和指令含义有关,涉及到硬件系统功能部件的运用、机器指令的选择、各种数据类型变量的存储空间分配以及寄存器和后缓寄存器的调度等。 ( * id3 10.0 t1 ) ( + id2 t1 id1 ) sum := first + count * 10 MOVF id3, R2 MULF #10.0, R2 MOVF id2, R1 ADDF R1, R2 MOVF R2, id1 表 格 管 理 程 序 词法分析程序 语法分析程序 语义分析程序 中间代码生成程序 代码优化程序 目标代码生成程序 出 错 处 理 程 序 源程序 目标程序 编译程序的结构 有关名词: 前端(front end):主要依赖于源语言而与目标机器无关的编译阶段。如:词法分析、语法分析、语义分析、中间代码生成、部分优化工作、与前端有关的出错处理工作和符

文档评论(0)

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

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

1亿VIP精品文档

相关文档