The LLVM Target-Independent Code Generator 是一个翻译框架。这个框架提供了一个系列的可利用部分用来把LLVM IR翻译到机器码或者汇编码。它总共包括六部分。
1.抽象目标描述
就是描述机器的接口,并不包含怎么实现。
2.Classes used to represent the code being generated for a target
一堆类在codegen里面被定义,它们足够抽象可以用来表示任何目标机器的机器代码。例如:跳转表和静态池入口之类的。
3.用来表示object文件层次的算法和类
这些类表示汇编层次的构造比如说标签,节,指令。这个层次,没有跳转表的概念
4.用来实现各阶段原生代码生成的算法。
5.抽象目标接口描述的实现,也就是1的实现代码,还夹杂了一些pass
6.JIT的先不看。
其实可以看到就是主要就是两件事,一个是目标机器的描述(接口和具体的接口实现)一个是机器代码的表示(定义和实现)