1

我用 C# 为朋友的自定义 CPU 编写了一个 C90 交叉编译器,它生成一个包含汇编语言的文本文件。然后我将它提供给他用 Python 编写的汇编器,它会生成一个包含机器代码的文本文件。然后我们通过串行连接将其传输到他的机器,此时他的定制 CPU 运行程序。

我想把整个过程捆绑成一个简单的东西,比如按下“编译”按钮,就像在任何现代 IDE 中所做的那样。此外,说到现代 IDE,最好用记事本以外的其他东西开发我们的 C 代码,并享受这些现代 IDE 必须提供的一些便利,例如文件管理、就地编译、语法突出显示和智能感知.

现在,我在大部分开发中都使用 Visual Studio,所以我很清楚它已经与 C/C++ 编译器捆绑在一起。如果能够使用 Visual C++ 为我们的自定义 CPU 开发 C 代码并覆盖它的“编译”功能,以便它调用我的编译器工具链而不是它的 C++ 编译器,那就太好了。

我用这种方法设想的问题是:

  1. 我认为不可能覆盖“编译”功能并且
  2. 语法高亮/智能感知将不符合 C90 标准。我可以接受#2,但我想知道#1 是否可行。

如果做不到这一点,我需要硬着头皮将我的自定义编译器集成到 Visual Studio 中,这样做需要我有一个与 ANTLR 或 MPlex/MPPG 兼容的 C90 语法文件,以便我可以在 C# 中输出一个解析器/扫描器Studio 可以使用它的语法高亮/智能感知。

我在 ANTLR 网站上看到的语法文件是 C99;有人知道 C90 的实现吗?http://slps.github.io/zoo/#ANSI_C90似乎有一个,但语法是 BGF、EBNF、DMS BNF 和 SDF 格式,我认为这些格式与我提到的任何一种工具都不兼容。任何帮助,将不胜感激。

4

1 回答 1

0

从 Visual Studio 2010 开始提供的基于 MSBuild 的新 Visual C++ 工具链为非 Microsoft 工具链提供了框架级支持。您仍然需要提供特定于您的编译器的构建文件,但您可以将结果干净地集成到 Visual Studio 中。

我不知道有人实际这样做的任何情况。

于 2013-08-09T11:32:08.673 回答