- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于dag的基本块优化参考
基于DAG的基本块优化1.实验目的与任务了解基本块的DAG表示及其应用,掌握局部优化的基本方法。2.实验要求设计一个转换程序,把由四元式序列表示的基本块转换为DAG,并在构造DAG的过程中,进行合并已知量、删除无用赋值及删除公共子表达式等局部优化处理。最后再从所得到的DAG出发,按原来生成DAG各个结点的顺序,重建四元式序列形式的基本块。3.实验内容(1)DAG的结点类型只考虑0型、1型和2型,如下表所示。类型四元式DAG结点0型(=,B, ,A) ①AB1型(op,B, ,A)② op①2型(op,B,C,A)(=[ ],B,C,A)(jrop,B,C,A)(2)由基本块构造DAG算法如下:while(基本块中还有未处理过的四元式) {取下一个四元式Q;newleft=newright=0;if(getnode(B)= =NULL){makeleaf(B);newleft=1;} switch(Q的类型){case 0 :n= getnode(B);insertidset(n,A);break;case 1: if(isconsnode(B)){p=calcons(Q.op,B);if(newleft= =1) /* getnode(B)是处理Q时新建结点 */delnode(B);if((n=getnode(p))= =NULL){makeleaf(p);n=getnode(p);}}else{if((n=findnode(Q.op,B))= =NULL)n=makenode(Q.op,B);}insertidset(n,A);break;case 2: if(getnode(C)= =NULL){makeleaf(C);newright=1;}if(isconsnode(B) isconsnode(C)){p=calcons(Q.op,B,C);if(newleft==1) /* getnode(B)是处理Q时新建结点 */delnode(B);if(newright==1) /* getnode(C)是处理Q时新建结点 */delnode(C);if((n=getnode(p))= =NULL){makeleaf(p);n=getnode(p);}}else{if((n=findnode(Q.op,B,C))= =NULL)n=makenode(Q.op,B,C);}insertidset(n,A);break;}}}上述算法中应设置如下的函数:getnode(B):返回B(可以是标记或附加信息)在当前DAG中对应的结点号。makeleaf(B):构造标记为B的叶子结点。isconsnode(B):检查B对应的结点是否为标记为常数的叶子结点。calcons(Q.op,B):计算op B 的值(即合并已知量)。它的另一种调用形式是calcons(Q.op,B,C):计算B op C 的值。delnode(B):删除B(结点的标记)在当前DAG中对应的结点。findnode(Q.op,B):在当前DAG中查找并返回这样的结点:标记为op,后继为getnode(B)(即查找公共子表达式op B)。它的另一种调用形式是findnode (Q.op,B,C) (即查找公共子表达式B op C)。makenode(Q.op,B,C):构造并返回标记为op,左右后继分别为getnode(B)、getnode(C)的内部结点。insertidset(n,A):若getnode(A)=NULL,则把A附加到结点n;否则,若A在getnode(A)的附加标识符集中,且getnode(A)无前驱或虽有前驱但getnode(A) 附加标识符集中符号数大于1,则把A从getnode(A)的附加标识符集中删除(即删除无用赋值)。请实现上述基本块的DAG构造算法,并添加从所得DAG按原来生成DAG各个结点的顺序,重建四元式序列的功能。(3)测试用例用下面的基本块作为输入:(1) T1 = A * B(2) T2 = 3 / 2(3) T3 = T1 ― T2(4) X = T3 (5) C = 5(6) T4 = A * B(7) C = 2(8) T5 = 18 + C(9) T6 = T4 * T5(10) Y = T6基本块的DAG如下:按生成DAG各个结点的顺序,重建四元式序列如下:(1) T1 = A * B(2) T2 = 1.5(3) T3 = T1 ― 1.5(4) X = T3 (5) T4 = T1(6) C = 2(7) T5 = 20(8) T6 = T1 * 20(9) Y = T6Code.txt文件内容T1 = A * BT2 = 3 / 2T3 =
您可能关注的文档
- 四年级语文下册单元三知识点ppt课件.ppt
- 四年级语文下册第三单元《我的调查报告》写作指导ppt课件.ppt
- 四新技术应用总结精选.doc
- 四清导航20152016学年九年级数学上册_第21章 二次函数 专题一 求二次函数的解析式ppt课件 (新版)沪科版.ppt
- 因式分解(二)(第3课时)ppt课件(苏科版七年级下)ppt初中数学.ppt
- 四自由度的工业机器人设计说明书精选.doc
- 团委协同办公系统开题报告软件专业精选.doc
- 团委协同办公系统毕业设计(论文)软件专业精选.doc
- 园林学院教师专业技术岗位量化考核暂行办法_1推荐.doc
- 园林学院教师专业技术岗位量化考核暂行办法_2推荐.doc
原创力文档


文档评论(0)