新操作系统的C语言编译器(理论问题)?

时间:2014-05-06 18:50:33

标签: c compiler-construction operating-system kernel

让我们假设我使用汇编语言编写了一个原始的bootloader。 计算机仍处于实模式。现在我想用C语言编写原始内核和shell。 问题:

1.我是否需要在这个新操作系统的程序集中编写C语言编译器,还是可以使用在不同操作系统上运行的C编译器?我猜它可能都是!

2.如果我使用来自不同操作系统的C编译器,可以编译printf()等函数来定位BIOS的函数而不是OS的API以避免依赖吗?

3.如果我的bootloader 将计算机切换到保护模式,内核需要实现与BIOS功能相同的功能吗?

4.对问题3假设是:如果我使用来自不同操作系统的C编译器,那么使它成为新的OS内核函数的目标是什么?重写头文件?

(EDIT)PD:这些是理论问题。我不需要有关实际实现的具体细节。我只想验证这些概念。不觉得有责任回答所有这些问题!

1 个答案:

答案 0 :(得分:1)

  1. 你可以做任何一件事。我强烈建议只使用标准编译器。编写好的编译器非常复杂且耗时。
  2. 只要您没有标准库的实现,就不要使用它。您可以告诉C编译器假设没有标准库并编写自己的类似printf的函数。
  3. 您无法在实模式下访问BIOS功能。如果你需要它们,你需要重新实现它们。
  4. 实际上不需要太多改变。可执行文件是不完整的,需要链接到实现使用的标准库函数和任何其他库使用的东西。您需要做的就是将可执行文件链接到一个(可能是自编的)库,该库以某种方式实现所需的功能。