为什么C语言编译器能用C语言编写?( 三 )
因此第一个C语言编译器的原型完全可能是用B语言或者混合B语言与PDP汇编语言编写的 。
事实上 , B语言的执行效率比较低 , 但是如果全部用汇编语言来编写 , 不仅工作量巨大 , 而且汇编语言的可读性极差 , 很容易就会出错!
上一张图大家感受一下这巨大的差别!!!
C语言
为了克服这个困难 , 早期的C语言编译器就采取了一个取巧的办法先用汇编语言编写一个C语言的一个子集的编译器 , 再通过这个子集去递推完成完整的C语言编译器 。
大致过程如下
C语言
先创造一个只有C语言最基本功能的子集 , 记作C0语言 , C0语言已经足够简单了 , 可以直接用汇编语言编写出C0的编译器 。
依靠C0已有的功能 , 设计比C0复杂 , 但仍然不完整的C语言的又一个子集C1语言 , 其中C0属于C1 , C1属于C , 用C0开发出C1语言的编译器 。
推荐阅读
- 魔兽世界|魔兽TBC:为什么玩家期待跨区组队?降低组队难度,无需频繁换区
- 李儒|三国杀:为什么叫李儒时代的骄傲,他到底有什么好骄傲的?厉害吗
- 池子|“为什么优菈总是在让人始料未及的版本到来?我还没准备好呀!”
- fpx战队|为什么同样是S赛夺冠,FPX的热度,完全没法跟IG与EDG相比?
- 王者荣耀|王者荣耀为什么要出限定皮肤?看完你就明白了
- 手机游戏|CFHD:神秘组织为什么开发生化手雷呢?关键是为了赚更多钱
- 打野|王者荣耀:不管什么打野都出一件肉装,李白都出暴裂,为什么?
- 抖音|正在火热追我的富二代,在得知我生日后突然消失不见,到底为什么
- |为什么很多人都说剑圣JUGG是伪核,后期能力不行!
- steam|原神:常驻五星废弃率排名,为什么大家越来越在乎“强度”了