【问题标题】:Is there a C compiler that targets the 8086? [closed]是否有针对 8086 的 C 编译器? [关闭]
【发布时间】:2010-12-20 19:19:50
【问题描述】:

我有一个 8086 CPU 模拟器。它只模拟 8086 条指令。我现在正在寻找一个 C 编译器来定位这个模拟器。有没有 C 编译器可以做到这一点?

另外,拥有一个可用的 libc 等对我来说并不重要。模拟器使用自定义(即非 PC)硬件,因此任何 libc 甚至 ctr0 都可能不得不重写

【问题讨论】:

  • 任何 16 位 DOS 编译器。
  • 可悲的是,它们太多了,还有太多大学教授让他们的学生使用它们......
  • @R.. @Hans 我见过的许多编译器的目标都高于 8086,通常它们会达到 8186 和 8286 操作码。
  • @mlv 谢谢,但我一直在寻找至少支持 C89 的现代编译器
  • 投票结束作为工具记录。另见:stackoverflow.com/questions/227762/…

标签: c compiler-construction x86 x86-16


【解决方案1】:

bcc - Bruce 的 C 编译器

来自bcc(1) - Linux man page

说明

Bcc 是一个简单的 C 编译器,可生成 8086 汇编器,此外编译器编译时选项允许 80386 或 6809 版本。编译器理解传统的 K&R C,只是限制位字段映射到其他整数类型之一。

默认操作是从源文件生成一个名为 a.out 的 8086 可执行文件。

打开 Watcom

来自Open Watcom C/C++ User’s Guide(PDF 链接)中编译器选项/80x86 运行时约定0的描述:

(仅限 16 位)编译器将仅使用生成的目标代码中的 8086 条指令。这是 默认。生成的代码将在 8086 和所有向上兼容的处理器上运行。宏 __SW_0 如果选择“0”,将被预定义

【讨论】:

    【解决方案2】:

    【讨论】:

    • 您确定 Digital Mars 将仅使用 8086 个操作码生成二进制文件吗?
    • @Earlz:Digital Mars 可以瞄准 8088,与 8086 指令集相同:digitalmars.com/ctg/sc.html#dash023456
    • 另一个可能值得尝试的编译器(我不确定——它需要一个 MS-DOS 环境才能运行):Turbo C++ 2: edn.embarcadero.com/article/20841
    • @Mich 不,谢谢,我会尽可能远离 Turbo C,哈哈
    【解决方案3】:

    Free Pascal 也可以产生16 bit 8086 executable。它不是本机编译器,您必须在当前的 32 位机器上编译它,然后将可执行文件复制到您的 IBM 51XX 或克隆。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-17
      相关资源
      最近更新 更多