文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> 资讯>LLVM 2.8 发布

LLVM 2.8 发布

时间:2010-10-16  来源:cnblogs

  LLVM团队昨日发布了LLVM 2.8,包括下一代C/C++编译器、优化器和运行时的低级虚拟机基础架构。

  LLVM实际上是一群项目的集合,能够支持C、Objective-C和C++的编译。编译本身是由Clang来完成的,它早就可以编译C和Objective-C了。在LLVM 2.7时引入了对C++的支持,而后2.8的发布则是对C++规范的支持的更为完整,新增的libc++让C++应用得以使用标准库。全新的调试器LLDB也包含其中,它应用和编译器相同的解析器和源代码工具,目的是为了替代旧有的gdb调试器。尽管LLDB早前已经可以下载使用了,这次LLVM 2.8中的LLDB却是其首次正式发布。

  和基于GPL授权的单一编译器GCC不同的是,LLVM工具族更为模块化。而且得益于更为宽松的BSD授权,LLVM可以嵌入在商业工具中。因此,像苹果的Xcode这样的应用,在Clang的支持下能够比外部gcc应用的性能更好。不仅如此,工具生成的AST还可以由所包含的工具进行自省,这给予了IDE更为强大的能力,来了解源代码的相关结构和编译码。

  另外,模块化的架构使得Clang的静态分析器可以纵观源代码并指出潜在的bug,比如Klee,它是一个符号化虚拟机,可以在一个程序之中给出事件发生的次序。Klee的特性之一便是通过事件寻找bug,它能够通过编程生成一个测试用例,而这个用例便可以用来演示bug被修正后的状态变化。

  不仅是C语言

  最终,LLVM项目不仅是面向C或基于C的语言。因为前端解析器其实是符号化指令集,这种指令集实质上是一组可移植的汇编码,能够翻译到任何支持的机器架构之上。这使得构建其他的解析器和翻译器成为可能,只需生成相同的汇编码,便可支持所有LLVM族支持的平台。

  不仅如此,优化的工作可以深入到汇编码级别,而非仅是在源代码级别,因此任何能够翻译成LLVM IR的语言都能够自然而然地享受到运行时优化的好处。运行时可以直接解释IR,所以解释型语言也可以受益于此,根据接下来对JIT的调用来优化应用对应的部分。

  目前VMKit已经在这样做了,它提供了JVM和CLR的通用运行时,其他语言运行时也有所涉及。Mono运行时现在已经发布了2.8版本,包含了对LLVM的支持,将其作为JIT(使用mono-llvm)来辅助运行时优化。其他运行时包括Ruby on LLVM、MacRuby和Unladen Swallow等。甚至在Clam AV内部也用到了它,来实现高效的病毒扫描。

  你可以通过试用基于web的演示,来观察代码是如何编译成LLVM IR的,或通过查看LLVM博客文档来获取更多的信息。

  查看英文原文:LLVM 2.8 Released

  作者 Alex Blewitt 译者 李明(nasi)


  

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载