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 系统的优势
  1. LLVM 使用具有严格定义语义的简单低级语言。
  2. 它包括C和 C++的前端。Java、Scheme 和其他语言的前端正在开发中。
  3. 它包括一个积极的优化器,包括标量、过程间、配置文件驱动和一些简单的循环优化。
  4. 它支持终身编译模型,包括链接时、安装时、运行时和离线优化。
  5. LLVM 完全支持准确的垃圾收集
  6. LLVM 代码生成器相对容易重新定位,并利用强大的目标描述语言。
  7. LLVM 拥有大量文档,并托管了许多不同类型的项目
  8. 许多第三方用户声称 LLVM 易于使用和开发。例如,(现已删除的)Stacker 前端是由一个对 LLVM 一无所知的人在 4 天内编写的。此外,LLVM 具有使 开发更容易的工具。
  9. LLVM 正在积极开发中,并不断得到扩展、增强和改进。查看左侧栏中的状态更新以查看开发速度。
  10. LLVM 在 OSI 批准的“Apache License Version 2.0”许可下免费提供。
  11. LLVM 目前被许多商业、非营利或学术实体使用,他们贡献了许多扩展和新功能。
LLVM 受众

LLVM 可用于许多不同类型的项目。如果您是以下人员,您可能对 LLVM 感兴趣:

  • 对 C 和 C++ 程序的编译时、链接时(过程间)和运行时转换感兴趣的编译器研究人员。
  • 对可移植、独立于语言的指令集和编译框架感兴趣的虚拟机研究人员/开发人员。
  • 对编译器/硬件技术感兴趣的架构研究员。
  • 对静态分析或仪器感兴趣的安全研究人员。
  • 对编译器转换的快速原型制作系统感兴趣的讲师或开发人员。
  • 希望从您的代码中获得更好性能的最终用户。
想知道更多? 超强干货来袭 云风专访:近40年码龄,通宵达旦的技术人生

以上是关于LLVM编译器基础 架构的主要内容,如果未能解决你的问题,请参考以下文章

LLVM 3.9 发布,编译器架构

LLVM和clang

LLVM 之 IR 篇:零基础快速入门 LLVM IR

LLVM优化基础概述

LLVM 之后端篇:零基础快速入门 TableGen

英特尔为其C/C++编译器全面采用LLVM