LLVM IR提出的好处
首先解释IR是什么意思,IR就是源码翻译到某种中间的标识,英文是Intermediate Representation,简称IR,最后IR根据运行硬件的体系结构翻译为汇编语言。IR的好处如下:
-
对于一些优化技术与硬件平台无关,因此在IR层完成此类优化,这样所有的硬件平台都可以受用此类优化技术,减少了开发量。例如对于删除死代码或者常量折叠等优化技术,在源代码转化为IR的过程中,就可以完成,这样同样优化可以在不同硬件平台上运行。
LLVM的结构设计
常见的编译器组成部分:前端(front-end),中端(middle-end)和后端(back-end),各个端的功能不尽相同:
前端:将源语言翻译成IR。
中断:各种pass完成对IR的优化。
后端:把优化后的IR翻译成目标语言。
LLVM同样是此类设计,如下图:
LLVM IR总体结构
IR也是一种代码程序,本节先大概介绍其组成结构:
-
IR的基本单位是module。
-
一个module中拥有多个顶层实体,例如function和global variable
-
function的define中至少有一个basicblock。
-
每个basicblock中包含多个instruction。
总结
本节主要粗狂介绍LLVM IR部分,后续章节根据LLVM官方资料进行逐步介绍。