- 1、本文档共47页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
如:语句 x := y ** 2 中的乘方运算,通常需要调用一个函数来实现。可以用代数上等价的形式,用简单的运算 x := y * y 替换。 对基本块中求值的表达式,用代数上等价的形式替换,以期使复杂运算变成简单运算。我们称这种变换为代数变换。 4. 代数变换 每个流图以基本块为结点。 如果一个结点的基本块的人口语句是程序的第一条语句,则称此结点为首结点。 通过构造一个有向图,称之为流图,我们可以将控制流的信息增加到基本块的集合上来表示一个程序。 1. 概念 2. 构造流图示例 (1) read X (2) read Y B1 (3) R := X mod Y (4) if R=0 goto(8) B2 (5) X := Y (6) Y := R (7) goto (3) B3 (8) write Y (9) halt B4 DAG (Directed Acyclic Graph)无环路有向图 一个基本块的DAG是一种其结点带有下述标记或附加信息的DAG 1. 概念 1. 叶结点——值 3. 多标记共享 2.其他结点——运算 图的叶结点以一标识符(变量名)或常数作为标记,表示该结点代表该变量或常数的值。 如果叶结点用来代表某变量A的地址,则用addr(A)作为该结点的标记 内部结点以一运算符作为标记,表示该结点代表应用该运算符对其后继结点所代表的值进行运算的结果 图中各个结点上可能附加一个或多个标识符,表示这些变量具有该结点所代表的值 2. 构造基本块的DAG的算法 1. 叶结点生成 代码类型判断 3.查找、处理公共子表达式 单目运算(3(1))双目运算(3(2)) 2.常数参数与非常数参数的判断(2(1)单目、2(2)双目)合并已知量(2(3)单目、2(4)双目) 4.赋值号处理 3. 构造基本块的DAG的算法流程 初 始 化 生 成 B 0 1 生成C B是常数 2 B不是常数 寻找公共 子表达式 B、C都是常数 B或者C不是常数 合并已知量 生成新常数P 处理赋值号 处理A 合并已知量 生成新常数P 寻找公共 子表达式 n1 3.14 T0 T0 := 3.14 T1 := 2 * T0 T2 := R + r A := T1 * T2 B := A T3 := 2 * T0 T4 := R + r T5 := T3 * T4 T6 := R – r B := T5 * T6 文法G NODE(3.14)无定义,构造一个标记为3.14的结点 当前代码为0型,记NODE(3.14)的值为n1,转4 T0 := 3.14 NODE(T0)无定义,将T0附加在结点n1上 令NODE(T0) = n1,转处理下一条代码 T1 := 2 * T0 NODE(2)无定义,构造一个标记为2的结点 当前代码为2型,NODE(T0)已定义,转2(2) NODE(2) 和NODE(T0)均已定义,转2(4) 执行 2 * T0 ,新得到常数6.28 ,NODE(2) 是处理当前代码时新构造出来的,删除之,NODE(6.28)无定义,构造一个标记为6.28的结点n2,置NODE(6.28) = n2,转4 NODE(T1)无定义,将T1附加在结点n2上 令NODE(T1) = n2,转处理下一条代码 n2 2 T1 n2 6.28 T2 := R + r NODE(R)无定义,构造一个标记为R的结点n3,令NODE(R) = n3 当前代码为2型,NODE(r) 无定义, 构造一个标记为r的结点n4,令NODE(r) = n4,转2(2) n3 R n4 r NODE(R) 不是标记为常数的结点,转3(2) DAG中无结点其左后继为NODE(R) ,故构造一个结点n5, 其左后继为NODE(R),右后继为 NODE(r),转4 n5 + NODE(T2)无定义,将T2附加在结点n5上, 令NODE(T2) = n5,转处理下一条代码 T2 A := T1 * T2 NODE(T1)已定义,当前代码为2型, NODE(T2)已定义,转2(2) NODE(T1)不是标记为常数的结点,转3(2) DAG中无结点其左后继为NODE(T1),故构造结点n6, 其左后继为NODE(T1),右后继为NODE(T2),转4 n6 * NODE(A)无定义,将A附加到结点n6上, 令NODE(A) = n6,转处理下一条代码 A B := A NODE(A)已定义,当前代码为0型,转4 NODE(B)无定义,将B附加到结点n6上, 令NODE(B) = n6,转处理下一条代码 T3 := 2 * T0 NODE(2)无定义,构造一个标记为2的结点n7, 令NODE(2) = n7 n7 2 当前代码为2型,
您可能关注的文档
- 石河子大学水利建筑工程学院房地产开发与投资分析课件第八章 房地产开发合同.ppt
- 石河子大学水利建筑工程学院房地产开发与投资分析课件第二章 房地产开发项目可行性研究.ppt
- 石河子大学水利建筑工程学院房地产开发与投资分析课件第九章 房地产开发项目的工程建设管理.ppt
- 石河子大学水利建筑工程学院房地产开发与投资分析课件第六章 房地产开发项目规划设计及其评价.ppt
- 石河子大学水利建筑工程学院房地产开发与投资分析课件第七章 房地产开发工程招标与投标.ppt
- 石河子大学水利建筑工程学院房地产开发与投资分析课件第三章 房地产开发用地的取得.ppt
- 石河子大学水利建筑工程学院房地产开发与投资分析课件第十二章 物业管理.ppt
- 石河子大学水利建筑工程学院房地产开发与投资分析课件第十三章 房地产开发项目策划.ppt
- 石河子大学水利建筑工程学院房地产开发与投资分析课件第十一章 房地产销售.ppt
- 石河子大学水利建筑工程学院房地产开发与投资分析课件第十章 房地产开发项目市场推广.ppt
- [专精特新]金华永和氟化工有限公司行业竞争力评级分析报告(2023版).pdf
- [专精特新]重庆升光电力印务有限公司行业竞争力评级分析报告(2023版).pdf
- [专精特新]无锡巨力重工股份有限公司行业竞争力评级分析报告(2023版).pdf
- [专精特新]江西凯安新材料集团股份有限公司行业竞争力评级分析报告(2023版).pdf
- [专精特新]浙江永昌电气股份有限公司行业竞争力评级分析报告(2023版).pdf
- [专精特新]苏州中创铝业有限公司行业竞争力评级分析报告(2023版).pdf
- [专精特新]杭州汽轮铸锻有限公司行业竞争力评级分析报告(2023版).pdf
- [专精特新]浙江美声智能系统有限公司行业竞争力评级分析报告(2023版).pdf
- [专精特新]汕头市虹桥包装实业有限公司行业竞争力评级分析报告(2023版).pdf
- [专精特新]江西亚中电子科技股份有限公司行业竞争力评级分析报告(2023版).pdf
文档评论(0)