LLVM最大的好处是什么?
有没有人有LLVM , llvm-gcc或Clang的经验 ?
llvm背后的整个想法对我来说似乎非常有趣,而且我很感兴趣看到它的performance。 如果这些工具还没有准备好生产,我只是不想把很多时间花在试用这些工具上。
如果你有这些工具的经验,你觉得他们怎么样? 你遇到什么主要的限制? 什么是最大的好处?
非常感谢!
我已经和LLVM进行了初步的摸索,通过本教程的工作使我非常兴奋, 我可以用它来构build一个JIT到一个相对容易的应用程序的想法让我兴奋。
我还没有深入到能够就其局限性,稳定性,performance等提供任何有用的意见。 我明白这一切都很好,但这纯粹是传闻。
我无法说LLVM的好处。 与我所看过的其他编译器项目相比,它的工作非常简单。 我不是一个编译器的人,但是当我对LLVM或clang的某些限制感到沮丧的时候,通常很容易进入并改变它。
我们(Nate Begeman,我自己和其他一些人)编写了PPC后端,并没有真正的编译器devise经验,但看起来很简单,非专家可以接近它。 我们对PPC的组装非常熟悉,但是在我们的业余时间里,我们设法得到LLVM-gcc输出PPC代码,这仍然是相当不可思议的。 绝对是我所编写的最令人满意的Hello World之一。
现在我已经玩LLVM了好几个月了。 我写了两篇OCaml期刊文章,介绍了OCaml编程语言中LLVM的使用。 这是特别有趣的,因为OCaml语言非常适合编写编译器,并且具有丰富的function强大和成熟的parsing工具和库等。
总的来说,我的经历非常积极。 LLVM在锡上说的是非常容易使用的。 生成的代码的性能非常好。 我写的一个程序是一个简单的Brainf * ck编译器,它可以生成我testing过的任何编译器(包括GCC)的一些最快的可执行文件。
我只有两个LLVM的抱怨。 首先,它使用abort(),每当出现任何错误,而不是引发exception。 这是一个由作者努力去除LLVM的所有exception使用的故意的devise决定,但是当试图debugging使用LLVM的编译器时,它不可能从OCaml回溯:你的程序只是由LLVM的文本解释而死但没有线索你的来源发生错误的地方。 其次,LLVM编译的库很大(20Mb)。 我认为这是由于C ++引起的膨胀,但是它使得编译非常缓慢。
编辑:我在LLVM上的工作最终创造了一个高性能的高级垃圾收集虚拟机。 在这里免费下载,并检查出相应的基准 (哇!)。 @Alex:我会尽快为你在某处findBF编译器。
你问了一些工具,我想提一下Eclipse CDT的LLVM插件(适用于Windows,Linux和Mac)。 它将LLVM很好地集成到IDE中,用户不需要知道关于LLVM的任何信息。 按生成button就足以生成.bc和可执行文件(以及用户不可见的背景上的中间文件)。
最新版本可通过官方Eclipse更新站点获得: http : //download.eclipse.org/releases/mars
它在编程语言下,被命名为“C / C ++ LLVM-Family编译器生成支持”。