选择性CPS转换:控制操作与程序优化

0 下载量 64 浏览量 更新于2024-06-17 收藏 533KB PDF 举报
"选择性CPS转换:控制操作,延拓和选择性的程序转化" 本文主要探讨了选择性控制传递风格(CPS)转换的概念,这是一种优化编程语言转换的技术,特别是在处理控制操作如"调用当前延续"和"抛出"时。CPS转换通常用于确保函数的连续传递和一致性,但并非所有函数都需要延拓,只有涉及计算结果的函数才需要。作者拉塞·尼尔森提出了一种选择性的CPS转换方法,旨在只转换那些具有控制效应的部分,而保留直接风格的程序其余部分。 1. 选择性CPS转换 传统的CPS转换会将整个程序转化为CPS形式,即使某些部分并不需要延拓。选择性CPS转换则是基于程序的行为信息,仅转换那些涉及到控制转移的函数和表达式,这样可以避免不必要的复杂性和性能损失。 2. 控制操作和效应 控制操作,如调用当前延续和抛出异常,是程序中的关键控制流构造。这些操作对程序的执行路径有直接影响,因此在转换中需要特别处理。选择性转换考虑这些控制效应,只对它们进行CPS转换,而让其他无控制效应的代码保持原样。 3. 形式化和仿真理论 选择性CPS转换被形式化为非操作语义和M`alaPlotkin的仿真理论。这为转换的正确性和效率提供了数学基础,确保转换后的程序能够正确模拟原始程序的行为。 4. 相关工作 选择性CPS转换的思想并非新颖,之前的研究如Danvy和Hatteryman的工作已经涉及到基于严格性分析的选择性转换,以及基于严格性和非终止性结果的处理。此外,Kim、Yi和Danvy在SML的实现中也应用了类似方法来减少CPS转换的开销,但他们的工作重点是异常处理而非控制操作。 5. 本地CPS转换 Reppy等人的近期工作在直接风格的编译器中引入了局部CPS转换,目的是优化嵌套循环和其他复杂控制结构,这与选择性CPS转换的目的相似,都是为了提高转换效率。 选择性CPS转换是一种有针对性的优化技术,旨在提高程序转换的效率,特别是在处理控制操作时。通过对程序行为的分析,这种转换方法可以智能地决定哪些部分应该转换,从而在保持程序正确性的同时减少不必要的转换开销。