LLVM后端的功能就是处理LLVM IR(中间表达式)并生成目标机器指令。
要实现一个LLVM编译器的后端需要以下步骤:
1. 描述目标机器的特性
2. 描述目标机器的寄存器
3. 描述目标机器的指令集
4. 描述指令选择器(也就是如何将IR转换成Target指令)
5. 描述MC层(Machine code)
可选的步骤有:
1. 描述子机器(比如ARM各种架构中有arm、thumb、thumb2指令集)
2. 添加JIT指令发射器。
和目标机器描述相关的代码,都在llvm-3.4/lib/Target/目录下,在这个目录下我们可以看到很多体系结构命名的文件夹,例如ARM、X86、Mips等。之后我会以ARM为例,学习LLVM后端是如何实现的。
文笔烂技术菜,如有错误请指出,谢谢!