看了一下LLVM的介绍,大致如下:
LLVM(Low Level Virtual Machine)是一个包含一系列模块化可重用编译器和工具链技术的项目。LLVM是一个开源的项目,它的主要的子项目有:LLVM Core libraries,Clang,dragonegg,LLDB等。它的主要作用是:可以作为多种语言的后端,可以提供可编程语言无关的优化和针对很多种CPU的代码生成功能。llvm的优点是开源,有一个表达形式很好的IR语言,模块化作的特别好。llvm这个框架目前已经有基于这个框架的大量的工具可以使用。
llvm是一个编译器框架,Clang是LLVM native的一个面向C/C++/Objective-C的编译器,Clang的目标是要提供一个编译非常快的编译器。Clang一般被说是LLVM的一个前端。Clang需要单独下载源码,放到LLVM Source/tools下面,然后整个编译LLVM才行。可以写一个简单的helloworld程序,使用clang进行编译,使用方法和gcc相同.
另外LLVM Core libraries(LLVM核心库)提供了一个现代源码的(modern source)、目标独立的(target-independent)优化器;同时还为许多流行CPU提供了代码生成的支持。这些库是围绕着一个有详细说明的代码表示形式(LLVM IR)建立起来的。
也就是说,只要我们能够把自己的语言翻译成LLVM IR,就可以利用LLVM完成代码优化和代码生成的工作。当然,你的目标语言(或者说目标CPU架构)必须是LLVM已经支持的。不然,还是得自己实现代码生成的功能。
中间表示(IR)已经被越来越多的编译器所采用,传统的编译器多采用汇编语言作为自己的中间语言,而现在大一些的编译器都有了自己专属的中间表示.LLVM IR是整个LLVM框架中极其重要的一部分,一般与LLVM相关的项目都无法避开LLVM IR这个部分,因为它是整个LLVM框架中的枢纽。
在llvm的build目录下,在已经运行make成功的情况下,直接进行make check,可以运行llvm自带的所有测试。
Clang PK GCC
Clang 的特性:
1.快:通过编译 OS X 上几乎包含了所有 C 头文件的 carbon.h 的测试,包括预处理,语法,解析,语义分析,抽象语法树生成的时间。
2.内存占用小:Clang 内存占用是源码的 130%,Apple GCC 则超过 10x。
3.诊断信息可读性强:设计清晰简单,容易理解,易于扩展增强。与代码基础古老的 GCC 相比,学习曲线平缓。基于库的模块化设计,易于 IDE 集成及其他用途的重用。
当然,GCC 也有其优势:
1.支持 Java/ADA/FORTRAN
2.当前的 Clang 的 C++ 支持落后于 GCC。
3.GCC 支持更多平台
4.GCC 更流行,广泛使用,支持完备
5.GCC 基于 C,不需要 C++ 编译器即可编译
LLVM零基础学习网站链接:http://blog.csdn.net/column/details/llvm.html
Llvm概述网站:http://llvm.org/
The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.
Despite its name, LLVM has little to do with traditional virtual machines, though it does provide helpful libraries that can be used to build them. The name "LLVM" itself is not an acronym; it is the full name of the project.
翻译:LLVM(Low Level Virtual Machine)是一个包含一系列模块化可重用编译器和工具链技术的项目。llvm随着这个项目的不断的发展,已经无法完全的代表这个项目了,只是这种叫法一直延续下来。
LLVM began as a research project at the University of Illinois, with the goal of providing a modern, SSA-based compilation strategy capable of supporting both static and dynamic compilation of arbitrary programming languages. Since then, LLVM has grown to be an umbrella project consisting of a number of subprojects, many of which are being used in production by a wide variety of commercial and open source projects as well as being widely used in academic research. Code in the LLVM project is licensed under the "UIUC" BSD-Style license.
翻译:LLVM开始是Illinois大学的一个研究项目,其目标是提供一个现代化的,基于SSA编辑策略能够支持任意静态和动态的编程语言。从那时起,LLVM已经变成一个由若干子项目组成的保护项目,它们中的许多被广泛用于商业广告和学术研究的开源项目。LLVM项目的代码获得了"UIUC"证书。