操作系统如何引入C语言来编写内核

时间:2011-08-18 11:44:49

标签: windows winapi windows-7 kernel

这个介绍是否发生在NTLDR阶段,因为它必须引入,我的意思是不是用C语言编写的内核?我认为只有“以前知道”编程语言的计算机才是汇编语言,它是在处理器微码上硬编码的?

2 个答案:

答案 0 :(得分:3)

第一批操作系统都是用汇编语言编写的。创建C语言是因为它的第一个用例是创建UNIX。编写C编译器来处理此代码并生成系统理解的程序集(编译器当然是在程序集中编写的)。效果从那里滚雪球。我们现在有一个更强大的系统来编写代码,所以我们当然可以用更高级的方法编写更好的编译器和更好的软件,让编译器为我们工作。

就Windows而言,它是一个用C语言编写的名为QDOS的操作系统的重写。

旁注:操作系统仍然需要汇编代码才能运行,因为需要许多与硬件无关的信息(例如,在x86上读取页面错误时的CR2)。 Bootloader和BIOS(旧版本)是用汇编语言编写的,因为它们非常特定于硬件,需要设置诸如中断和堆栈指针之类的东西。

答案 1 :(得分:1)

C是一种编译语言,而不是解释语言。 C程序以及C运行时库被编译成机器代码,因此它们不需要加载任何类型的运行时环境(如解释器或虚拟机)来执行。

编译程序(包括内核)的入口点将调用其运行时库并在执行程序之前执行所需的任何初始化,但这是所有机器代码。