【发布时间】:2014-03-28 06:08:44
【问题描述】:
我有一个用 LLVM 和 C++ 实现的玩具解释器(通过步行 AST 生成 LLVM IR 并使用 JIT 运行,基于 Perl 的语言,具有内置数据结构和函数)。现在我想将其扩展为可编译的, 生成汇编代码并使用 gas 和 ld 获取可执行文件。
如果我想要的只是一个可运行的编译器,它可以创建一个“正确的”elf 可执行文件而无需复杂的优化,我必须将 AST 转换为 RTL 之类的 IR 或类似的东西吗?或者有替代选择而不是在句法分析阶段构建 AST?
顺便问一下,我想知道在像 lcc 或 tcc 这样的小型编译器中,它的“IR”和“目标代码”是什么?
【问题讨论】:
-
您有什么理由不想为此使用 LLVM?由于您已经生成 LLVM IR,因此让 LLVM 从中生成程序集/目标文件是零努力......除非您需要一些运行时支持。
标签: assembly compiler-construction llvm-ir