LLVM究竟是什么?

我一直都在听LLVM的消息。 它在Perl中,然后在Haskell中,然后有人在其他语言中使用它? 它是什么?


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

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

LLVM也可充当JIT编译器 - 它支持x86 / x86_64和PPC / PPC64程序集生成,并具有快速代码优化功能,可实现编译速度。

如果您有兴趣,可以使用LLVM的机器代码,这些代码由演示页面中的C或C ++代码生成。


低级虚拟机(LLVM)是一种用C ++编写的编译器基础结构,专为编写任意编程语言编写的程序的编译时,链接时,运行时和“空闲时间”优化而设计。 最初是为C / C ++实现的,LLVM的语言无关设计(以及成功)自此衍生出各种各样的前端,包括Objective C,Fortran,Ada,Haskell,Java字节码,Python,Ruby,ActionScript,GLSL , 和别的。

阅读此更多解释
还可以看看Unladen Swallow


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

实际上,LLVM的名称可能指以下任何一种:

  • LLVM项目/基础架构:这是几个项目的总括,它们组成一个完整的编译器:前端,后端,优化器,汇编器,连接器,libc ++,编译器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的前端”等句子中使用时,LLVM具有此含义。

  • 链接地址: http://www.djcxy.com/p/64511.html

    上一篇: What exactly is LLVM?

    下一篇: Threading Building Blocks (TBB) for Qt