【发布时间】:2012-02-10 04:23:06
【问题描述】:
J.M. Siskind's research statement 状态:
Stalin 是一个针对 Scheme 的优化编译器,它执行整个程序的静态分析,并使用该分析的结果来生成极其高效的代码。斯大林使用了大量的静态分析技术。它执行一种新形式的多变量流分析,该分析使用迭代的单变量流分析来执行流导向的拆分:克隆过程的专门副本以及将目标分配给此类克隆的每个调用站点。它使用流分析的结果来执行寿命分析、逃逸分析、指向分析和必须别名分析。这些分析支持一种新颖的轻量级闭包转换形式,它使用变量全球化和本地化等技术消除了大多数闭包槽,压缩了静态回链,并且通常从程序中消除了大多数闭包。它还使用上述分析来支持基于流的基于区域的存储管理,其中运行时垃圾收集被基于每个抽象值和每个程序点的静态分配和释放所取代。它还使用 Screamer 开创的技术的扩展来执行流导向的轻量级 CPS 转换,以支持极其高效的一流延续。最后,它支持流向内联和低级表示选择,以在每个抽象值和每个程序点的基础上选择标签的实现(或非实现)、标签检查和标签调度。这消除了程序中的大多数运行时标记、标记检查、标记、标记剥离、标记调度、装箱和拆箱。 这些分析和优化使斯大林能够生成极其高效的代码,其性能优于所有其他 Scheme 编译器 2 到 100 倍,尤其是对于数值密集型代码。斯大林生成的代码通常优于手写的 c 和 Fortran 代码。
我能够找到以下关于闭包/函数调用实现的非常有趣的论文:Flow-Directed Lightweight Closure Conversion。我还给作者发了邮件询问关于其他主题的论文,这些论文提到要写在闭包转换论文中:
西斯金德,J. M. 2000a。流导向的轻量级 CPS 转换。正在准备中。
西斯金德,J. M. 2000b。流向多变。正在准备中。
西斯金德,J. M. 2000c。流向表示选择。正在准备中。
西斯金德,J. M. 2000d。流导向的存储管理。准备中
不幸的是,他一直没有时间写那些论文。我的问题是:是否有涵盖这些主题的替代或相关论文?我非常有兴趣了解斯大林(或其他编译器)如何编译像 Scheme 这样的高级语言,它是垃圾收集、动态类型、支持一流函数,甚至一流延续,可以静态编译成如此高效的代码.
【问题讨论】:
-
我想知道,为什么这里的票数接近?
-
我考虑将其发布到 ctheory,但最终决定不这样做,因为 ctheory 通常更侧重于理论。此外,编译器问题在那里并不常见(编译器标签下有 10 个问题,其中一些问题已关闭为题外话)。虽然如果大家一致认为这个问题更适合 cstheory,那么我很乐意将它移到那里。
-
@derobert:好吧,我不太明白为什么程序员.SE。至少 cstheory 似乎更适合... 如果不是这样。
-
@Jules - 受欢迎程度不是衡量帖子是否符合主题的标准。代码在哪里?您在这里遇到什么问题?
-
@ChrisF:对于一个由社区运行的网站,流行度应该是主题帖子的唯一衡量标准。
标签: compiler-construction compilation scheme computer-science