【问题标题】:Good output for first language [closed]第一语言的良好输出[关闭]
【发布时间】:2013-10-17 15:10:20
【问题描述】:

我已经为我的新编程语言构建了一个编译器。它完美地工作。我进入了最后一部分。我需要把它变成可运行的格式(可执行文件)。我正在查看 mach-o 格式(我在 osx 上运行),但它没有很好的文档记录,我也没有那么先进。所以我的问题是:

对于我的第一个编译器来说,什么是好的输出?

附:我真的很希望能够在终端中运行我的程序

【问题讨论】:

  • 我建议你去生成 LLVM 代码,让 LLVM 基础架构为每个特定架构生成代码。
  • 如果您没有可执行格式的文件,您怎么知道它“完美”地工作?还是根本没有?
  • @MikeW 我在构建编译器时执行了测试。当我说它“完美”工作时,我的意思是它应该执行句法分析和词法分析
  • @MihaiMaruseac 有这方面的文档吗?或者怎么做?
  • LLVM 汇编并非易事:llvm.org/docs/LangRef.html 您可能会考虑首先针对与您的内部表示非常匹配的简单 C 子集。做对了,让你的程序运行,然后决定是否要处理汇编代码。

标签: c terminal programming-languages executable


【解决方案1】:

我建议您使用TAC 作为编译器的输出。 TAC 是一种上下文无关语言,这意味着它可以通过简单的脚本轻松转换为汇编。它被编译器广泛用于优化中间代码,然后再将其翻译为处理器特定的汇编语言并针对相应的处理器架构进行优化。 如果我没记错的话,TAC 代码有多种类型,您需要找到更适合您的一种。我记得在我毕业的编译器课程中使用它作为我的编译器的输出,因为我可以运行一个 python 脚本,将它翻译成 x86 程序集

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-04
    • 2018-10-23
    • 2021-04-16
    • 1970-01-01
    相关资源
    最近更新 更多