0

我想编译一个新的架构。我不确定它有多大的任务。据我所知,Flex/Bison类工具可以自由地执行几个编译步骤。如何拦截编译器通过

我的目标是在编译器的代码生成过程中拦截。那么,有没有免费的工具可以用于我的工作?大多数编译器都嵌入了所有不同的编译通行证。

我不知道LLVM,但我需要一个基本的微小简单的编译器,所有的不同步骤分离。大概我会操作从AST部分到代码生成部分。

如果您对我可以使用的工具有任何建议,请提出建议。

+0

对于什么语言? –

+0

您的方法可能是错误的,因为您希望在并发评论中“并行化我的代码”。因为即使你找到一个你可以“拦截代码生成”的编译器,编译器的其余部分仍然很可能仍然假设一个执行模型和一个不适合你的语义。 – Ingo

+0

如果你的编译模型是“flex/bison编译几个步骤”,你对编译器工作原理的理解可能会很弱,所以你不能在更复杂的代码生成任务中取得成功。我建议你去参加一个编译器课程......无论如何,这可能会给这个机会。如果你无法做到这一点,请从封面阅读编译器来覆盖,然后重新考虑你的问题。 –

回答

0

从flex/bison开始为新机器制作C++编译器肯定是可行的,但这将是很多工作。编译器中有许多语义分析代码不包含在flex或bison中。

另一种选择是将gcc重定向到新机器。但gcc有点大,需要大量的研究来学习如何改变它。 gcc的优点是在完成重定目标后,您可以获得c/C++/java支持。

我认为@ChrisTodd对lcc的建议很好,因为有一本书解释了如何将lcc编译器重定向到新机器。在你重新编译lcc之后,你将只能编译C程序。

1

您不指定您感兴趣的语言,但如果您想要使用简单的C编译器,您可能需要查看tcclcc

+0

最好是c/C++/Java。实际上我想按照我的新架构来并行化我的代码。我试图编译SUIF2(NCI-Stanford),它是一个程序分析平台,但仍然无法在Ubuntu上编译它。我听说过TCC。 –