LLVM究竟是什么?

我一直都在听有关LLVM的信息。 在Perl中,而后在Haskell中,而后有人以其余某种语言使用它? 它是什么? html


#1楼

LLVM编译器基础结构对于在代码上执行优化和转换特别有用。 它还由许多服务于不一样用途的工具组成。 llvm-prof是一种性能分析工具,可以让您执行执行性能分析以识别程序热点。 Opt是一种优化工具,可提供各类优化途径(例如,消除死代码)。 前端

重要的是,LLVM为您提供了编写本身的通行证的库。 例如,若是您须要对传递给程序某些功能的某些参数进行范围检查,则编写一个简单的LLVM Pass就足够了。 算法

有关编写本身的通行证的更多信息,请查看此http://llvm.org/docs/WritingAnLLVMPass.html 编程


#2楼

LLVM基本上是一个用于构建编译器和/或面向语言的软件的库。 基本要点是,尽管您拥有多是最多见的编译器套件的gcc,但它并非可重用的。 从gcc提取组件并使用它来构建您本身的应用程序很难。 LLVM经过构建一套“模块化和可重用的编译器和工具链技术”很好地解决了这个问题,任何人均可以使用它来构建编译器和面向语言的软件。 后端


#3楼

LLVM是用于构建,优化和产生中间和/或二进制机器代码的库。 app

LLVM可用做编译器框架,您能够在其中提供“前端”(解析器和词法分析器)和“后端”(将LLVM的表示形式转换为实际机器代码的代码)。 框架

LLVM还能够充当JIT编译器-它支持x86 / x86_64和PPC / PPC64程序集生成,并具备针对编译速度的快速代码优化。 编程语言

若是您有兴趣,能够在其演示页面中使用从C或C ++代码生成的LLVM机器码,但自2013年以来,该演示页面目前已被禁用。 模块化


#4楼

LLVM(之前是指“低级虚拟机”,但如今再也不是)是一种用C ++编写的编译器基础结构,旨在对编写的程序进行编译时,连接时,运行时和“空闲时”优化。以任意编程语言。 LLVM最初是为C / C ++实现的,其与语言无关的设计(并取得了成功)此后催生了各类各样的前端,包括Objective C,Fortran,Ada,Haskell,Java字节码,Python,Ruby,ActionScript,GLSL , 和别的。 工具

阅读此以得到更多说明
同时检查空载燕子


#5楼

根据“ LLVM核心库入门”一书(c):

实际上,名称LLVM可能表示如下任何一种:

  • LLVM项目/基础结构:这是组成一个完整编译器的几个项目的保护伞:前端,后端,优化器,汇编器,连接器,libc ++,compiler-rt和JIT引擎。 单词“ LLVM”的含义例如在如下句子中:“ LLVM由多个项目组成”。

  • 基于LLVM的编译器:这是使用LLVM基础结构部分或彻底构建的编译器。 例如,编译器可能将LLVM用于前端和后端,但使用GCC和GNU系统库执行最终连接。 LLVM在如下句子中具备此含义,例如:“我使用LLVM将C程序编译到MIPS平台”。

  • LLVM库:这是LLVM基础结构的可重用代码部分。 例如,LLVM在句子中具备如下含义:“个人项目使用LLVM经过其即时编译框架生成代码”。

  • LLVM核心:在中间语言级别进行的优化和后端算法构成了项目开始的LLVM核心。 LLVM在如下句子中具备此含义:“ LLVM和Clang是两个不一样的项目”。

  • LLVM IR:这是LLVM编译器的中间表示。 LLVM在诸如“我构建了将本身的语言翻译成LLVM的前端”之类的句子中使用时具备此含义。

相关文章
相关标签/搜索