- 1、本文档共109页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
7.3 基本块的DAG表示 DAG(Directed Acyclic Graph)是一种有向图,常常用来对基本块进行优化。一个基本块的DAG是一种其结点带有下述标记或附加信息的DAG: (1) 图的叶结点(无后继的结点)以一标识符(变量名)或常数作为标记,表示该结点代表该变量或常数的值。如果叶结点用来表示一变量A的地址,则用addr(A)作为该结点的标记。通常把叶结点上作为标记的标识符加上下标0,以表示它是该变量的初值。 (2) 图的内部结点(有后继的结点)以一运算符作为标记,表示该结点代表应用该运算符对其直接后继结点所代表的值进行运算的结果。 (3) 图中各个结点上可能附加一个或多个标识符,表示这些变量具有该结点所代表的值。 一个基本块由一个四元式序列组成,且每一个四元式都可以用相应的DAG结点表示。图7–1给出了不同四元式和与其对应的DAG结点形式。图中,各结点圆圈中的ni是构造DAG过程中各结点的编号,而各结点下面的符号(运算符、标识符或常数)是各结点的标记,各结点右边的标识符是结点上的附加标识符。除了对应转移语句的结点右边可附加一语句位置来指示转移目标外,其余各类结点的右边只允许附加标识符。除对应于数组元素赋值的结点(标记为[ ]=)有三个后继外,其余结点最多只有两个后继。 利用DAG进行基本块优化的基本思想是:首先按基本块内的四元式序列顺序将所有的四元式构造成一个DAG,然后按构造结点的次序将DAG还原成四元式序列。由于在构造DAG的同时已作了局部优化,所以最后所得到的是优化过的四元式序列。 为了DAG构造算法的需要,我们将图7–1中的四元式按照其对应结点的后继结点个数分为四类: (1) 0型四元式:后继结点个数为0,如图7–1(1)所示; (2) 1型四元式:有一个后继结点,如图7–1(2)所示; (3) 2型四元式:有两个后继结点,如图7–1(3)、(4)、(5)所示; (4) ?3型四元式:有三个后继结点,如图7–1(6)所示。 我们规定:用大写字母(如A、B等)表示四元式中的变量名(或常数);用函数Node(A)表示A在DAG中的相应结点,其值可为n或者无定义,并用n表示DAG中的一个结点值。这样,每个基本块仅含0、1、2型四元式的DAG构造算法如下(对基本块的每一个四元式依次执行该算法): (1) 若Node(B)无定义,则构造一标记为B的叶结点并定义Node(B)为这个结点,然后根据下列情况做不同处理: ① 若当前四元式是0型,则记Node(B)的值为n,转(4)。 ② 若当前四元式是1型,则转(2)①。 ③ 若当前四元式是2型,则: i. 如果Node(C)无定义,则构造一标记为C的叶结点,并定义Node(C)为这个结点;ii. 转(2)②。 (2) ① 若Node(B)是以常数标记的叶结点,则转(2)③,否则转(3)①。② 若Node(B)和Node(C)都是以常数标记的叶结点,则转(2)④,否则转(3)②。③ 执行op B(即合并已知量),令得到的新常数为P。若Node(B)是处理当前四元式时新建立的结点,则删除它;若Node(P)无定义,则构造一用P做标记的叶结点n并置Node(P)= n;转(4)。 ④ 执行B op C(即合并已知量),令得到的新常数为P。若Node(B)或Node(C)是处理当前四元式时新建立的结点,则删除它;若Node(P)无定义,则构造一用P做标记的叶结点n并置Node(P)= n;转(4)。 (3) ① 检查DAG中是否有标记为op且以Node(B)为惟一后继的结点(即查找公共子表达式)。若有,则把已有的结点作为它的结点并设该结点为n;若没有,则构造一个新结点;转(4)。 ② 检查DAG中是否有标记为op且其左后继为Node(B)、右后继为Node(C)的结点(即查找公共子表达式)。若有,则把已有的结点作为它的结点并设该结点为n;若没有,则构造一个新结点;转(4)。 ? (4) 若Node(A)无定义,则把A附加在结点n上并令Node(A)= n;否则,先从Node(A)的附加标识符集中将A删去(注意,若Node(A)是叶结点,则不能将A删去),然后再把A附加到新结点n上,并令Node(A)=n。 [解答] 按照算法顺序处理每一四元式后构造出的DAG如图7–2所示,其中每一子图(1)、(2)、…、(10)分别对应四元式(1)~(10)的DAG构造。 构造过程说明如下: (1) 对应图7–2(
您可能关注的文档
- 第7章飞思卡尔软硬件平台研讨.ppt
- 第7章多元函数积分学316(二重积分计算极坐标)研讨.ppt
- 第7章多元函数积分学216(二重积分计算直角坐标系)研讨.ppt
- 第7章锻压研讨.ppt
- 第7章定时部件研讨.ppt
- 第7章电化学极化研讨.ppt
- 第7章典型液压传动系统研讨.ppt
- 第7章第3课时二元一次不等式(组)的解与简单的线性规划研讨.ppt
- 第7章第2节原电池及电动势研讨.ppt
- 第7章第1讲计算机研讨.ppt
- 2009年湖南省导游考试政策法规模拟试题.docx
- 中小学心理健康危机干预体系的改革与创新.docx
- 重庆凉茶饮料生产线项目可行性研究报告(参考范文).docx
- 2025年乡村生态采摘园跨境电商直播带货模式下的农产品质量安全保障.docx
- 重庆凉茶饮料生产线项目立项报告(模板范文).docx
- 中小学心理危机预警体系建设与优化研究.docx
- 2025年乡村生态采摘园跨境电商直播带货模式下的区域合作发展策略.docx
- 中小学心育课程在学生心理健康中的作用.docx
- 第23课《太空一日》第二课时(教学课件)-七年级语文下册同步备课系列(部编版).pdf
- 2025年乡村生态采摘园跨境电商直播带货市场趋势预测报告.docx
文档评论(0)