我正在努力将uc / OS-II从DOS移植到x86(实模式)。我需要:
用于生成实模式16位x86汇编的编译器
用于将生成的程序集组装到目标文件中的汇编程序
将目标文件链接在一起并输出可执行文件的链接器(原始二进制文件,COFF,PE或 ELF格式很好)
不调用任何DOS服务(int 21h
)的标准库,仅依赖于BIOS服务。
我想知道是否有任何工具链可以做到。
答案 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
变量的访问 - 通常是缓存寄存器中的值和类似的破坏。
答案 3 :(得分:-1)
检查任何引导加载程序项目,例如GRUB。很明显,他们也需要你提到的一切。