2012-08-27 43 views
0

我只是很可能知道在哪个平台上操作系统编码。哪个平台的C语言编码?

根据我的知识。

用C语言编写的Windows内核。 Linux内核也是用C语言编写的。

但仍然在操作系统?

在哪个平台C语言编写?

回答

3

是的,Windows内核和Linux内核都是用C编写的。大多数操作系统往往都是。
虽然有其他语言编写的操作系统,但例如Chorus kernel是用C++编写的。这样做的好处是,一旦设法让编译器在机器上运行(通常通过在另一台已经具有工作编译器/交叉编译器的机器上编译它),机器本身可以编译更新到自己的编译器而不需要维护另一个编译器。

+0

也许有点挑剔,但操作系统内核的很大一部分是用汇编语言编写的,大部分是在设备上运行的低级驱动程序,比如驱动程序。 –

+0

如果C语言是用汇编语言编写的,那么在哪个语言汇编程序中写入? –

+0

现在,汇编程序可能以几乎任何语言编写,很可能是C.很显然,* first *汇编程序是用机器代码编写的,必须手动汇编,但那是很久以前的事了。 –

1

C编译器的大部分部分(如gcc)都是用C语言编写的。当然,你需要一些东西来引导你的编译器,这样它才能编译它自己。那么这将是一个较低类型的语言,如Assembler

+0

我认为现在支持一个新的平台,它可能通常是一个交叉编译器,它将为新平台生成引导编译器。 – Joey

+0

是的,但最初他们不得不从一个没有高级语言的地方开始,对吧? ;) –

+0

当然;但那是很久以前的事了。我怀疑有人会使用汇编程序现在开始一个新的编译器:) – Joey

-2

首先,你可能想用真正的句子改善你的问题。

二, C不是写在平台上,它是用另一种编程语言编写的。 大多数编译器都是用汇编语言编写的,这是一种稍微可读的发送给处理器的实际机器代码版本。 我不知道是否有其他的编译器,用一些中间语言编写,但最终,一切都归结为编译为机器码的汇编代码。

+0

不,大多数C编译器都是用C语言编写的(如果C1001错误是正确的,MSVC++甚至可能在某些部分用C++编写)。 –

+0

我试图保持简单的答案,说它最终归结为汇编,因为它似乎令人困惑,C编译器是用C编写的。但你纠正我是正确的。 – Minion91

+0

关键是现在的编译器是复杂的编译器,交叉编译编译器比直接在汇编中编写简单的C编译器要简单得多。 –

0

C语言是被认为是Self Hosting的许多语言之一 - 也就是说,编译器可以编译自己的源代码,它使用编译器设计用于编译的相同语言编写。

您可能还想看看Bootstrapping的过程,这是用于获取特定语言的第一个编译器在给定平台上运行的过程 - 正如其他人已经指出的那样,这可以通过跨平台编译,或通过用不同的语言编写原始编译器,但其他技术也是可能的。