《编译原理》课程教学资源(PPT课件讲稿)中间代码生成

中间代码生成 语法 静态检 中间代码L中间 代码 分析器 查程序 生成器 代码 生成器 前端 后端
中间代码生成

本章内容 ·介绍几种常用的中间代码表示 抽象语法树(上一章已介绍) 有向无环图 三地址代码 ·用语法制导定义和翻译方案来说明源语言的各种 构造怎样被翻译成中间表示 声明(和类型) 表达式和赋值 类型检查和类型转换 控制流 过程
本章内容 • 介绍几种常用的中间代码表示 • 抽象语法树(上一章已介绍) • 有向无环图 • 三地址代码 • 用语法制导定义和翻译方案来说明源语言的各种 构造怎样被翻译成中间表示 • 声明(和类型) • 表达式和赋值 • 类型检查和类型转换 • 控制流 • 过程

编译器的前端 前端是对源语言进行分析并产生中间表示 处理与源语言相关的细节,与目标机器无关 ·前端后端分开的好处:不同的源语言、不同的机 器可以得到不同的编译器组合 语法 静态检 中间代码[中间 代码 分析器 查程序 生成器 代码 生成器 前端 后端 图6-1一个编译器前端的逻辑结构
编译器的前端 • 前端是对源语言进行分析并产生中间表示 • 处理与源语言相关的细节,与目标机器无关 • 前端后端分开的好处:不同的源语言、不同的机 器可以得到不同的编译器组合

建立组合编译的做法 Source program Source program in Language-1 in Language-2 Language -1 front end Language-2 Front End Non- optimized Intermediate code Intermediate-code optimizer Optimized Intermediate code Target-1 Code Generator Target-2 Code Generator arget-1 machine code Target-2 machine code
建立组合编译的做法 Target-1 Code Generator Target-2 Code Generator Intermediate-code Optimizer Language-1 Front End Source program in Language-1 Language-2 Front End Source program in Language-2 Non-optimized Intermediate Code Optimized Intermediate Code Target-1 machine code Target-2 machine code

中间代码表示及其好处 ·形式 多种中间表示,不同层次 抽象语法树 三地址代码 ·重定位 为新的机器建编译器,只需要做从中间代码到新的目 标代码的翻译器(前端独立) 抽象”的编译优化 优化与源语言和目标机器都无关
中间代码表示及其好处 • 形式 • 多种中间表示,不同层次 • 抽象语法树 • 三地址代码 • 重定位 • 为新的机器建编译器,只需要做从中间代码到新的目 标代码的翻译器(前端独立) • “抽象”的编译优化 • 优化与源语言和目标机器都无关

抽象语法树回顾 产生式」 语义规则 E→E1+TE,n0le= new node(“+,E1,nOdl,T,node) E>E-TEnode= new Node("-',E,, node, Tnode) E→T E node= tnode T→T1*FT.node= new nodel(“*2,T1,nOdl,F,noe) T→F Tnode= f node F→(E) F,node= enode F→id Fnode= new leaf (id, identry) F→num F node= new leaf (num, num. val) 例:a+a*(b-c)+(b-c)*
抽象语法树回顾 例:a + a * (b – c) + (b – c) * d 产 生 式 语 义 规 则 E → E1 +T E.node = new Node(‘+’, E1 .node, T.node) E → E1 −T E.node = new Node(‘−’, E1 .node, T.node) E → T E.node = T.node T → T1 F T.node = new Node( ‘’, T1 .node, F.node) T → F T.node = F.node F → (E) F.node = E.node F → id F.node = new Leaf (id, id.entry) F → num F.node = new Leaf (num, num.val)

有向无环图( Directed Acyclic Graph, DAG) 语法树中,公共子表达式每出现一次,就有一个对应的 子树 表达式的有向无环图能够指出表达式中的公共子表达式, 更简洁地表示表达式 例:a+a*(b-c)+(b-C)*d
有向无环图(Directed Acyclic Graph, DAG) • 语法树中,公共子表达式每出现一次,就有一个对应的 子树 • 表达式的有向无环图能够指出表达式中的公共子表达式, 更简洁地表示表达式 例:a + a * (b – c) + (b – c) * d

构造赋值语句语法树/DAG的语法制 导定义 ·修改构造结点的函数Node和Leaf可生成DAG:构 造新节点前先检查是否已存在同样的节点,如果 已经存在,则返回这个已有的节点 生式 语义规则 E,,+T Enode= new Node(+, Er, node, Tnode) E→E1-TE. node= new node(“-,E1,node, T node) E→T|Emle=rmhe T→T* FTnode= new node(“*,T1,node,F,nodl) T→F Tnode= fnode F→(E) Fnode= enode F→)id Fnode= new Leaf (id, id entry) F→num Fnode= new Leaf (num, num.val)
构造赋值语句语法树/DAG的语法制 导定义 • 修改构造结点的函数Node和Leaf可生成DAG:构 造新节点前先检查是否已存在同样的节点,如果 已经存在,则返回这个已有的节点 产 生 式 语 义 规 则 E → E1 +T E.node = new Node(‘+’, E1 .node, T.node) E → E1 −T E.node = new Node(‘−’, E1 .node, T.node) E → T E.node = T.node T → T1 F T.node = new Node( ‘’, T1 .node,F.node) T → F T.node = F.node F → (E) F.node = E.node F → id F.node = new Leaf (id, id.entry) F → num F.node = new Leaf (num, num.val)

a+a*(b-c)+(b-c)*d的DAG的构造 「产生式 语义规则 E→E1+TE. node= new node(“+,E1,nole, Tnode) E,E1-T Enode= new Node(-, Er- node, T node Enode= tnode →T1* F Tnode= new node(*’,T,node, F node) T→F Tnode= fnode F→(E) Anode= enode F→id Fnode= new Leaf(id, id entry) F→Ⅲum| Fnode= new Leaf(mum, num.val) a
a + a * (b – c) + (b – c) * d的DAG的构造 + + * * – d b c a 产 生 式 语 义 规 则 E → E1 +T E.node = new Node(‘+’, E1 .node, T.node) E → E1 −T E.node = new Node(‘−’, E1 .node, T.node) E → T E.node = T.node T → T1 F T.node = new Node( ‘’, T1 .node, F.node) T → F T.node = F.node F → (E) F.node = E.node F → id F.node = new Leaf (id, id.entry) F → num F.node = new Leaf (num, num.val)

三地址代码 般形式:x=yopz 条指令右侧最多有一个运算符 三地址代码拆分了多运算符表达式和控制流语句的嵌 套结构,所以适用于目标代码的生成 例表达式x+y*z翻译成的三地址语句序列是 ,=y*Z
三地址代码 • 一般形式:x = y op z • 一条指令右侧最多有一个运算符 • 三地址代码拆分了多运算符表达式和控制流语句的嵌 套结构,所以适用于目标代码的生成 • 例 表达式x + y z翻译成的三地址语句序列是 t1 = y z t2 = x + t1
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 北京师范大学:《计算机应用基础》课程教学资源(PPT课件讲稿)第1章 计算机常识(主讲:马秀麟).pptx
- 南京大学:Conceptual Architecture View(PPT讲稿).ppt
- 分布式数据库系统的体系结构与设计(PPT讲稿)Architecture and Design of Distributed Database Systems.pptx
- 《Computer Networking:A Top Down Approach》英文教材教学资源(PPT课件讲稿,6th edition)Chapter 3 传输层 Transport Layer.ppt
- 上海交通大学:《挖掘海量数据集 Mining Massive Datasets》课程教学资源(PPT讲稿)Lecture 03 Frequent Itemsets and Association Rules Mining Massive Datasets.ppt
- 中国科学技术大学:《计算机编程入门》课程PPT教学课件(讲稿)An Introduction to Computer Programming.ppt
- 中国科学技术大学:《算法基础》课程教学资源(PPT课件讲稿)算法基础习题课(二).pptx
- 《计算机网络》课程教学资源(PPT课件讲稿)Chapter 04 网络层 Network Layer.ppt
- 东北大学:《可信计算基础》课程教学资源(PPT课件讲稿)第三讲 认证技术与数字签名.ppt
- Network and System Security Risk Assessment(PPT讲稿)Firewall.ppt
- 《计算模型与算法技术》课程教学资源(PPT讲稿)Chapter 8 Dynamic Programming.ppt
- 清华大学:图神经网络及其应用(PPT讲稿)Graph Neural Networks and Applications.pptx
- 《计算机网络》课程PPT教学课件(英文版)Chapter 4 物理层 PHYSICAL LAYER.pptx
- 南京大学:《数据结构 Data Structures》课程教学资源(PPT课件讲稿)Chapter 1 基本概念和算法分析.ppt
- 安徽理工大学:《算法导论》课程教学资源(PPT课件讲稿)第4章 分治法——“分”而治之.ppt
- 南京大学:《形式语言与自动机 Formal Languages and Automata》课程教学资源(PPT课件讲稿)Transition System(主讲:卜磊).pptx
- 南京大学:《编译原理》课程教学资源(PPT课件讲稿)第四章 语法分析.ppt
- 《计算机网络》课程教学资源(PPT课件讲稿)第四章 网络层.pptx
- 《ASP动态网页设计实用教程》教学资源(PPT课件讲稿)第3章 Web页面制作基础.ppt
- 《编译原理》课程教学资源(PPT课件讲稿)第四章 语法制导的翻译.ppt
- TTCN3工具培训(PPT讲稿)TTCN-3简介.ppt
- 《Java Web编程技术》课程教学资源(PPT课件讲稿)第4章 JDBC数据库访问技术.ppt
- 中国科学技术大学:《计算机体系结构》课程教学资源(PPT课件讲稿)第三章 流水线技术.ppt
- 《计算机网络》课程教学资源(PPT课件讲稿)第2章 物理层.ppt
- 《计算机视觉》课程教学资源(PPT课件讲稿)基于灭点几何的深度图重建、基于焦点变换的深度图重建.ppt
- 中国科学技术大学:《数据结构及其算法》课程电子教案(PPT课件讲稿)第七章 图.pps
- 中国科学技术大学:《计算机体系结构》课程教学资源(PPT课件讲稿)第4章 存储层次结构设计.pptx
- 大连工业大学:《计算机文化与软件基础》课程教学资源(PPT课件讲稿)绪论、计算机系统的组成、计算机中数的表示.pps
- 西安电子科技大学:《微机原理与接口技术》课程教学资源(PPT课件讲稿)第一章 数制与码制(主讲:王晓甜).pptx
- 网络应用软件(PPT课件讲稿)第一讲 客户-服务器概念、协议端口的使用、套接字API.ppt
- 《编译原理》课程教学资源(PPT课件讲稿)代码优化——全局数据流分析技术.ppt
- 《编码理论》课程电子教案(PPT课件讲稿)第二章 信息量和熵.ppt
- 计算机网络 The Network Layer(PPT课件讲稿)网络互联、Internet上的网络层.ppt
- 分布式数据库(PPT课件讲稿)Distributed DBMS Architecture.ppt
- 同济大学:企业电子商务系统(PPT讲稿)Enterprise Electronic Business Systems.ppt
- 《计算机网络》课程电子教案(PPT教学课件)第二章 物理层.pptx
- 《Computer Networking:A Top Down Approach》英文教材教学资源(PPT课件讲稿,6th edition)Chapter 2 Application Layer.ppt
- RDA Testing & Comparison with AACR2(session 1).ppt
- 中国医科大学:《计算机基础》课程教学资源(PPT课件)第8章 Internet应用基础.ppt
- 《算法设计与分析基础》课程教学课件(PPT讲稿)Chapter 2 Fundamentals of the Analysis of Algorithm Efficiency.ppt