繁体   English   中英

第一个C编译器是如何编写的?

[英]How was the first C compiler written?

确实是第一个C编译器是用C本身编写的吗? 然后,它是如何执行和编译的? 或者,该编译器是用汇编语言编写的吗?

丹尼斯·里奇(Dennis Ritchie)撰写的C语言历史记录对此进行了很好的描述。

只提供他在那儿写的内容的摘要,请使用他的文章获得更详细的信息。 C语言从BCPL语言开始,Ken Thomson可以使用在其General Electrics 635主框架上运行的编译器。 汤姆森对这种语言不满意,因此使用BCPL为B语言编写了一个编译器,这是BCPL以后的演进步骤,消除了BCPL中的一些技术问题。

他们使用B在其PDP-7微型计算机上创建程序,尽管其中大多数只是玩具程序,但该机器的硬件功能非常有限。 Thomson采取的重要步骤是用B本身重写B编译器。 常见的引导步骤。

然后,通过一个短暂的中间步骤NB(新B)逐步调整了该编译器,使其开始类似于C。PDP-11微型计算机在该步骤中发挥了作用,为它们提供了足够的空间来改进语言和编译器。

第一个C编译器不是用C编写的,通常在编写编译器时,我们使用汇编语言或另一种编程语言,通常在第一次编译后,便用其本机语言重写该编译器。

有许多用C编写然后用其本机语言重写的编程语言:例如Java,Ada ...

阅读Dennis Ritchie关于primevalC的注释表明,与鸡和鸡蛋一样,C是通过引导程序从前体语言及其自身的编译器演化而来的。 物种形成的时间尺度比家蝇更快。

甚至可以看到编译器源代码陷入了发展动荡之中。 该注释链接到从磁带备份还原的快照的两个快照。 此代码也已放置在github上。 这些快照构成了中间化石,比K&R语法要早几年。 丹尼斯对其中一盘磁带的描述表明,它是被引导的结构的冻结帧:

在我开始将其更改为使用结构本身之前,“ prestruct-c”是编译器的副本。

换句话说,编译器已得到增强以支持结构,但尚未使用它们。 进行磁带备份的好时机...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM