【问题标题】:Extend compiler to get own assembly ouput扩展编译器以获得自己的汇编输出
【发布时间】:2013-11-09 10:16:59
【问题描述】:

我一直在编写一些verilog 代码来创建具有自己指令集的简单微处理器模拟。到目前为止,我一直在编译我的所有代码,并使用十六进制编辑器生成可用作启动程序内存的二进制文件。现在我需要将一些流行的语言(如 C 或 BASIC)编译到我的指令集中,并且由于编写自己的编译器似乎是非常困难和长期的任务,我正在寻找可以以某种方式扩展的编译器s源代码可以简单地重写为不同的指令。

有没有办法做到这一点?有这样的编译器吗?

【问题讨论】:

  • 你考虑过吗?
  • 我没有,我从未使用过任何第四代编译器。
  • 您可能需要不到一天的时间就可以开始学习这种项目。这是fort擅长的。获取更多信息,请访问 www.forth.com。

标签: assembly compiler-construction compilation instructions microprocessors


【解决方案1】:

您可以为 gcc 或 llvm 等可重定向编译器编写后端。例如,请参阅 http://llvm.org/docs/WritingAnLLVMBackend.htmlhttp://gcc.gnu.org/onlinedocs/gccint/Back-End.html

【讨论】:

    【解决方案2】:

    对于像 C 这样的任何东西,这将是一项非常复杂的任务。甚至比编写一些简单语言的编译器还要复杂。但是,如果您想这样做,请查看 GCC。它是开源的,旨在为新平台扩展。此外,它还支持组合多种前端(编程语言)和后端(目标平台的生成器)。

    但是,如果您的活动只是为了学习一些东西而不是实际设计新的生产微处理器,我宁愿选择一些简单语言(例如 Pascal)的子集并编写一个简单的编译器。您最终可以编写大约 10k 到 20k 行代码,并且会很有趣。

    【讨论】:

    • 谢谢。我将尝试使用 GCC 和 LLVM。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-22
    相关资源
    最近更新 更多