2015-11-04 114 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。所有的源代碼都在那裏,爲什麼不用一個你喜歡的研究想法來運行一些經驗?如果你大概知道你要拍攝什麼,我覺得這個東西很容易被發現,這真是太神奇了。

祝你好運!