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

编译原理与技术 中间代码生成 2021/2/11 《编译原理与技术》讲义
2021/2/11 《编译原理与技术》讲义 1 编译原理与技术 中间代码生成

中间代码生成 中间代码形式 控制流语句翻译 2021/2/11 《编译原理与技术》讲义
2021/2/11 《编译原理与技术》讲义 2 中间代码生成 -中间代码形式 -控制流语句翻译

中间代码生成 中间代码的种类 后缀式(逆波兰式) e.g. 1 a+b*-c, abc@+ eg21)a:=b*-C+b*-C,其后缀式为 abc@*@*+ assign 2) if a>b then c: =c+ 1 ab>cc1+ assign正 语法树Vs.分析树 eg.31)a:=b*-C+b*-C,其语法树为 2021/2/11 《编译原理与技术》讲义 3
2021/2/11 《编译原理与技术》讲义 3 中间代码生成 中间代码的种类 - 后缀式(逆波兰式) e.g.1 a + b * -c ➔ a b c @ * + e.g.2 1)a := b* -c + b * -c,其后缀式为 a b c @ * b c @ * + assign 2)if a>b then c := c + 1 a b > c c 1 + assign IF - 语法树 vs. 分析树 e.g.3 1)a := b* -c + b * -c,其语法树为

中间代码的种类 -e.g.3 1)a: =b*-C+ b*-c 语法树 VS.分析树 赋值语句 assign E assign E a a E E E × E b@ E b @E 2021/2/11 《编译原理与技术》讲义 4
2021/2/11 《编译原理与技术》讲义 4 - e.g.3 1)a := b* -c + b * -c 语法树 vs. 分析树 中间代码的种类 assign a + * b @ c * b @ c assign E E + E E * E b @ E E a 赋值语句 c E * E b @ E c

中间代码的种类 -e.g.3 2)a: =b*-C+ b*-c 语法树 VS DAG assign assign a a b@ 2021/2/11 《编译原理与技术》讲义 5
2021/2/11 《编译原理与技术》讲义 5 - e.g.3 2)a := b* -c + b * -c 语法树 vs. DAG 中间代码的种类 assign a + * b @ c * b @ c assign a + * b @ c

中间代码的种类 neg4构造表达式的语法树(DAG) 产生式 语义规则 E>E1+ E2 Enptr: = mknode(+, E1nptr, E2 npt E>E1-E2 Enptr: = mknode (-, E1 nptr, E2nptr) E→>E1*E2 E nptr:= mknode(”,E1nptr,E2nptr) E→>E1/E2 E nptr:= mknode(’,E1nptr,E2npt E>E1 Enptr: E1nptr E→>-E1 Enptr: =mknode (@,, E,nptr, -) E>number Enptr = mkleaf(NUM, number. lex val) E→>id E nptr: =mkleat('ID, d entry)2 Cy 2021/2/11 《编译原理与技术》讲义 6
2021/2/11 《编译原理与技术》讲义 6 中间代码的种类 e.g.4 构造表达式的语法树(DAG) 产生式 语义规则 E→E1 + E2 E.nptr := mknode(‘+’,E1 .nptr, E2 .nptr) E→E1 - E2 E.nptr := mknode(‘-’,E1 .nptr, E2 .nptr) E→E1 * E2 E.nptr := mknode(‘*’,E1 .nptr, E2 .nptr) E→E1 / E2 E.nptr := mknode(‘/’,E1 .nptr, E2 .nptr) E→( E1 ) E.nptr := E1 .nptr E→ - E1 E.nptr := mknode(‘@’,E1 .nptr, -) E→number E.nptr := mkleaf(‘NUM’,number.lex_val) E→id E.nptr := mkleaf(‘ID’,id.entry)

中间代码的种类 neg4构造表达式的语法树(DAG) Enpr-E的语法树(根结点指针) mknode(op,lef,rght)一建立一个表达式语法 树结点,它的运算符为op,左、右运算对象 是eft和rght所指的语法树。 mkleaf(NUM, number. lex val) mkleaf(ID, id entry 建立表达式语法树的叶子结点 2021/2/11 《编译原理与技术》讲义 7
2021/2/11 《编译原理与技术》讲义 7 中间代码的种类 e.g.4 构造表达式的语法树(DAG) E.nptr - E的语法树(根结点指针) mknode(op, left, right)-建立一个表达式语法 树结点,它的运算符为op,左、右运算对象 是left和right所指的语法树。 mkleaf(‘NUM’,number.lex_val)- mkleaf(‘ID’,id.entry)- 建立表达式语法树的叶子结点

中间代码的种类 neg4构造表达式a+b*4的语法树(DAG) 十 iD a iD b @ NUM4 2021/2/11 《编译原理与技术》讲义 8
2021/2/11 《编译原理与技术》讲义 8 e.g.4 构造表达式a+b*-4的语法树(DAG) 中间代码的种类 + ID a * ID b @ NUM 4

中间代码的种类 三地址代码 般形式:ⅹ:=yopz 或X:=opy eg5a:=b-C+b*-C的三地址代码 1)t 2)t2:=b*t 2)t2:=b*t1 3)t2:=-C 3’)t 十 4)t4:=b*t3 4)a:=t 5)t5:=t2+t4 6)a:=t5 2021/2/11 《编译原理与技术》讲义 9
2021/2/11 《编译原理与技术》讲义 9 中间代码的种类 三地址代码 一般形式:x := y op z 或 x := op y e.g.5 a := b* -c + b * -c的三地址代码 1)t1 := - c 1’) t1 := - c 2)t2 := b * t1 2’) t2 := b * t1 3)t3 := - c 3’) t3 := t2 + t2 4)t4 := b * t3 4’) a := t3 5)t5 := t2 + t4 6)a := t5

中间代码的种类 常用的三地址代码 x:=yopz二元运算 x:=0py单目运算 X:=y 值拷贝 goto L 无条件转移到代码标号L处 f X RELoP y goto L条件转移代码:若x和y满 足 RELOP关系,则转移至代码标号L处 param X 参数X CALL proc,N调用过程proc,参数个数为N 2021/2/11 《编译原理与技术》讲义 10
2021/2/11 《编译原理与技术》讲义 10 中间代码的种类 常用的三地址代码 - x := y op z 二元运算 - x := op y 单目运算 - x := y 值拷贝 - goto L 无条件转移到代码标号L处 - if x RELOP y goto L 条件转移代码:若x和y满 足RELOP关系,则转移至代码标号L处 - param X 参数X - CALL proc,N 调用过程proc,参数个数为N
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 《软件测试 Software Testing》教学资源(PPT讲稿)Part 3 Applying Your Testing Skills.ppt
- 电子工业出版社:《计算机网络》课程教学资源(PPT课件讲稿)第1章 概述.pptx
- 《计算机算法设计与分析》课程教学资源(PPT课件讲稿)分支界限法.ppt
- 中国科学技术大学:《数据结构及其算法》课程电子教案(PPT课件讲稿)第7章 图(主讲:刘东).pptx
- 兰州大学:搜索引擎的使用(PPT讲稿,主讲 杨青).ppt
- Folksonomies and Social Tagging(PPT讲稿).ppt
- Enabling SOA Using Messaging(PPT讲稿).ppt
- 《大学计算机基础》课程教学资源(PPT课件讲稿)第三章 字处理软件Word 2003.ppt
- 烟台理工学院:《算法与数据结构》课程教学资源(PPT课件)第1章 绪论(主讲:高慧).ppt
- 文字处理软件 Word 2010(PPT讲稿).pptx
- 山东大学:《数据结构》课程教学资源(PPT课件讲稿)第7章 跳表和散列(Skip List and Hashing).ppt
- 《Android 程序设计基础》课程教学资源(PPT课件讲稿)第5章 Android用户界面(界面设计、控件操作).ppt
- 山东大学计算机科学与技术学院:Web Service(PPT讲稿).ppt
- 《编译原理》课程教学资源(PPT课件讲稿)第七章 语义分析和中间代码生成.ppt
- 《计算机组成原理》课程教学资源(PPT课件讲稿)第八章 I/O操作的实现.ppt
- 《C++语言程序设计》课程教学课件(PPT讲稿)第13讲 多态.ppt
- 山东大学:《人机交互技术》课程教学资源(PPT课件讲稿)第9章 可用性分析与评估.ppt
- 多媒体图像处理技术(PPT课件讲稿,共六章).ppt
- 山东大学:《微机原理及单片机接口技术》课程教学资源(PPT课件讲稿)第四章 指令系统及汇编语言程序设计 4.5 各类指令详解.ppt
- 《微机原理》课程教学资源(PPT课件)第2章 微处理器与总线.ppt
- 南京大学:《编译原理》课程教学资源(PPT课件讲稿)第六章 中间代码生成.ppt
- 合肥工业大学:《网络安全概论》课程教学资源(PPT课件讲稿)第一讲 网络安全概述.ppt
- 中国科学技术大学:《计算机体系结构》课程教学资源(PPT课件讲稿)第五章 存储层次.ppt
- 南京大学:移动Agent系统支撑(PPT讲稿)Mobile Agent Communication——Software Agent.pptx
- 西安电子科技大学:《现代密码学》课程教学资源(PPT课件讲稿)第七章 数字签名和密码协议.ppt
- 《编译原理》课程教学资源(PPT课件讲稿)第九章 独立于机器的优化.ppt
- 湖南科技大学:分布式工作流系统的时间管理模型研究(PPT讲稿,周春姐).ppt
- 《计算机网络》课程教学资源(PPT课件讲稿)Chapter 04 网络层 Network Layer.ppt
- 《计算机情报检索原理》课程教学资源(PPT课件)第五章 自动标引.ppt
- SOFT COMPUTING Evolutionary Computing(PPT讲稿).ppt
- 马尔可夫链蒙特卡洛算法(PPT讲稿)Hamiltonian Monte Carlo on Manifolds,HMC.pptx
- 中国科学技术大学:《计算机体系结构》课程教学资源(PPT课件讲稿)顺序同一性的存储器模型.pptx
- 《编译原理》课程教学资源(PPT课件讲稿)第四章 语法制导的翻译.ppt
- 《ASP动态网页设计实用教程》教学资源(PPT课件讲稿)第3章 Web页面制作基础.ppt
- 《计算机网络》课程教学资源(PPT课件讲稿)第四章 网络层.pptx
- 南京大学:《编译原理》课程教学资源(PPT课件讲稿)第四章 语法分析.ppt
- 南京大学:《形式语言与自动机 Formal Languages and Automata》课程教学资源(PPT课件讲稿)Transition System(主讲:卜磊).pptx
- 安徽理工大学:《算法导论》课程教学资源(PPT课件讲稿)第4章 分治法——“分”而治之.ppt
- 南京大学:《数据结构 Data Structures》课程教学资源(PPT课件讲稿)Chapter 1 基本概念和算法分析.ppt
- 《计算机网络》课程PPT教学课件(英文版)Chapter 4 物理层 PHYSICAL LAYER.pptx