×

消除公共子表达式的高阶策略。 (英语) Zbl 1387.68056号

摘要:优化编译器通常会执行一种称为公共子表达式消除的操作,以提高代码效率。通常,这可以通过剪枝有向非循环图来完成,以通过存储值的内存获取来替换删除的子表达式,也可以通过使用部分冗余消除(一种数据流分析方法)来完成。本文提出了一种高阶策略方法,利用lambda演算中的等价性重写表达式树以消除公共子表达式。这种方法有几个优点——它很直观,可以在高级重写系统中定义和应用转换,并且它使用的转换可以证明正确性保持。

MSC公司:

68甲15 编程语言理论
68甲18 函数编程和lambda演算
第68页第20页 编译与解释理论
2012年第68季度 语法和重写系统

软件:

汤姆
PDF格式BibTeX公司 XML格式引用
全文: 内政部

参考文献:

[1] Aho,A.V。;Lam,M.S。;Sethi,R.等人。;Ullman,J.D.,《编译器、原理、技术和工具》(2007),培生艾迪生-维斯利出版社·Zbl 1429.68002号
[2] 莫雷尔,E。;Renvoise,C.,通过抑制部分冗余进行全局优化,ACM通信,22,2,96-103(1979)·Zbl 0393.68010号
[3] Muchnick,S.S.,《高级编译器设计与实现》(1997),Morgan Kaufmann:Morgan Koufmann Los Altos,CA
[4] Lämmel R、Visser E、VisserJ。战略规划的本质,草案;在\(\langle;\)上提供http://homepages.cwi.nl/ralf/eosp\(\rangle;\);Lämmel R、Visser E、VisserJ。战略规划的本质,草案;在\(\langle;\)上提供http://homepages.cwi.nl/ralf/eosp\(\rangle;\)
[5] Boyle,J.M。;雷斯勒,R.D。;温特,V.L.,你相信你的编译器吗?,IEEE计算机,32,5,65-73(1999)
[6] Boyle,J.M。;Resler,R.D.,消除公共子表达式的程序代数方法,Informatica,24,3,397-408(2000)·Zbl 0968.68036号
[7] 维瑟,E。;Benaissa,Z.e.A。;Tolmach,A.,《用重写策略构建程序优化器》(ICFP’98:第三届ACM SIGPLAN函数式编程国际会议(1998),ACM出版社),13-26·Zbl 1369.68084号
[8] Winter V.TL高阶框架中的策略构建。in:RULE’04:第五届基于规则的编程国际研讨会,德国亚琛,理论计算机科学电子笔记,第124卷,第1期。阿姆斯特丹:爱思唯尔科学;2004年,第149-70页。;Winter V.TL高阶框架中的策略构建。in:RULE’04:第五届基于规则的编程国际研讨会,德国亚琛,理论计算机科学电子笔记,第124卷,第1期。阿姆斯特丹:爱思唯尔科学;2004年,第149-70页。
[9] 冬季,V。;Subramaniam,M.,《瞬态组合子、高阶策略和分布式数据问题》,《计算机编程科学》,52165-212(2004)·Zbl 1091.68544号
[10] Winter V、Roach S、Fraij F.《高阶战略编程:软件保证之路》。摘自:SEA'04:第八届IASTED软件工程和应用国际会议,2004年。;Winter V、Roach S、Fraij F.《高阶战略编程:软件保证之路》。摘自:SEA'04:2004年第八届IASTED软件工程和应用国际会议。
[11] Wickstrom GL、Davis J、Morrison SE、Roach S、Winter VL。SSP:高保证系统工程的一个例子。在:HASE'04:第八届IEEE高保证系统工程国际研讨会论文集。Silver Spring,MD:IEEE;2004年,第167-77页。;Wickstrom GL、Davis J、Morrison SE、Roach S、Winter VL。SSP:高保证系统工程的一个实例。摘自:HASE’04:第八届IEEE高保证系统工程学国际研讨会论文集。Silver Spring,MD:IEEE;2004年,第167-77页。
[12] Stepney S.高完整性编译器的增量开发:来自工业开发的经验。参加:HASE’98:第三届IEEE高保证系统工程国际研讨会。美国华盛顿特区:IEEE计算机学会;1998年,第142-49页。;Stepney S.高完整性编译器的增量开发:来自工业开发的经验。参加:HASE’98:第三届IEEE高保证系统工程国际研讨会。美国华盛顿特区:IEEE计算机学会;1998年,第142-49页。
[13] Stepney S.The DeCCo项目论文V编译器正确性证明,技术报告,YCS-2002-362,约克大学,2003。;Stepney S.The DeCCo项目论文V编译器正确性证明,技术报告,YCS-2002-362,约克大学,2003年。
[14] 莱西,D。;琼斯,N。;Van Wyk,E。;Frederiksen,C.,《基于时序逻辑的编译器优化正确性,高阶和符号计算》,17,3,173-206(2004)·Zbl 1075.68015号
[15] Frederiksen,C.C.,使用CTL的经典编译器优化的正确性,(Knoop,J.;Zimmermann,W.,COCV’02:编译器优化符合编译器验证(ETAPS 2002卫星事件),理论计算机科学电子笔记,第65卷(2002),爱思唯尔科学:爱思唯尔科学阿姆斯特丹),37-51
[16] Knoop,J。;鲁兴,欧。;Steffen,B.,懒惰代码运动,SIGPLAN通知,27,7,224-234(1992)
[17] Jones SP、Partain W、Santos A.Let-floating:移动绑定以提供更快的程序。In:ICFP’96:第一届ACM SIGPLAN函数编程国际会议记录。美国纽约州纽约市:ACM;1996年,第1-12页。;Jones SP、Partain W、Santos A.Let-floating:移动绑定以提供更快的程序。In:ICFP’96:第一届ACM SIGPLAN函数编程国际会议记录。美国纽约州纽约市:ACM;1996年,第1-12页。
[18] 佩顿·琼斯,S.L。;Santos,A.L.M.,Haskell基于转换的优化程序,《计算机编程科学》,32,1-3,3-47(1998)·Zbl 0942.68030号
[19] Appel,A.W.,《继续编译》(1992),剑桥大学出版社:剑桥大学出版社,美国纽约州纽约市
[20] 阿佩尔·A·W。;Jim,T.,《线性时间内收缩lambda表达式》,《函数编程杂志》,7,5,515-540(1997)·Zbl 0893.68021号
[21] Lacey D,de Moor O。通过重写进行强制程序转换。作者:Wilhelm R,编辑,CC'01:第十届编译器建设国际会议论文集。计算机科学课堂讲稿,第2027卷。柏林:施普林格;2001年,第52-68页。;Lacey D,de Moor O。通过重写进行强制程序转换。摘自:Wilhelm R,编辑,CC'01:第十届编译器构造国际会议记录。计算机科学课堂讲稿,第2027卷。柏林:施普林格;2001年,第52-68页·Zbl 0977.68675号
[22] Visser E.Stratego:一种基于重写策略的程序转换语言。收录于:RTA 2001:第12届改写技术和应用会议记录。计算机科学课堂讲稿,第2051卷。柏林:施普林格;2001年,第357-61页。;Visser E.Stratego:一种基于重写策略的程序转换语言。收录于:RTA 2001:第12届改写技术和应用会议记录。计算机科学课堂讲稿,第2051卷。柏林:施普林格;2001年,第357-61页·Zbl 0981.68679号
[23] Stratego的Visser E.老虎http://www.program-transformation.org/Tiger/WebHome网站\(\rangle;\);Stratego的Visser E.老虎http://www.program-transformation.org/Tiger/WebHome网站\(\rangle;\)
[24] Olmos K,Visser E.使用重写策略和相关的动态重写规则编写源到源数据流转换。技术报告,UU-CS-2005-006。乌得勒支大学信息与计算科学研究所,2005年6月。;Olmos K,Visser E.使用重写策略和相关的动态重写规则编写源到源数据流转换。技术报告,UU-CS-2005-006。乌得勒支大学信息与计算科学研究所,2005年6月。
[25] Sethi,R.,完全寄存器分配问题,SIAM计算杂志,4,3,226-248(1975)·Zbl 0327.68042号
[26] 布鲁诺,J。;Sethi,R.,单寄存器机器的代码生成,ACM杂志,23,3,502-510(1976)·兹比尔0335.68020
[27] Appel,A.W.,SSA是功能编程,ACM SIGPLAN Notices,33,4,17-20(1998)
[28] Cytron,R。;费兰特,J。;罗森,B.K。;韦格曼,M.N。;Zadeck,F.K.,《高效计算静态单一赋值形式和控制依赖图》,《ACM编程语言和系统事务》,13,4,451-490(1991)
[29] 库珀,K.D。;Torczon,L.,工程编译器(2004),Morgan Kaufmann:Morgan Koufmann Los Altos,CA
[30] Barendregt,H.P.,lambda calculus-its syntax and semantics(1981),North-Holland Publishing Company出版社·Zbl 0467.03010号
[31] Winter V,Beranek J.使用HATS 1.84进行程序转换。收录人:Lämmel R,Saraiva J,Visser J,编辑。GTTSE'05:软件工程中的生成和转换技术,国际暑期学校,葡萄牙布拉加,2005年7月4日至8日。计算机科学课堂讲稿,第4143卷。柏林:施普林格;2006年,第378-96页。;Winter V,Beranek J.使用HATS 1.84进行程序转换。收录人:Lämmel R,Saraiva J,Visser J,编辑。GTTSE’05:软件工程中的生成和转换技术,葡萄牙布拉加国际暑期学校,2005年7月4-8日。计算机科学课堂讲稿,第4143卷。柏林:施普林格;2006年,第378-96页。
[32] Tomita,M.,《一种高效的增强型无文本解析算法》,计算语言学,13,1-2,31-46(1987)
[33] Winter VL、Scalzo C、Jain A、Kucera B、Mametjanov A。对生成技术的理解。In:STS’06:软件转换系统研讨会,2006年。;Winter VL、Scalzo C、Jain A、Kucera B、Mametjanov A。对生成技术的理解。摘自:2006年STS:软件转换系统研讨会。
[34] Cirstea H,Kirchner C.重写演算简介。研究报告RR-3818,INRIA,1999年12月网址:http://www.inria.fr/rrrt/rr-3818.html\(\rangle;\);Cirstea H,Kirchner C.重写演算简介。研究报告RR-3818,INRIA,1999年12月http://www.inria.fr/rrrt/rr-3818.html\(\rangle;\)·Zbl 0986.03026号
[35] Lämmel R,Visser J.泛型遍历的类型组合子。在:PADL'02:声明式编程的实用方面。第四届国际研讨会论文集,俄勒冈州波特兰,美国,2002年1月19日至20日。计算机科学课堂讲稿,第2257卷。柏林:施普林格;2002年,第137-54页。;Lämmel R,Visser J.泛型遍历的类型组合子。在:PADL'02:声明式编程的实用方面。第四届国际研讨会论文集,俄勒冈州波特兰,美国,2002年1月19日至20日。计算机科学课堂讲稿,第2257卷。柏林:施普林格;2002年,第137-54页。
[36] 冬季VL。基于堆栈的战略控制。收录于:WRS’07:2007年第七届改写和编程中的简化策略国际研讨会预编。;冬季VL。基于堆栈的战略控制。收录于:WRS’07:2007年第七届改写和编程简化策略国际研讨会预告。
[37] Bravenboer M、van Dam A、Olmos K、Visser E.使用范围动态重写规则进行程序转换。《技术报告》,UU-CS-2005-005,乌得勒支大学信息与计算科学研究所,2005年。;Bravenboer M、van Dam A、Olmos K、Visser E.使用范围动态重写规则进行程序转换。技术报告,UU-CS-2005-005,乌得勒支大学信息与计算科学研究所,2005年·Zbl 1097.68540号
[38] Balland E、Brauner P、Kopetz R、Moreau P-E、Reilles A.TOM:java上的背负式重写。收录:RTA 2007:第18届改写技术和应用会议记录。计算机科学课堂讲稿,第4533卷。柏林:施普林格;2007年,第36-47页。;Balland E、Brauner P、Kopetz R、Moreau P-E、Reilles A.TOM:java上的背负式重写。收录:RTA 2007:第18届改写技术和应用会议记录。计算机科学课堂讲稿,第4533卷。柏林:施普林格;2007年,第36-47页。
[39] Balland E、Moreau P-E、Reilles A.TOM中的字节码重写。BYTECODE’07:字节码语义、验证、分析和转换第二次研讨会。理论计算机科学电子笔记,第190卷,第1期。荷兰阿姆斯特丹:爱思唯尔科学;2007年,第19-33页。;Balland E、Moreau P-E、Reilles A.TOM中的字节码重写。BYTECODE’07:字节码语义、验证、分析和转换第二次研讨会。理论计算机科学电子笔记,第190卷,第1期。荷兰阿姆斯特丹:爱思唯尔科学;2007年,第19-33页。
[40] Kniesel G.条件程序转换的逻辑基础。《技术报告》,IAI-TR-2006-1,波恩大学计算机科学第三系,2006年1月。;Kniesel G.条件程序转换的逻辑基础。《技术报告》,IAI-TR-2006-1,波恩大学计算机科学第三系,2006年1月。
[41] Morgenthaler博士。软件转换工具的静态分析。加州大学圣地亚哥分校计算机科学与工程系博士论文,技术报告,CS97-5521997。;Morgenthaler博士。软件转换工具的静态分析。加州大学圣地亚哥分校计算机科学与工程系博士论文,技术报告,CS97-5521997。
[42] Schwartz N.避开三元组:直接从C程序中的抽象语法树导出控制流图。技术报告,TR1998-766,纽约大学计算机科学系,1998年6月。;Schwartz N.避开三元组:直接从C程序中的抽象语法树导出控制流图。技术报告,TR1998-766,纽约大学计算机科学系,1998年6月。
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。