上QQ阅读APP看书,第一时间看更新
2.3.2 利用LLVM实现代码优化和代码生成
LLVM是一个包含一系列模块化可重用编译器和工具链技术的项目。LLVM主要的子项目有LLVM Core libraries、Clang、Dragonegg、LLDB等。其中LLVM Core libraries (LLVM核心库)提供了一个不依赖于目标平台的优化器,同时还为许多典型架构的CPU提供了代码生成的支持。这些库是围绕着一个有详细说明的中间代码表示形式(LLVM IR)建立起来的。也就是说,只要能够把待设计的语言翻译成LLVM IR这种中间语言,就可以利用LLVM完成代码优化和代码生成的工作。当然,这要求目标CPU架构必须是LLVM已经支持的,否则就得自己完成代码生成的工作。Clang是一个LLVM自身的C/C++/Objective-C编译器,目标是提供快速的编译。
Dragonegg的功能是把LLVM的优化器、代码生成器和GCC 4.5的分析器结合在一起,这样就使得LLVM能够编译像Ada、Fortran等其他GCC编译器前端支持的语言,且能够拥有一些Clang不支持的C特性(如OpenMP等)。LLDB则是建立在LLVM库和Clang之上的一个非常好的本地调试器。