南开大学编译原理第8章课件.ppt

上传人:龙*** 文档编号:1084838 上传时间:2018-12-03 格式:PPT 页数:59 大小:395KB
下载 相关 举报
南开大学编译原理第8章课件.ppt_第1页
第1页 / 共59页
南开大学编译原理第8章课件.ppt_第2页
第2页 / 共59页
南开大学编译原理第8章课件.ppt_第3页
第3页 / 共59页
南开大学编译原理第8章课件.ppt_第4页
第4页 / 共59页
南开大学编译原理第8章课件.ppt_第5页
第5页 / 共59页
点击查看更多>>
资源描述

1、第八章 中间代码生成学习内容m三地址码表示方法m声明语句的翻译m赋值语句的翻译:数组寻址m布尔表达式的翻译mcase语句的翻译mbackpatching技术的实现m过程调用的翻译8.1 中间语言8.1.1 图表示a := b * -c + b * -c语法树方式表示后缀表示 语法树的线性表示方式a b c uminus * b c uminus * + assign语法制导定义构造语法树PRODUCTION Semantic RuleS id := E S.nptr = mknode (assign,mkleaf(id, id.entry), E.nptr) E E1 + E2 E.nptr

2、= mknode(+, E1.nptr,E2.nptr) E E1 * E2 E.nptr = mknode(*, E1.nptr,E2.nptr) E - E1 E.nptr = mknode(uminus, E1.nptr) E ( E1 ) E.nptr = E1.nptr E id E.nptr = mkleaf(id, id.entry) 语法树的计算机内部表示8.1.2 三地址码m Three-Address Codem 一般形式: x := y op zm 语法树、 dag的线性化表示t1 := -c t1 := -ct2 := b * t1 t2 := b * t1t3 :=

3、-c t5 := t2 + t2t4 := b * t3 a := t5t5 := t2 + t4a := t58.1.3 三地址码语句类型1. 二元运算: x := y op z2. 一元运算: x := op y3. 复制语句: x := y4. 无条件转移: goto L5. 条件转移: if x relop y goto L6. 函数调用: param x1param x2param xncall p, n7. 数组: x := y i , x i := y8. 指针: x := E.code = E1.code | E2.code | | gen(E.place := E1.plac

4、e + E2.place) E E1 * E2 E.place= newtemp ;E.code = E1.code | E2.code | | gen(E.place := E1.place * E2.place) E - E1 E.place= newtemp ;E.code = E1.code | gen(E.place := uminus E1.place) E ( E1 ) E.place= E1.place ; E.code = E1.codeE id E.place = id.entry ; E.code = 控制流语句的翻译m while语句: S while E do S1m 翻译为 S.begin: E.codeif E.place = 0 goto S.afterS1.codegoto S.beginS.after:m 语法制导定义:S.begin = newlabel;S.after = newlabel ;S.code = gen(S.begin :) | E.code | gen(if E.place = 0 goto S.after) | S1.code | gen(goto S.begin) | gen(S.after :)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育教学资料库 > 课件讲义

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。