gpt4 book ai didi

c - 从汇编器到 C 编译器

转载 作者:行者123 更新时间:2023-11-30 17:37:57 25 4
gpt4 key购买 nike

我用verilog设计了一个小型RISC。我必须采取哪些步骤来创建使用我的汇编语言的 C 编译器?或者是否可以修改像 gcc 这样的传统编译器,因为我不想制作链接器之类的东西,...

谢谢

最佳答案

您需要使用未修改的 C 词法分析器+解析器(通常称为前端)和修改后的代码生成组件(后端)来执行此操作。

Eli Bendersky's pycparser可以作为前端,Atul的迷你C编译器可以作为生成后端代码的灵感:http://people.cs.uchicago.edu/~varmaa/mini_c/

使用 Eli Bendersky 的 pycparser,您所需要做的就是将 AST 转换为控制流图 (CFG) 并从那里生成代码。从支持 C 的子集开始比支持完整的 shebang 更容易。

这两个工具都是用 Python 编写的,但您没有提及任何实现语言首选项:)

我发现大多数开源编译器(除了 clang 之外)耦合得太紧密,无法轻松修改后端。 Clang,尤其是 GCC 并不容易深入研究,远没有上面两个那么容易。由于 Eli 的解析器执行完整的 C99(它解析我扔给它的所有内容),因此它看起来是一个很好的前端,可用于进一步开发。 The examples on the Github project演示了该项目的大部分功能,并且很容易上手。将 C 解析为字面英语的示例值得一看,但可能需要一段时间才能完全理解。它基本上可以处理任何 C 表达式,因此对于如何处理 AST 的不同节点是一个很好的引用。

我在回答这个问题时也推荐了上面的工具:Build AST from C code

关于c - 从汇编器到 C 编译器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22246729/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com