我只是想知道C编译器是用哪种语言编写的,请说一些与C不同的语言。
我只是想知道C编译器是用哪种语言编写的,请说一些与C不同的语言。
这是一篇很棒的阅读材料:《Reflections on Trusting Trust》,作者是Ken Thompson。文章首先概述了最初的C编译器是如何编写的,具体来说是通过引导技术。虽然可能不能直接回答你的问题,但可以让你有所启发。
GCC是用C语言编写的。大多数C编译器都是用C语言编写的。
在为某个平台上的语言(任何有编译自己的编译器野心的语言——COBOL是一个合理的例外,但还有很多其他语言)首次制作编译器时,会有一个引导阶段,但一旦你拥有了编译器,那么你就可以用该语言编写编译器。
除此之外,在汇编语言中进行编写太昂贵了。
最初的C编译器是由K&R用一种叫做B或者BCPL的前身语言编写的。但是一旦C编译器运行得足够好,他们就转换到了C语言,并开始使用每个连续版本来编译下一个版本。
C语言中许多奇怪的特性(例如前缀和后缀自增运算符)存在的原因是因为它们代表了PDP-11上第一个C编译器开发时的特殊寻址模式,或者它们帮助编译器在编译自己的下一个版本时适应内存。
这就是整个故事的全部。
根据使用的C编译器,它很可能是用汇编语言编写的,然后最终可能变成了自编译,因此部分代码是用C编写的。
您可以在http://gcc.gnu.org/viewcvs/branches/上浏览GCC的源代码。
debug.com
的 a
(汇编)命令,从而编写了一个汇编器; 然后我又用汇编语言编写了另一个汇编器。 - ChrisW你必须指定编译器。
在我看来,用 Perl 编写编译器可能是最容易的。