梳理一下LLVM的知识(待整理)
LLVM本身并不是编译器,只是一套用于开发编译器、解释器等程序语言相关工具的库。
LLVM是一个编译器基础架构(infrastructure),把很多编译器需要的功能以可调用的模块形式实现出来并包装成库,供其他编译器实现者可以根据自己的需要选择使用或者扩展。但是LLVM本身并不是一个完整的编译器,这是与GCC最大的区别。
传统的编译器通常分为三个部分,前端(frontEnd),优化器(Optimizer)和后端(backEnd)。在编译过程中,前端主要负责词法和语法分析,将源代码转化为抽象语法树;优化器则是在前端的基础上,对得到的中间代码进行优化,使代码更加高效;后端则是将已经优化的中间代码转化为针对各自平台的机器代码。Clang则是以LLVM为后端的一款高效易用,并且与IDE结合很好的编译前端。