LLVM IR 简介
按照 LLVM 官网 的解释:
The LLVM Project is a collection of modular and reusable compiler and toolchain technologies. Despite its name, LLVM has little to do with traditional virtual machines, though it does provide helpful libraries that can be used to build them. The name “LLVM” itself is not an acronym; it is the full name of the project.
发展到现在 LLVM 已经不仅仅是一个编译器项目了,不过为了介绍 IR,我们不妨从编译器的角度来介绍一下 LLVM。编译器分为前端和后端,前端主要包括语法解析、语义分析以及生成抽象语法树,而后端则包括了汇编代码、目标文件的生成以及连接等等过程。LLVM 的目标是使前端和后端高度模块化,高度的每个模块都可重用,具体的做法就是通过 LLVM IR 连接前端和后端
LLVM IR 可以抽象的理解为 java 的字节码,后端理解成 jvm 的虚拟机,这样编译器开发人员就可以很方便的为某种语言开发一套编译器了:他只需要实现一个前端,用 LLVM IR 表示抽象语法树即可。而要添加对某个处理器平台的支持只需要添加对应平台的后端支持即可
为什么使用 LLVM IR
让我们来看一段伪代码: