LLVM - 为什么要有LLVM?

LLVM起源于Chris Lattner的硕士论文,旨在提供一个多阶段优化的基础设施。传统编译器优化面临链接时优化、运行时优化和Profile-driven优化的局限。LLVM通过其近RISC的IR、类型信息、PGO支持和JIT实现,解决了这些痛点,提供了一种灵活高效的编译器框架。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章的主题:

  • LLVM被创建出来的原始动机
  • LLVM如何演进成现在的整个编译框架

为什么要有LLVM?

起点

LLVM的大爆炸,源自于一篇硕士论文。Chris Arthur Lattner的《LLVM: AN INFRASTRUCTURE FOR MULTI-STAGE OPTIMIZATION》[1].LLVM原本的名字是Low Level Virtual Machine. 虽然它现在已经和虚拟机没什么太大关系了,但是在它诞生的时候,它的野心在于取代虚拟机。

传统编译器优化的痛点

优化的本质在于利用各种信息(源代码中的信息,编译时数据流分析,运行时数据采样),来优化程序的二进制表示。在最开始,编译器的优化都是静态的,或基于控制流,或基于数据流。随着编译器优化的逐步演进,逐渐出现了利用其它阶段信息进行优化的方式,常见的有如下几种:

  • 链接时过程间优化
  • 运行时优化
  • Profile-Driven优化

这些技术都有着什么样的缺点?

链接时优化

过程间(或全程序)优化的基本思路是将尽可能多的程序集中到一个地方,将分析和转换扩大到单个编译单元之外。而决定过程间优化的一个最重要决策是:程序的中间表示将在哪个级别上进行?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值