【发布时间】:2012-01-31 13:06:16
【问题描述】:
为自定义 CPU 创建 C 编译器的最简单方法是什么,当然假设我已经有一个汇编器?
既然 C 编译器会生成汇编,有没有办法为各种 C 习惯定义标准的汇编代码片段,重建编译器,从而获得目标硬件的交叉编译器?
编译器本身最好用 C 语言编写,并构建为适用于 Linux 或 Windows 的本机可执行文件。
请注意:我不是询问如何编写编译器本身。我确实在大学里学过那门课,我知道一般的编译器,等等。在这种情况下,如果可能的话,我只想配置一些现有的框架。我不想修改语言,我只想能够针对任意架构。如果答案是“它不是那样工作的”,该信息将对我自己和任何可能做出类似假设的人有用。
【问题讨论】:
-
编译器生成汇编程序没有基本要求:这只是一种常见且方便的做法。
-
@dmckee - 让我们假设在这种情况下这是一个要求。我知道这个社区中有些人会对此有答案。请注意,我要问的答案是不是“去参加编译器写作课程”。
-
PS:假设你有这个全新的定制 CPU,你甚至没有编译器。 OS 会从哪里来???你是什么意思“本机可执行文件”? WHAT?!? 原生
-
@JustJeff:您要问的是“如何为 GCC 编写我自己的后端?” (如果合适,用“clang”等代替“GCC”)。这仍然很重要,可能最好的起点是相关文档(例如llvm.org/releases/2.3/docs/WritingAnLLVMBackend.html)。 (我会很高兴地承认,在这一点上我已经超出了我的能力范围!)
-
@paulsm4 - 是的,假设它是新的。假设没有操作系统。 “本机可执行文件”用于表示“在 cpu 上执行的二进制文件”
标签: c compiler-construction customization