- 1、本文档共29页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
编译原理-中间语言
第七章 语义分析和中间代码生成 7.1 中间语言 7.2 说明语句 7.3 赋值语句的翻译 7.4 布尔表达式的翻译 7.5 控制语句的翻译 7.6 过程调用的处理 7.7 类型检查 7.1 中间语言 7.1.1 后缀式 7.1.2 图表示法 7.1.3 三地址代码 为什么引入中间语言? 许多编译程序采用了独立于机器的、复杂性介于源语言和机器语言之间的中间语言。 (1) 便于进行与机器无关的代码优化工作 (2) 使编译程序改变目标机更容易 (3) 使编译程序的结构在逻辑上更为简单明确, 编译前端和后端的接口更清晰 7.1.1 后缀式 后缀式表示法又称逆波兰表示法。 把运算量(操作数)写在前面,把算符写在后面 a + b * -c ,其后缀式为 a b c @ * + a := b* -c + b * -c,其后缀式为 a b c @ * b c @ * + assign if ab then c := c + 1 ,其后缀式为 a b c c 1 + assign IF-THEN 后缀表示法的优点 方便具有堆栈体系的计算机的目标代码生成 适用于解释执行的程序设计语言的中间表示 -2+4*5 的后缀式为 2@45*+ 7.1.2 图表示法 DAG 无循环有向图 (Directed Acyclic Graph) 抽象语法树 DAG 在一个DAG中, 代表公共子表达式的结点具有多个父结点 7.1.3 三地址代码 三地址代码 是由下面一般形式的语句构成的序列: x := y op z x, y, z 为名字、常数或编译时产生的临时变量 op 代表运算符号 例: 表达式 x + y * z 可以被翻译为如下语句序列: T1 := y * z T2 := x+T1 Tl,T2为编译时产生的临时变量 教材中所使用的三地址语句的种类 (1) 形如 x := y op z 的赋值语句, op 为二元算符算符 (2) 形如 x := op y 的赋值语句,op 为一元算符 (3) 形如 x := y 的赋值语句 (4) 形如 goto L 的无条件转移语句 (5) 形如 if x relop y goto L 或 if a goto L 的条件转移语句 (6) 过程调用的语句 param x 和 call p, n, 以及返回语句 return y (7) 形如 x:= y[i] 、 x[i]:=y 的索引赋值 (8) 形如 x:=y、 x:=*y 、 *x:=y 的地址和指针赋值 产生三地址代码的属性文法不作为考试要求 newtemp : 返回一个不同的临时变量的名字 E.place : 存放E值的名字, 存放E值的变量在符号表中的登录项。(指针) E.code : 对E求值的三地址语句序列 gen : 生成三地址语句 三地址语句可看成中间代码的一种抽象形式 在编译程序中, 三地址代码语句的具体实现可以用记录表示, 通常有三种表示形式: 四元式: ( op, arg1, arg2, result ) 三元式: ( op, arg1, arg2 ) 间接三元式 四元式写成简单赋值形式 a := b*c + b*d 把上述四元式序列写成: (1)t1∶=b*c (2)t2∶=b*d (3)t3∶=t1+t2 (4)a ∶=t3 为了避免把临时变量填入到符号表,可以通过计算这个临时变量值的语句 的位置 来引用这个临时变量 arg1和 arg2,或者指向符号表中的指针,或者指向三元式表的指针(临时变量)。 运算的先后顺序由一张间接码表列出 例: a := b * c + d / f 的间接三元式 当优化过程中需要调整运算顺序时, 只需安排间接码表,无需改动三元式表。 间接三元式的优点 便于优化 相同的三元式无需重复填入三元式表中, 节省三元式空间 * * ab+abc*+ ab+c*abc*bd*+:= a+ba+b*c(a+b)*ca:=b*c+b*d 逆波兰表示 程序设计语言中的表示 表7.1 把表达式翻译成后缀式的语义规则描述 E.code := E1.code || E2.code || op E.code := E1.code E.code := id E ? E1 op E2 E ? (E1) E ?id 语义规则 产生式 后缀式的连接 E的后缀
您可能关注的文档
- 线性代数 第章(新).ppt
- 线性代数- n阶行列式的应用.ppt
- 线性代数-习题课.ppt
- 线性代数-线性变换的矩阵表示.ppt
- 线性代数-行列式的展开定理.ppt
- 线性代数方阵的行列式.ppt
- 线性代数第三章第二节向量组的线性相关性例题.ppt
- 线性代数第二章知识要点.ppt
- 线性代数曲线曲面do.ppt
- 线性代数第五章第二节.ppt
- 2024年学校党总支巡察整改专题民主生活会个人对照检查材料3.docx
- 2025年民主生活会个人对照检查发言材料(四个带头).docx
- 县委常委班子2025年专题生活会带头严守政治纪律和政治规矩,维护党的团结统一等“四个带头方面”对照检查材料四个带头:.docx
- 巡察整改专题民主生活会个人对照检查材料5.docx
- 2024年度围绕带头增强党性、严守纪律、砥砺作风方面等“四个方面”自我对照(问题、措施)7.docx
- 2025年度民主生活会领导班子对照检查材料(“四个带头”).docx
- 国企党委书记2025年度民主生活会个人对照检查材料(五个带头).docx
- 带头严守政治纪律和政治规矩,维护党的团结统一等(四个方面)存在的问题整改发言提纲.docx
- 党委书记党组书记2025年带头增强党性、严守纪律、砥砺作风方面等“四个带头”个人对照检查发言材料.docx
- 2025年巡视巡察专题民主生活会对照检查材料.docx
最近下载
- 重庆市两江新区2024-2025学年数学六年级第一学期期末检测试题含解析.doc VIP
- 人教版(2024年新版)七年级上册美术全册教学设计.docx
- Desouttter马头电动装配系统CVI3 系列 CVI3 Controllers CVI3 Vision (6159326910) CVI3 tightening controllers Conf.pdf
- 【MOOC】时间序列分析-中南财经政法大学 中国大学慕课MOOC答案.docx
- 2024-2025学年重庆市六年级数学第一学期期末检测试题含解析.doc VIP
- 高中政治(必修1+必修2)期末测试卷(二)(原卷版).docx VIP
- 高中生物 2023-2024学年安徽省合肥高一(上)期末生物试卷.pdf
- 太阳能光伏产业链垂直一体化构建研究.docx VIP
- SSCI收录管理学种期刊目录.docx
- GB51016-2014 非煤露天矿边坡工程技术规范.pdf
文档评论(0)