我有一个用 LLVM 和 C++ 实现的玩具解释器(通过步行 AST 生成 LLVM IR 并使用 JIT 运行,基于 Perl 的语言,内置数据结构和函数)。现在我想将它扩展为可编译的,生成程序集使用gas和ld编写代码并获得可执行文件。
如果我想要的只是一个可运行的编译器,它可以创建一个“正确的”elf 可执行文件而没有复杂的优化,我必须将 AST 转换为 RTL 之类的 IR 或类似的东西吗?或者有其他选择而不是在句法分析阶段构建 AST?
顺便说一句,我想知道在像 lcc 或 tcc 这样的小型编译器中,它的“IR”和“目标代码”是什么?