LLVM编译器基础 架构
Posted rtoax
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LLVM编译器基础 架构相关的知识,希望对你有一定的参考价值。
The LLVM Compiler Infrastructure Projecthttps://llvm.org/Features.html
LLVM 功能C 和 C++的LLVM 编译器系统包括以下内容:
- C、C++、Objective-C、Fortran 等的前端。它们支持 ANSI 标准的 C 和 C++ 语言。此外,还支持许多 GCC 扩展。
- LLVM 指令集的稳定实现,它同时用作在线和离线代码表示,以及汇编 (ASCII) 和字节码(二进制)读取器和写入器,以及验证器。
- 一个强大的通道管理系统,可以根据它们的依赖关系自动对通道(包括分析、转换和代码生成通道)进行排序,并将它们流水线化以提高效率。
- 广泛的全局标量优化。
- 一个链接时过程间优化框架,具有丰富的分析和转换集,包括复杂的整个程序指针分析、调用图构建以及对配置文件引导优化的支持。
- 一个易于重定向的代码生成器,目前支持 X86、X86-64、PowerPC、PowerPC-64、ARM、Thumb、SPARC、Alpha、CellSPU、MIPS、MSP430、SystemZ、WebAssembly 和 XCore。
- 一种即时 (JIT) 代码生成系统,目前支持 X86、X86-64、ARM、AArch64、Mips、SystemZ、PowerPC 和 PowerPC-64。
- 支持生成 DWARF 调试信息。
- 类似于 gprof 的分析系统。
- 具有许多基准代码和应用程序的测试框架。
- 用于简化 LLVM 组件的快速开发的 API 和调试工具。
- LLVM 使用具有严格定义语义的简单低级语言。
- 它包括C和 C++的前端。Java、Scheme 和其他语言的前端正在开发中。
- 它包括一个积极的优化器,包括标量、过程间、配置文件驱动和一些简单的循环优化。
- 它支持终身编译模型,包括链接时、安装时、运行时和离线优化。
- LLVM 完全支持准确的垃圾收集。
- LLVM 代码生成器相对容易重新定位,并利用强大的目标描述语言。
- LLVM 拥有大量文档,并托管了许多不同类型的项目。
- 许多第三方用户声称 LLVM 易于使用和开发。例如,(现已删除的)Stacker 前端是由一个对 LLVM 一无所知的人在 4 天内编写的。此外,LLVM 具有使 开发更容易的工具。
- LLVM 正在积极开发中,并不断得到扩展、增强和改进。查看左侧栏中的状态更新以查看开发速度。
- LLVM 在 OSI 批准的“Apache License Version 2.0”许可下免费提供。
- LLVM 目前被许多商业、非营利或学术实体使用,他们贡献了许多扩展和新功能。
LLVM 可用于许多不同类型的项目。如果您是以下人员,您可能对 LLVM 感兴趣:
- 对 C 和 C++ 程序的编译时、链接时(过程间)和运行时转换感兴趣的编译器研究人员。
- 对可移植、独立于语言的指令集和编译框架感兴趣的虚拟机研究人员/开发人员。
- 对编译器/硬件技术感兴趣的架构研究员。
- 对静态分析或仪器感兴趣的安全研究人员。
- 对编译器转换的快速原型制作系统感兴趣的讲师或开发人员。
- 希望从您的代码中获得更好性能的最终用户。
以上是关于LLVM编译器基础 架构的主要内容,如果未能解决你的问题,请参考以下文章