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

新操作系统的C语言编译器(理论问题)?,c,compiler-construction,operating-system,kernel,C,Compiler Construction,Operating System,Kernel,假设我使用汇编语言编写了一个基本的引导加载程序计算机仍处于实模式。现在我想用C语言编写一个基本内核和外壳。 问题: 1.我是否需要为这个新操作系统编写汇编语言编译器,还是可以使用运行在不同操作系统上的C编译器?我想两者都有可能 2.如果我使用来自不同操作系统的C编译器,可以编译printf()之类的函数来针对BIOS的函数,而不是操作系统的API,以避免依赖关系 3.如果我的引导加载程序将计算机切换到保护模式内核将需要实现与BIOS功能等效的功能 4.假设问题3的答案是肯定的:如果我使用来自不同

假设我使用汇编语言编写了一个基本的引导加载程序计算机仍处于实模式。现在我想用C语言编写一个基本内核和外壳。 问题:

1.我是否需要为这个新操作系统编写汇编语言编译器,还是可以使用运行在不同操作系统上的C编译器?我想两者都有可能

2.如果我使用来自不同操作系统的C编译器,可以编译printf()之类的函数来针对BIOS的函数,而不是操作系统的API,以避免依赖关系

3.如果我的引导加载程序将计算机切换到保护模式内核将需要实现与BIOS功能等效的功能

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


(编辑)PD:这些都是理论问题。我不需要关于实际实现的具体细节。我只是想验证这些概念。不要觉得有义务回答所有的问题

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

  • 你为什么不单独提出这些问题呢?这些都是理论问题。每个问题都与下一个相关。不要觉得有义务回答所有的问题!有趣的主题,但我认为单独的问题对你和社区都有好处。有没有办法取消这个问题来分割它?