1D.2 LLVM概述

http://llvm.org/


LLVM的项目是一个模块化和可重复使用的编译器和工具链技术的集合。尽管它的名字——LLVM,对于传统的虚拟机来说不太大,但它确实提供了有用的库,可用于构建他们。

LLVM的开始在美国伊利诺斯大学的一个研究项目,与提供一个现代化的,基于SSA的编译策略能够同时支持静态和动态的任意编程语言的编译的目标。从那时起,LLVM的已经成长为一个不同的子项目​​组成的伞形项目,其中有许多是被用来生产的多种商业和开源项目,以及在学术研究中被广泛使​​用。LLVM的项目中的代码授权下的“伊利诺伊大学”BSD风格的许可证。

主要分项工程的LLVM的是:

    
LLVM的核心库提供了一个现代化的源和目标无关的优化代码生成支持许多流行的CPU(以及一些不太常见的!)这些库被称为LLVM的中间表示围绕一个指定的代码代表性内置(“LLVM IR”)。 LLVM的核心库有据可查,并发明自己的语言(或港口现有的编译器)使用LLVM的优化和代码生成的,它是特别容易。

   
Clang是“LLVM本地”的C/C++/Objective C编译器,旨在提供(比GCC如约3倍更快当编译调试配置Objective - C代码)令人惊讶的快速编译,非常有用的错误和警告消息,并以提供一个平台,为建设新的伟大源代码级的工具。锵静态分析器是一个工具,可以自动发现代码中的错误,是一个很好的例子,可以作为一个库来解析的C / C + +代码使用锵前端工具的排序。

    
dragonegg集成LLVM的优化和代码生成器与GCC 4.5解析器。这让LLVM编译的Ada,Fortran和其他语言的GCC编译器前端支持,并获得C锵(如OpenMP)功能不支持。

    
LLDB项目的基础上提供LLVM和锵库提供了极大的本机调试。它采用锵的AST和表达式解析器,LLVM的JIT,LLVM的反汇编等,以便它提供了一个“工程”的经验。它也开辟快速,更高效的内存比在加载符号的GDB。

   
libc++和libc++ ABI项目提供了一个标准的符合性和高性能的C++标准库的实施,包括全力支持的C++ 0X.

    
高度优化的编译器RT项目提供的低级代码生成器,如“__fixunsdfdi”和目标没有一个短期的本地指令序列,以实现一个核心红外线操作时产生的其他调用支持例程实现。

    
vmkit项目实施的Java和。NET LLVM的技术建立的虚拟机。

    
克利项目实现了一个“象征性的虚拟机”,它采用一个定理证明,试图通过程序中的所有动态路径,以评估在努力寻找错误和证明职能的属性。克利的一个主要特点是,它可以产生一个测试用例中的事件,它检测到一个错误。

    
SAFECode项目是为C / C + +程序的内存编译器的安全。仪器运行时检查代码来检测内存在运行时安全错误(如缓冲区溢出)。它可以用来保护软件和安全攻击也可以作为存储安全错误像Valgrind的调试工具使用。

此外LLVM的官方子项目,有各种各样的使用LLVM的各项任务的组成部分的其他项目。通过这些外部项目,您可以使用LLVM编译的Ruby,Python中,Haskell中,Java中,研发,PHP的,纯粹的,Lua中,和其他一些语言。一个LLVM的主要优势在于它的多功能性,灵活性和可重用性,这是为什么它被用于等多种不同的任务:一切都做重量轻,像Lua的嵌入式语言编译Fortran代码的JIT编译大规模超计算机。

LLVM的一切,有一个广泛和友好的社区,在建设新的伟大低级别的工具感兴趣的人。如果您有兴趣参与,一个良好的地方是脱脂的LLVM的博客和签署LLVM的开发人员邮件列表。如何发送一个补丁的信息,提交访问,版权和许可主题,请参阅LLVM的开发政策。

你可能感兴趣的:(虚拟机,haskell,语言,工具,fortran,编译器)