做者:snsn1984
html
在介绍LLVM IR以前,咱们须要先了解下LLVM的结构。传统的静态编译器分为三个阶段:前端、优化和后端。 前端
LLVM IR是LLVM优化和进行代码生成的关键。根据可读的IR,咱们能够知道再最终生成目标代码以前,咱们已经生成了什么样的代码。并且根据IR,咱们能够选择使用不一样的后端而生成不一样的可执行代码。同时,由于使用了统一的IR,因此咱们能够重用LLVM的优化功能,即便咱们使用的是本身设计的编程语言。 编程
若是想直观的看下llvm的IR究竟是什么样的,能够先写一个helloworld的程序,文件名字叫作hello.c。根据下列文档的步骤配置llvm: 后端
http://clang.llvm.org/get_started.html 编程语言
而后根据文档的内容使用下列命令能够获得二进制的.bc文件: 编辑器
clang -emit-llvm -c hello.c -o hello.bc 优化
而后使用下列命令能够获得对应的hello.ll文件,这个文件是可读的,能够经过文本编辑器打开。 spa
llvm-dis hello.bc .net
这样咱们就能够直观的获得IR的两种格式了,至于在内存中的那种格式,咱们是没法经过文件的形式获得的。 设计
咱们通常都是查看.ll格式,由于这自己就是给人阅读的IR格式。