寻找x86的16位c编译器

时间:2011-05-19 13:56:22

标签: compiler-construction x86 real-mode

我正在努力将uc / OS-II从DOS移植到x86(实模式)。我需要:

  1. 用于生成实模式16位x86汇编的编译器

  2. 用于将生成的程序集组装到目标文件中的汇编程序

  3. 将目标文件链接在一起并输出可执行文件的链接器(原始二进制文件,COFF,PE或 ELF格式很好)

  4. 不调用任何DOS服务(int 21h)的标准库,仅依赖于BIOS服务。

  5. 我想知道是否有任何工具链可以做到。

4 个答案:

答案 0 :(得分:5)

查看FreeDOS项目。他们有developer tools,包括编译器,汇编器和链接器。但是,您可能必须修改标准库,因此它使用BIOS调用而不是int 21h。

答案 1 :(得分:1)

16位编译器?其中有几个在这里提到:

Is there a C compiler that targets the 8086?

一般来说,它们用于学术练习,所以如果你瞄准教育机构你也可以找到很多例子:

http://www.google.com.sg/search?q=site%3Aedu+C+compiler+8086

答案 2 :(得分:1)

在以前的工作中,我们有一个基于在实模式x86平台上运行的uc / OS的项目。我们使用的是TopSpeed C,而不是更着名的Borland或Microsoft编译器,因为TopSpeed C是唯一一个在volatile正确的时候可用且可行的集合。在构建uc / OS时您非常需要。 Turbo C和Microsoft C(我认为它的QuickC也是)错误地编译了对volatile变量的访问 - 通常是缓存寄存器中的值和类似的破坏。

但是,你很难掌握TopSpeed C.它的汇编语法是......唯一的。 (我认为它基于Modula-2或其他东西;它最终与MASM / TASM / nasm非常不同,你可能会比它更熟悉100倍。)

答案 3 :(得分:-1)

检查任何引导加载程序项目,例如GRUB。很明显,他们也需要你提到的一切。