我正在努力将uc / OS-II从DOS移植到x86(实模式)。我需要:
int 21h
)的标准库只依赖于BIOS服务。我想知道是否有任何工具链可以做到这一点。
看看FreeDOS项目。他们有developer tools,包括编译器,汇编器和链接器。但是,您可能必须修改标准库,以便它使用BIOS调用而不是int 21h。
16位编译器?其中有几个在这里提到:
Is there a C compiler that targets the 8086?
通常它们用于学术练习,所以如果你瞄准教育机构,你也可以找到很多例子:
http://www.google.com.sg/search?q=site%3Aedu+C+compiler+8086
在以前的工作中,我们有一个基于在实模式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倍。)
检查任何引导加载程序项目,例如GRUB。很明显,他们也需要你提到的一切。