【发布时间】:2011-01-01 19:30:16
【问题描述】:
我正在 LLVM 之上引导一个编程语言编译器。目前,我主要为 C 的一个子集编写了一个编译器,该子集是自编译的。完成后,我将引导我的语言远离 C,同时保持自编译。
由于编译器是自编译的,所以我使用的任何 C 功能都必须实现。所以这是一个恒定的平衡:如果我使用了太多的功能,我将不得不实现比我想要的更多的功能,但如果我没有实现足够的功能,则很难编写代码。
其中一个功能是 LLVM 绑定。在没有 LLVM C 绑定的情况下生成 LLVM 中间表示是很困难的。但是,如果我使用 LLVM 绑定,当我从 C 分支出来时,我必须再次实现它们。
我在这里遇到了一些困难,所以我正在寻找替代解决方案。有什么想法吗?
【问题讨论】:
-
你用什么编写编译器? C?那么你是在使用 LLVM 进行机器代码编译吗?
-
我的编译器是用它编译的 C 子集编写的。对不起,我没有解释清楚。我目前的计划是将 LLVM 中间表示写到一个文件中,然后使用 LLVM 来编译它,但这很复杂,我正在寻找一个更干净的解决方案。
-
LLVM 是后端的绝佳选择,顺便说一下。我很幸运。
标签: c llvm bootstrapping