埋一个坑,有空整理一下自己在完成RCompiler和学习编译原理过程中学到的东西。况且下学期也选了高编,也可以往里面加后端和优化的内容。

Codegen

RCompiler的Codegen部分主要是将LLVM IR转换为目标平台的机器码。这个过程涉及到指令选择、寄存器分配和指令调度等多个步骤。目前我正在实现最naive的codegen,也就是不涉及寄存器分配和指令调度的版本,把所有虚拟寄存器全部spill到栈上,直接将LLVM IR中的每条指令翻译成对应的机器指令。

指令选择

指令选择是将LLVM IR中的每条指令翻译成对应的机器指令的过程。由于LLVM IR是一种中间表示,它的指令集相对较小,而目标平台的指令集可能非常复杂,因此需要一个映射关系来将LLVM IR中的指令翻译成目标平台的机器指令。