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

  • 2
  • 0
  • 约5.62千字
  • 约 40页
  • 2017-09-17 发布于江西
  • 举报
教学安排与要求 第1章 绪论 1.1 编译程序 1.2 解释程序 1.3 编译程序的结构 1.4 编译程序的设计 1.1 编译程序 机器语言:能够被计算机的硬件系统直 接执行的指令程序。 汇编语言:将硬件指令用一些助记符表 示。如ADD表示加法操作, SUB表示减法操作等等 高级语言:使用便于理解的自然语言。 什么是编译程序 分类 软件 系统软件 语言处理系统 分类 软件:计算机系统中的程序及其文档 系统软件:居于计算机系统中最靠近硬件的一层,其他软件一般都通过系统软件发挥作用。和具体的应用领域无关,如编译系统和操作系统等。 语言处理系统:把软件语言书写的各种程序处理成可在计算机上执行的程序。 软件语言:用于书写软件的语言。它主要包括需求定义语言,功能性语言,设计性语言,程序设计语言以及文档语言。 什么是编译程序 语言转(变)换系统 编译程序和解释程序比较 术语 编译程序(compiler) 编译程序的源语言(源程序) (source language / program) 编译程序的目标语言(目标程序) (object or target language / program) 编译程序的实现语言 (implementation language) 语言处理程序(language processor) 语言转(变)换(language transformation) 1.3 编译程序的结构 1.3 编译程序的结构 词法分析(扫描器,Scanner ) 扫描、分解源程序,识别单词(基本字 标识符、常数、运算符、界限符),并给 予种别(属性)和内部形式(值)构成单 词的内部表示。 例:源程序 PROGRAM m; VAR a,b,c:real; BEGIN read(b,c); a:=b+c*60; write(a); END. 语法分析(分析器,Analyzer) 语法检查,分析源程序的语法结构,并 用明确的结构(如语法树)表示。 a:=b+c*60 经语法分析得到的语法树 语义分析 检查程序有无语义错误,为代码生成阶 段收集类型信息。 语义分析 语义审查(静态语义) 上下文相关性 类型匹配 类型转换 又如: int arr [2], abc; abc = arr * 10; … program p(); var rate : real; var initial : real; var position : real ; … position := initial + rate * 60 语义分析 中间代码生成 语义分析,生成中间代码。 便于代码优化,便于从逻辑上分出与语 言或机器无关的阶段。 设计原则:1、容易生成; 2、容易被翻译成目标代码; 中间代码的生成 ( inttoreal 60 — t1 ) ( * c t1 t2 ) ( + b t2 t3 ) ( := t3 — a ) 代码优化──可多次 局部优化: 合并已知量──编译时计算常量表达式 改变计算顺序──减少指令、减少中间量 共享子表达式──删除多余代码 降低运算强度── 乘方 乘 代码优化——可多次 循环优化: 循环不变部分外提 下标地址计算优化 降低运算强度 ── 乘  加 与机器有关的优化: 使用特殊指令──如计数转移指令 寄存器分配 目标代码的生成 把中间代码变换成特定机器上的绝对指 令代码或可重定位的指令代码或汇编指 令代码。 代码优化和目标代码的生成 ( * c 60.0 t1 ) ( + b t1 t2 ) ( := t2 — a ) movf c , r2 ; mulf #60.0 , r2 ;

文档评论(0)

1亿VIP精品文档

相关文档