ImageVerifierCode 换一换
格式:PPT , 页数:23 ,大小:178KB ,
资源ID:5779176      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-5779176.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(编译(第1章:编译程序概论).ppt)为本站会员(jinchen)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

编译(第1章:编译程序概论).ppt

1、1,第1章 编译程序概论,1.1 什么是编译程序,2,1.1 什么是编译程序,编译程序: 把源程序翻译(转换)成等价的目标程序的程序,其转换过程可图示如下:,说明:除编译程序自身外,多数编译系统还需要一些其他的辅助程序来帮助完成其最终的翻译(转换)工作。,3,1.1 什么是编译程序,(典型)高级语言程序的处理过程:,4,1.1 什么是编译程序,例:C语言需预处理的源程序/*文件名:example.c*/#include “stdio.h“#define CHARACTER charmain()CHARACTER ch;ch=getchar();putchar(ch);,5,1.1 什么是编译程

2、序,经预处理程序“CPP.EXE”处理后得如下源程序 DOS命令为:cpp example.c 结果文件名:example.I example.c 1: main() example.c 2: example.c 3: char ch; example.c 4: ch=(-( example.c 6: ,6,1.1 什么是编译程序,可再装配的obj文件:-调用sin子程序调用printf子程序-,Sin() Cos() Scanf() Printf() ,函数子程序库,装 配 / 连 接 程 序,7,1.1 什么是编译程序,解释程序(Interpreter):其工作方式是边翻译边执行,其加工的

3、结果是源程序的运行结果。,解释程序工作方式 :,8,1.1 什么是编译程序,10 PRINT “X,Y=?” 20 INPUT X,Y 30 IF XY THEN 60 40 LET Z=Y-X 50 GOTO 70 60 LET Z=X-Y 70 PRINT “Z=“,Z 80 END,BASIC语言程序,解释程序工作过程:,9,1.2 编译过程概述,典型编译程序工作过程:,10,1.2 编译过程概述,词法分析 主要任务:扫描源程序的ASCII码序列,识别出一个个单词(也称单词符号或(语法)符号)。 具体任务: 1.拼单词:组合分解源程序中的字符,得到符合语言词法规则的单词。例如某源程序片断

4、如下:begin var sum,first,count:real;sum:=first+count*10 end词法分析将其视为字符(ASCII码)序列:,组合分解成单词符号序列:,11,1.2 编译过程概述,2.翻译单词:将单词加工成含有特征/属性的机内表示(机内符) 例如:上述源程序片断的词法分析的结果为如下二元组序列:1保留字 begin 2保留字 var3标识符 sum 4逗号 ,5标识符 first 6逗号 ,7标识符 count 8冒号 :9保留字 real 10分号 ;11标识符 sum 12赋值号 :=13标识符 first 14加号 +15标识符 count 16乘号 *1

5、7整数 10 18保留字 end19界符 ,12,1.2 编译过程概述,3词法检查:检查词法错误(主要是检查单词中使用了非法字符错误)例如:beg#n nd 10$ 等等4删除空白符、注释等,13,1.2 编译过程概述,2检查形式语法错误,例如:Y=A+B; /PASCAL赋值语句其赋值号应为 :=Y:=IF*Y;/PASCAL中用保留字作为标识符来使用a=b+c; /C中两个子表达式之间没有运算符if=x+y; /C中条件语句出错(x+y)*z;/C中括号不配对等等,说明:关于书中在这里引进的有关语言的“递归规则定义”和“语法树”相关知识,我们暂不讨论。,14,1.2 编译过程概述,语义分析

6、 任务:检查(静态)语义错误,提取语义信息。,其中:语义错误分为静态和动态两种.静态语义错误:在编译期间可以检查的语义错误例如:int *px,*py,i;px+py ; /两个运算对象类型不相容 ai ; /a没有声明goto loop; /loop没有定义等等(即独立的观察一条语句看不出的错误)动态语义错误:在目标程序运行时才可以检查的语义错误。例如:sqrt(x) /当x为负数时1/x /当x为0时fopen(pf,”r”) /文件如果不存在 语义信息包括:标识符的“种类”、“类型”等信息,15,1.2 编译过程概述,中间代码生成 中间代码:介于源程序和目标程序之间的一种结构简单、含义明

7、确的记号系统。如:逆波兰式、三元式、四元式、树形结构表示等 例如:源程序(赋值语句)sum:=first+count*10 所对应 的四元式序列如下:(inttoreal, 10, _ ,t1)(* , id3 , t1 , t2)(+ , id2 , t2 , t3) (:= , t3 , _ , id1),目的:方便加工,便于优化。 设计原则:容易生成,容易将其翻译成目标代码,16,1.2 编译过程概述,中间代码优化:为得到高质量的目标代码而进行的变换工作 任务:把原中间代码转换成可产生高质量(省时间和省空间)目标代码的中间代码。 例如:(inttoreal,10,_,t1)(* , id

8、3 , t1 , t2) (* ,id3 ,10.0 ,t1)(+ , id2 , t2 , t3) (+ ,id2 ,t1 , id1) (:= , t3 , _ ,id1),17,1.2 编译过程概述,目标代码生成 任务:把中间代码或语义分析的结果转换成目标代码程序,目标代码的三种形式: 1.绝对指令代码:具有绝对地址的机器指令代码,无需连接即可运行。 2.可重定位的指令代码:具有浮动地址的机器指令代码,需连接装配后方能运行。 3.汇编指令代码:汇编语言形式的目标程序,需经汇编程序汇编产生相应的机器代码。,18,1.3 编译程序的结构,典型编译程序结构:,19,1.4 编译阶段的组合,具体

9、实现上可从以下两个角度来考虑,1前端(front end)和后端(back end),后端:只与目标机有关的工作,即,优点:便于移植(在不同机器或不同语言之间使用) 其中:前端可用于在不同机器开发相同语言的编译程序后端可用于在同一台机器上开发不同语言的编译程序,20,1.4 编译阶段的组合,一遍扫描的优点:编译的速度快 多遍扫描的优点:算法清晰,便于分工,便于优化 设:COMP 编译程序 则有:,2.分遍(或趟):是指对源程序或对其等价的中间语言程序从头至尾扫视并完成规定任务的过程 (此过程称为扫描)。,21,1.4 编译阶段的组合,一遍扫描的编译程序的工作流程:,/*语法分析为合心*/,22,1.4 编译阶段的组合,多遍扫描的编译程序的工作流程:,23,1.5 编译技术和软件工具,1.语言的结构化编辑器(或称智能化编辑器)即编辑器具有检查简单语法错误的功能如:括弧配对检查,关键字组合检查等 2.语言程序的调试工具调试(或称纠错):是在测试发现错误之后排错的过程如:debug 3.语言程序测试工具静态分析器:测试源程序动态测试器:测试目标程序 4.高级语言之间的转换工具如:pascal c 5.并行编译技术 方法1:使用重构技术将串行语言程序分解成并行语言程序 方法2:使用语言自身提供的并行机制,用户自己编写并行语言程序,

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报