收藏 分享(赏)

1_编译原理绪论(1).ppt

上传人:hwpkd79526 文档编号:9996395 上传时间:2019-09-26 格式:PPT 页数:40 大小:285KB
下载 相关 举报
1_编译原理绪论(1).ppt_第1页
第1页 / 共40页
1_编译原理绪论(1).ppt_第2页
第2页 / 共40页
1_编译原理绪论(1).ppt_第3页
第3页 / 共40页
1_编译原理绪论(1).ppt_第4页
第4页 / 共40页
1_编译原理绪论(1).ppt_第5页
第5页 / 共40页
点击查看更多>>
资源描述

1、1,教学安排与要求,一. 课程任务和目的程序设计语言编译程序构造的基本原理和实现方法是软件的核心技术之一。具有分析和实现编译程序的能力提高对高级程序设计语言的理解和应用能力。通过正则式、自动机和形式语言的学习,培养形式化的能力。,2,二、教学介绍1。作业; 2。上机实验; 3。课堂和实验教学与第2章和附录A的PL/0编译程序紧密结合,要求读懂源程序,完成扩充编译器的实验,为期末课程设计打好基础。,3,三、教学要求课前预习 按时完成作业 认真阅读分析PL/0编译器 重视实验,交实验报告,4,第1章 绪论,1.1 编译程序 1.2 解释程序 1.3 编译程序的结构 1.4 编译程序的设计,5,1.

2、1 编译程序,机器语言:能够被计算机的硬件系统直接执行的指令程序。 汇编语言:将硬件指令用一些助记符表示。如ADD表示加法操作, SUB表示减法操作等等 高级语言:使用便于理解的自然语言。,6,1.1 编译程序,翻译程序:将一种语言(源语言)翻译成 另一种逻辑上等价的语言(目标语言)的 程序。 汇编程序:将汇编语言翻译成机器语言的翻译程序。 编译程序:将高级语言翻译成汇编语言或机器语言的翻译程序。,编译程序,低级语言程序 (目标程序),高级语言程序 (源程序),7,机器语言计算机指令系统低级语言 语言 汇编语言符号化的指令系统高级语言算法语言,不依赖具体机器,面向问题源程序 翻译程序 目标程序

3、 汇编语言程序 汇编程序 机器语言程序 计算机高级语言程序 编译程序 连接程序,8,什么是编译程序,分类 软件 系统软件 语言处理系统,操作系统,编译系统,裸机,9,分类,软件:计算机系统中的程序及其文档 系统软件:居于计算机系统中最靠近硬件的一层,其他软件一般都通过系统软件发挥作用。和具体的应用领域无关,如编译系统和操作系统等。,语言处理系统:把软件语言书写的各种程序处理成可在计算机上执行的程序。 软件语言:用于书写软件的语言。它主要包括需求定义语言,功能性语言,设计性语言,程序设计语言以及文档语言。,10,预处理器,编译器,汇编器,装配连接编辑,框架程序,源程序,目标汇编程序,可重定位机器

4、代码,绝对机器码,可重定位目标文件库,语言处理过程,.c .cpp .java .pas,.asm,.obj,.exe,.dll .lib,11,什么是编译程序,语言转(变)换系统,C+翻译器,C+,C,Java,Bytecode,Java编译器,12,源语言 实现语言 目标语言,汇编语言 汇编程序 机器语言,高级语言 编译程序 低级语言,高级语言 预处理程序 高级语言,翻译对象 翻译程序 翻译结果,13,编 译(笔译) 解 释(口译) 产生目标程序,可多次执行, 边解释边执行,不产生目标程序, 优化较充分,执行效率高。 优化不充分,总体效率较低。 但编译器本身较大, 但解释器本身较小, 较复

5、杂,不便人机对话 较简单,便于人机对话 源语言:Pascal,C, 源语言:BASIC, LISP, Java等FORTRAN等源 编 结 源程序 解 结 程 译 目标程序 释 序 器 果 初始数据 器 果运行库,初始数据,编译程序和解释程序比较,14,术语,编译程序(compiler) 编译程序的源语言(源程序) (source language / program) 编译程序的目标语言(目标程序) (object or target language / program) 编译程序的实现语言(implementation language) 语言处理程序(language processo

6、r) 语言转(变)换(language transformation),15,1.3 编译程序的结构,词法分析,语法分析,语义分析,中间代码生成,代码优化,目标代码生成,源程序,目标程序,16,1.3 编译程序的结构,词法分析(扫描器,Scanner )扫描、分解源程序,识别单词(基本字 标识符、常数、运算符、界限符),并给 予种别(属性)和内部形式(值)构成单 词的内部表示。,17,例:源程序,PROGRAM m; VAR a,b,c:real;BEGINread(b,c);a:=b+c*60;write(a);END.,1.3 编译程序的结构, . ,源程序被分析成字符流,18,语法分析(

7、分析器,Analyzer)语法检查,分析源程序的语法结构,并 用明确的结构(如语法树)表示。,1.3 编译程序的结构,对于前一个例子的单词序列: a:=b+c*60 可表示为:,19,a:=b+c*60 经语法分析得到的语法树,表达式3,赋值语句,标识符,=,表达式1,表达式2,+,表达式5,a,b,标识符,表达式4,*,c,标识符,1.3 编译程序的结构,20,语义分析检查程序有无语义错误,为代码生成阶 段收集类型信息。,21,语义分析,语义审查(静态语义) 上下文相关性 类型匹配 类型转换,例: program p();var rate:real;procedure initial;pos

8、ition := initial + rate * 60 ;/* error */ /* error */ /* warning */,1.3 编译程序的结构,22,又如: int arr 2, abc;abc = arr * 10; program p();var rate : real;var initial : real;var position : real ;position := initial + rate * 60,23,语义分析,1.3 编译程序的结构,24,中间代码生成语义分析,生成中间代码。便于代码优化,便于从逻辑上分出与语言或机器无关的阶段。设计原则:1、容易生成;2、

9、容易被翻译成目标代码;,1.3 编译程序的结构,25,中间代码的生成,( inttoreal 60 t1 ) ( * c t1 t2 ) ( + b t2 t3 ) ( := t3 a ),1.3 编译程序的结构,26,代码优化可多次 局部优化:合并已知量编译时计算常量表达式改变计算顺序减少指令、减少中间量 共享子表达式删除多余代码降低运算强度 乘方 乘,1.3 编译程序的结构,27,代码优化可多次 循环优化:循环不变部分外提下标地址计算优化降低运算强度 乘 加 与机器有关的优化:使用特殊指令如计数转移指令寄存器分配,1.3 编译程序的结构,28,目标代码的生成把中间代码变换成特定机器上的绝对

10、指令代码或可重定位的指令代码或汇编指令代码。,1.3 编译程序的结构,29,代码优化和目标代码的生成,( * c 60.0 t1 )( + b t1 t2 )( := t2 a )movf c , r2 ;mulf #60.0 , r2 ;movf b, r1 ;addf r2, r1 ;mov r1, a ;,1.3 编译程序的结构,30,表格管理(符号表)为了合理的管理表格(构造、查找、更新),设立一些专门子程序称为表格管理程序负责管理表格。 出错处理编译程序在各个阶段应诊断和报告源程序中的错误,包括词法错误、语法错误和语义错误等。,1.3 编译程序的结构,31,符号表,1.3 编译程序的

11、结构,32,出错处理,表格管理,33,1.4 编译程序的组织,前端和后端源程序 中间代码 目标程序分遍(趟,PASS)问题,前 端,后 端,34,分遍(趟,pass)问题,在编译过程中,扫描源(中间)程序的次数称为该编译程序的“遍”数。决定分遍次数的因素有: (1)源语言FORTRAN、Pascal等,只需单遍扫描;ALGOL60要两遍扫描,ALGOL68要三遍扫描。若允许先使用、后说明,则通常需要多遍扫描。 N.Wirth的第一个Pascal编译器是在CDC6000上实现的一遍编译器(递归子程序法)。“在一台内存相当大的高速计算机实现高效编译的关键是一遍加工方案”,35,(2)机器,尤其是内

12、、外存的大小。内存小,可能需要多遍。 (3)优化要求。充分优化需要多遍。多遍的结构清晰,优化好,但重复工作多,输入输出多,编译器本身代码长,且编译速度慢,出错处理较困难。 本书的PL/0编译器就是一个单遍编译器。,36,高级语言解释系统(interpreter),功能 让计算机执行高级语言 (basic,lisp,prolog) 与编译程序的不同 1)不生成目标代码2)能支持交互环境(同增量式编译系统) 源 程 序 初始数据,解释程序,计算结果,37,解释系统,直接对源程序中的语句进行分析,执行其隐含的操作。 如: b := 2;a := b+2; 编译程序write a; 解释程序直接将4的值输出(显示),Int 2 St b Ld b Add 2 St a,生成代码,38,编译阶段和运行阶段存储结构,编译时 运行时,名字表,目标代码缓冲区,编译用源程序中 间表示各种表格,目标代码区,数据区,源程序缓冲区,39,解释系统存储结构,40,编译原理教材内容,第1章 概述 第2章 PL/0编译系统 第3章 文法和语言 第4章 词法分析 第5章 自顶向下语法分析 第6章 自底向上语法分析 第7章 LR分析,第8章 语法制导翻译和中间代码生成 第9章 符号表 第10章 运行时的存储组织和管理 第11章 代码优化 第12章 代码生成,学时:授课56 上机8 课程设计一周,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

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


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

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

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