实力IT教育 www.520it.com
LLVM
M了个J
https://github.com/CoderMJLee
https://weibo.com/exceptions
LLVM
LLVM
n 什么是LLVM
p 官网:https://llvm.org/
p The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.
p LLVM项目是模块化、可重用的编译器以及工具链技术的集合
p 美国计算机协会 (ACM) 将其2012 年软件系统奖项颁给了LLVM,之前曾经获得此奖项的软件和技术包括:Java、Apache、
Mosaic、the World Wide Web、Smalltalk、UNIX、Eclipse等等
n 创始人
p Chris Lattner,亦是Swift之父
n 有些文章把LLVM当做Low Level Virtual Machine(低级虚拟机)的缩写简称,官方描述如下
p The name "LLVM" itself is not an acronym; it is the full name of the project.
p “LLVM”这个名称本身不是首字母缩略词; 它是项目的全名
传统的编译器架构
n Frontend:前端
p 词法分析、语法分析、语义分析、生成中间代码
n Optimizer:优化器
p 中间代码优化
n Backend:后端
p 生成机器码
LLVM架构
n 不同的前端后端使用统一的中间代码LLVM Intermediate Representation (LLVM IR)
n 如果需要支持一种新的编程语言,那么只需要实现一个新的前端
n 如果需要支持一种新的硬件设备,那么只需要实现一个新的后端
n 优化阶段是一个通用的阶段,它针对的是统一的LLVM IR,不论是支持新的编程语言,还是支持新的硬件设备,都不需要对优化阶段做修改
n 相比之下,GCC的前端和后端没分得太开,前端后端耦合在了一起。所以GCC为了支持一门新的语言,或者为了支持一个新的目标平台,就
变得特别困难
n LLVM现在被作为实现各种静态和运行时编译语言的通用基础结构(GCC家族、Java、.NET、Python、Ruby、Scheme、Haskell、D等)