首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

什么,C语言编译器是用C语言写的?!

第一次听说C语言编译器是用C语言写的时候,很多人觉得难以理解。C语言编译器怎么能够用C语言写呢?鸡都没有,如何生蛋呢?蛋没有,如何孵化出鸡呢?

实际上有种技术叫做bootstrapping,翻译过来叫做自举。什么意思呢?

比如最早要实现C语言编译器,肯定不能用C语言写,因为没有可用的C语言编译器。

这个时候就可以用汇编语言写一个简易的C语言编译器C0,它是可执行程序,语法上只能部分支持C语言。但是没有关系,这个时候就可以写C语言程序了,在C0支持的有限的语法条件下,写一个功能强大一点的C语言编译器,再用C0编译前面的代码,得到可执行程序C1,功能比C0更加强大,能够支持的C语言的语法更加丰富。这个时候就可以扔掉前面用汇编语言写的C0了。

继续重复上面的步骤,得到编译器C2, C3……

最终我们可以得到一个可以完全支持C语言标准的编译器Cx,有了它我们就可以编译任何用C语言写的代码了。

我们只需要最后保留最后一次生成的Cx编译器和源代码就可以了。

这个就是编程语言自举,有了这过程,我们才说C语言编译器是用 C语言写的。

提个问,那汇编语言最早用什么语言写的呢?欢迎网友留言自己的答案。

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OW0d2Stta5RTkGcyS9ULUD3g0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

相关快讯

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券