Lou*_*arg 39
关于LLVM,我不能说足够好的东西.与我看过的其他编译器项目相比,它非常容易使用.我不是编译人员,但是当我对LLVM或clang的某些限制感到沮丧时,通常很容易潜入并改变它.
我们(Nate Begeman,我自己和其他一些人)编写了PPC后端,没有真正的编译器设计经验,但它看起来很简单,非专家可以接近它.我们对PPC组装非常熟悉,但我们仍然非常难以置信,我们在业余时间的几周内设法输出了LLVM-gcc输出PPC代码.绝对是我编译过的最令人满意的Hello World之一.
Jon*_*rop 25
我已经和LLVM一起玩了好几个月了.我写了两篇OCaml期刊文章,涵盖了OCaml编程语言中LLVM的使用.这特别有趣,因为OCaml语言非常适合编写编译器,并且具有丰富的功能强大且成熟的工具和库,用于解析等等.
总的来说,我的经历非常积极.LLVM完成它在锡上所说的内容并且非常易于使用.生成的代码的性能非常出色.我编写的程序之一是一个简单的Brainf*ck编译器,它可以生成我测试的任何编译器(包括GCC)中一些最快的可执行文件.
LLVM只有两个抱怨.首先,它会在出现任何错误时使用abort()而不是引发异常.这是其作者的一个深思熟虑的设计决策,他们正在努力从LLVM中删除所有异常使用,但是当尝试调试使用LLVM的编译器时,它无法从OCaml中获得回溯:您的程序只是因为LLVM的文本解释而死亡但是没有关于源中错误发生位置的线索.其次,LLVM的编译库非常庞大(20Mb).我认为这是由于C++引起的膨胀,但它使编译变得非常缓慢.
编辑:我在LLVM上的工作最终创建了一个高性能的高级垃圾收集虚拟机.免费下载在这里,并检查了相应的基准(哇!).@Alex:我会尽快为你准备好BF编译器.