2015-11-04 153 views
1

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

我看着这post但这些想法是相当过时(帖子是从'08)。

有人有什么好的想法/平台我应该看看?班级任务使用LLVM完成,但我愿意使用任何东西。

+0

我一直想带一个解析器生成器(这些天,一个PEG),并添加一个子树匹配和替换(树重写)语言ala TXL来操作分析树。如果您将代码生成添加为规则应用程序的副作用,那么您可以编写一个只使用转换规则的编译器。 – cliffordheath

回答

1

我担心,6周是完成生产编译器改进的很短时间,尤其是如果您还不熟悉LLVM。在LLVM中冷启动并期待6周内发生任何有趣的事情(除了所有的精彩学习你会做,但这并不像提高性能/可用性/编译器的任何外部有趣之处:-))

在此给出一个答案的另一个警告:编译器是一个巨大的精彩主题。它有很多不同的部分,其中许多是完全不同的。如果不知道你的果汁是否流淌,很难提出好的建议。这听起来像你在学术机构,所以和你的教授交谈肯定是一个好主意。

虽这么说......

找到事做的一种流行的方法是用GCC比较LLVM,看看GCC也更好(相信我,尽管LLVM的营销,还有很多事情GCC仍然更好;-))

例如,如果您正在进行矢量化,LLVM会有一个名为test-suite的子项目,其中包含许多基准程序。其中之一称为TSVC,它是一组用于测试矢量化功能的循环。最后我检查了(在去年),海湾合作委员会在寻找减少量方面做得比LLVM好得多。即使你没有解决这个问题(我怀疑你会在6周内,但让我惊讶!),写一个关于现代机器的问题和一些最新的基准数据将是社区,也许你自己感兴趣的。

如果您对前端(Clang)感兴趣,则C++ devirutalization是GCC功能的后盾。写一篇文章,解释什么是缺乏,以及如何接近。再次,6个星期是解决这个问题的时间。

稍微多一点元注意,拖网通过LLVM的bugzilla会告诉你很多的小事情的机会。有许多低垂的果实。我有一个非常快看,发现这一个:

clang should optimize common patterns to portably read big/little-endian data

这是在6个星期的新手可行的。通过拖曳错误跟踪器,您可以找到符合您自己的兴趣而不是我的兴趣的东西。

如果您更深入研究,那么尝试玩一些新的想法,并弄清LLVM如何被用来协助研究它。我前段时间浏览龙书的背页(我从来没有设法读过本书的那部分作为学生),并发现了使用Datalog表达别名分析约束的非常酷的想法。果然,一个快速的网络搜索发现这个研究项目llmv-datalog on GitHub。所有的源代码都在那里,为什么不用一个你喜欢的研究想法来运行一些经验?如果你大概知道你要拍摄什么,我觉得这个东西很容易被发现,这真是太神奇了。

祝你好运!