C++ 学习LLVM后端编程的代码示例

C++ 学习LLVM后端编程的代码示例,c++,compiler-construction,llvm,static-analysis,backend,C++,Compiler Construction,Llvm,Static Analysis,Backend,我正在学习编程LLVM后端 目前我对分析过程感兴趣,以后的程序转换。(我假设我的分析能力会更流利,那么是时候进行程序转换了) 你能推荐学习资源吗?(我知道LLVM程序员手册和龙之书;)) 我所说的资源不仅指教程、书籍,还包括特别是写得很好的小项目。我想阅读代码示例,编译它们并使用它们(稍微进行一点黑客攻击),以了解更多有关实际实现的信息 这些代码不必局限于分析部分。本主题一般是LLVM后端编程,而分析和程序转换是最有趣的。所有LLVM转换都在lib/Transforms dir中组织为自包含的过

我正在学习编程LLVM后端

目前我对分析过程感兴趣,以后的程序转换。(我假设我的分析能力会更流利,那么是时候进行程序转换了)

你能推荐学习资源吗?(我知道LLVM程序员手册和龙之书;))

我所说的资源不仅指教程、书籍,还包括特别是写得很好的小项目。我想阅读代码示例,编译它们并使用它们(稍微进行一点黑客攻击),以了解更多有关实际实现的信息


这些代码不必局限于分析部分。本主题一般是LLVM后端编程,而分析和程序转换是最有趣的。

所有LLVM转换都在lib/Transforms dir中组织为自包含的过程,您可以使用
opt
工具读取其源代码并在代码上运行任意过程

此外,还有一个很好的教程,介绍如何编写自己的过程,并将其用作可加载模块,而无需重新编译整个LLVM


所以这里已经有了相当广阔的游乐场。

作为一个三年前做了你想做的事情的人: LLVM代码库有最好的例子。 也许一个好的起点是支配分析,正如编译器书籍中所描述的那样

检查如何在LLVM中执行此操作:


另一个地方可能是指令调度

我正在寻找类似的东西,使用llvm库的代码,在google上进行了长时间的会话后,我在llvm网站的“llvm项目”下找到了它:


只需下载您认为与您相关的内容,然后继续玩。

我询问的不仅仅是文档本身和llvm源代码。特别是我写过一些小的(甚至是黑客LLVM的玩具例子)项目。我强调了关于的知识,其中包括:关于三年内的源代码外编程。。。有很多文档,你们可以对这个项目有很好的总体看法。尽管如此,在很多方面文档都很糟糕,所以还有更多的问题。正如您提到的文档和“不重新编译整个LLVM”,我想让您知道如何从源代码树中传递:好吧,好吧,很抱歉给出了不相关的答案。至于开发树外通道,这个特性实际上是由我开发的,哈哈。酷男:)。太好了,你做到了。对不起,对于否决票,你的回答是“还可以”,但正如你所看到的,这是不相关的。我担心,投票后会有许多其他不相关的答案。正如您所看到的,“只收集”链接并不是主题的重点。谷歌、git hub等给出了结果;)。更多的是选择正确的、有教育意义的、好的学习曲线、小的、有代表性的例子。不是吗?:)我知道我们可以从LLVM源代码中学习,但是好的可以帮助阅读这些源代码并传播最佳实践。所有最好的@arrowdogerno问题。一些人在问之前就做谷歌搜索,所以我的这些显而易见的问题对他们来说非常有用。稍微切线:使用页面,可以要求生成产生IR的等效LLVM C++ API源。在寻找特定的翻译时,它可能会有帮助(或没有帮助)。