Compiler construction 编译器项目理念

Compiler construction 编译器项目理念,compiler-construction,llvm,Compiler Construction,Llvm,我目前正在学习一门研究生级别的编译器课程,我正在寻找一个项目想法和/或一个总体方向。我有6周的时间来完成 我看了这篇文章,但是这些想法已经过时了(这篇文章是从08年开始的) 有人有什么好主意/平台我应该研究吗?课堂作业是使用LLVM完成的,但我愿意使用任何东西。恐怕6周的时间对于完成生产编译器的改进来说是相当短的,特别是如果您还不熟悉LLVM的话。在LLVM中冷启动,并期望在6周内发生任何有趣的事情(除了您将要做的所有精彩学习之外,但这并不像提高编译器的性能/可用性/任何东西那样有趣:-)) 在

我目前正在学习一门研究生级别的编译器课程,我正在寻找一个项目想法和/或一个总体方向。我有6周的时间来完成

我看了这篇文章,但是这些想法已经过时了(这篇文章是从08年开始的)


有人有什么好主意/平台我应该研究吗?课堂作业是使用LLVM完成的,但我愿意使用任何东西。

恐怕6周的时间对于完成生产编译器的改进来说是相当短的,特别是如果您还不熟悉LLVM的话。在LLVM中冷启动,并期望在6周内发生任何有趣的事情(除了您将要做的所有精彩学习之外,但这并不像提高编译器的性能/可用性/任何东西那样有趣:-))

在这里给出答案的另一个警告是:编译器是一个庞大而精彩的主题。它有许多不同的部分,其中许多是完全不同的。如果不知道是什么让你兴奋,就很难给出好的建议。听起来你是在一个学术机构,所以和你的教授交谈当然也是个好主意

话虽如此

一种流行的方法是将LLVM与GCC进行比较,看看GCC做得更好(相信我,尽管LLVM在市场上很受欢迎,但GCC仍然做得更好;-)

例如,如果您喜欢矢量化,LLVM有一个名为
testsuite
的子项目,其中包含许多基准测试程序。其中一个称为
TSVC
,这是一组用于测试矢量化功能的循环。上一次我检查(在去年),GCC在发现减少方面比LLVM做得好得多。即使你不能解决这个问题(我怀疑你会在6周内解决,但让我吃惊!),一篇关于这个问题的文章和一些关于现代机器的最新基准数据也会引起社区的兴趣,也许你自己也会感兴趣

如果你感兴趣的是前端(CLAN),C++的DeViut化是GCC能力的背后。写一篇论文,准确地解释所缺少的东西,以及如何找到它。再说一次,6周是解决这个问题的最佳时间

更重要的是,通过LLVM的bugzilla,你会发现很多小事情可以做的机会。那里有很多低垂的果实。我快速看了一眼,注意到了这一点:

对于新手来说,这在6周内是可行的。通过搜索bug追踪器,你可以找到符合你自己而不是我兴趣的东西

如果你更热衷于研究,那么试着尝试一些新的想法,弄清楚如何利用LLVM来辅助研究。不久前,我浏览了dragon一书的背面(作为学生,我从来没有读过这本书的这一部分),发现了一个非常酷的想法,即使用数据日志来表示别名分析约束。果然,一个快速的网络搜索找到了这个研究项目。所有的源代码都在那里,为什么不用你喜欢的研究思路来运行一些实验呢?如果你大致知道自己的拍摄目的,那么这些东西很容易被发现,这让我感到很惊讶


祝你好运

我一直希望使用一个解析器生成器(现在是一个PEG)并添加一个子树匹配和替换(树重写)语言ala TXL来操作解析树。若您添加代码生成作为规则应用程序的副作用,那个么您可以只使用转换规则编写编译器。