Gcc LLVM到底是什么?
我一直听说LLVM。它是在Perl中,然后是在Haskell中,然后有人在其他语言中使用它?这是什么Gcc LLVM到底是什么?,gcc,llvm,Gcc,Llvm,我一直听说LLVM。它是在Perl中,然后是在Haskell中,然后有人在其他语言中使用它?这是什么 它与GCC(透视=安全等)的具体区别是什么 LLVM是一个用于构造、优化和生成中间和/或二进制机器代码的库 LLVM可以用作编译器框架,其中提供“前端”(解析器和词法分析器)和“后端”(将LLVM表示转换为实际机器代码的代码) LLVM还可以充当JIT编译器—它支持x86/x86_64和PPC/PPC64程序集生成,并进行了旨在提高编译速度的快速代码优化 不幸的是,自从2013以来,在C/C+
- 它与GCC(透视=安全等)的具体区别是什么
- LLVM项目/基础设施:这是几个项目的保护伞 共同构成完整编译器的项目:前端, 后端、优化器、汇编器、链接器、libc++、编译器rt和 JIT引擎。例如,在 下面一句话:“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是一个用于构造、优化和生成中间和/或二进制机器代码的库
LLVM可以用作编译器框架,其中提供“前端”(解析器和词法分析器)和“后端”(将LLVM表示转换为实际机器代码的代码)
LLVM还可以充当JIT编译器—它支持x86/x86_64和PPC/PPC64程序集生成,并进行了旨在提高编译速度的快速代码优化
不幸的是,自从2013以来,在C/C++代码中,在./P>< P> LVM(用于表示“低级别虚拟机”,但不再是)的LLVM机器代码中,有能力编译一个编译基础结构,它是用C++编写的,它是用于编译时间、链接时间、运行时间和“空闲时间”的。优化用任意编程语言编写的程序。LLVM最初是为C/C++实现的,与语言无关的设计(以及它的成功)后来催生了各种各样的前端,包括Objective C、Fortran、Ada、Haskell、Java字节码、Python、Ruby、ActionScript、GLSL等
另外,请查看LLVM编译器基础结构对于对代码执行优化和转换特别有用。它还包括许多用于不同用途的工具。LLVMProf是一个分析工具,它允许您对执行进行分析,以识别程序热点。Opt是一个优化工具,提供各种优化过程(例如,消除死代码) 重要的是,LLVM为您提供了库,用于编写自己的过程。例如,如果需要对传递到程序的某些函数中的某些参数添加范围检查,编写一个简单的LLVM传递就足够了
有关编写自己的Pass的更多信息,请检查此LLVM基本上是一个用于构建编译器和/或面向语言的软件的库。基本要点是,尽管gcc可能是最常见的编译器套件,但它的构建不是为了可重用的ie。很难从gcc中提取组件并使用它来构建自己的应用程序。LLVM通过构建一套“模块化、可重用的编译器和工具链技术”很好地解决了这个问题,任何人都可以使用这些技术来构建编译器和面向语言的软件。根据书(c): 事实上,LLVM这个名称可能指的是以下任何一种:
LLVM的一个很好的总结是: 在前端有Perl和许多其他高级语言。在后端,您拥有直接在计算机上运行的本地代码
中间是中间代码表示。如果每个高级语言都可以用这个LLVM IR格式表示,那么基于这个IR的分析工具就可以很容易地重用——这就是基本原理。低级虚拟机(LLVM) 备选方案:GCC(GNU编译器集合)。GDB(GNU调试器)-调试工具。支持更多的语言和体系结构 LLVM是一个伞形项目(一组库),它是一个有不同项目(IR、调试工具…)的品牌,现在它不是虚拟机或缩写。LLDB(LLVM调试器)-调试工具。由大公司支持 编译器:
Language FrontEnd(Many: Clang, Haskel...) -> Optimizer(Single) -> Backend(Many: ARM, x86...)
前端生成中间表示(IR)
。此通用语言允许简单的缩放过程。如果您正在创建新的语言,您只负责前端,如果您正在开发新的体系结构,您应该注意后端。它是JVM中的一种.class
文件,由ClassLoader
有三种等价的IR表格:
- 人类可读的汇编语言表示法
- 内存编译器IR
llvm dis
可用于将bitcode
转换为人类可读的
如果您想使用它,请看这篇精彩的文章:答案中提供的链接说“llvm演示页当前已禁用”。这是通过llvm将C/C++编译到各种目标的另一种方式,包括中间编解码器,您可以给出一个实际的示例来说明它的含义吗?现在您可以使用生成的LLVM进行播放