LLVM框架(1): 开篇¶
引言¶
LLVM
(Low Level Virtual machine)项目是由一系列现代编译工具组成的编译器框架,主要子项目包括:
- LLVM Core: 提供LLVM IR
- Clang:一个现代C、C++等语言编译器前端
- LLDB: 调试器
- libc++:支持C++11、C++14的C++标准库
- compiler-rt: 运行时库
- polly: 公共库
- OpenMP:让Clang支持OpenMP
- libclc: 实现OpenCL
- LLD: 链接器
- ......
按照理解,通过LLVM可以快速建立一个新的编程语言,只要建立了AST后,遍历AST生成LLVM IR形式,这样就可以利用起LLVM自带的大量优化和后端代码生成,从而支持更多的后端硬件平台。
源码编译安装¶
$ git clone https://github.com/llvm/llvm-project.git
$ cd llvm-project
$ cmake -S llvm -B build -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release
$ cmake --build build
$ cd build/ && make install
LLVM IR:中间表示¶
LLVM IR有三种形式:
- 文本文件(
.ll
): 可读性高 - 字节码文件(
.bc
): 二进制 - 内存形式(memory): 比如用于JIT
结语¶
$ clang --version | grep Target
Target: x86_64-apple-darwin21.4.0
$ ls -l ./llvm-project/llvm/examples/
LLVM官方提供了一些文档和自带了一些例子,但目前来看,要找到不错的教程或文档还是比较麻烦,因此这一系列博文准备记录下学习和使用LLVM的笔记,最后为Ledge语言添加LLVM IR支持,引入JIT技术,实现加速和更多可能性。
资料¶
- 官网: https://llvm.org/
- 官网文档:https://llvm.org/docs/
- 项目源码: https://github.com/llvm/llvm-project/
- LLVM IR: https://llvm.org/docs/LangRef.html
- LLVM Tutorial: https://llvm.org/docs/tutorial/MyFirstLanguageFrontend/index.html
- llvm-core文档: https://getting-started-with-llvm-core-libraries-zh-cn.readthedocs.io/zh_CN/latest/index.html
- Clang: https://clang.llvm.org/
- 微信搜索: 「 MinYiLife 」, 关注公众号!
- 本文链接: https://www.lesliezhu.com/blog/2023/01/12/llvm_1/
- 版权声明: 原创文章,如需转载请注明文章作者和出处。谢谢!