繁体   English   中英

从汇编器到C编译器

[英]From Assembler to C-Compiler

我在verilog中设计了一个小型RISC。 创建使用汇编语言的交流编译器时,我必须采取哪些步骤? 或者有可能修改像gcc这样的常规编译器,因为我不想做类似链接器的事情,...

谢谢

您需要使用未经修改的C lexer + parser(通常称为前端)和经过修改的代码生成组件(后端)来执行此操作。

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

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

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

我发现大多数开放源代码编译器(似乎不是clang)耦合得太紧密,无法轻松修改后端。 Clang尤其是GCC并不容易涉足,没有NEAR可以像上述两者一样容易。 而且由于Eli的解析器执行完整的C99(它解析了我抛出的所有内容),因此它似乎是用于进一步开发的不错的前端。 Github项目上的示例演示了该项目的大多数功能,并且很容易上手。 将C解析为文字英语的示例值得一看,但可能需要一段时间才能完全理解。 它基本上可以处理任何C表达式,因此对于如何处理AST的不同节点提供了很好的参考。

在回答这个问题时,我还推荐了上述工具: 从C代码构建AST

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM