gcc编译器是用C语言编写的吗?还是用汇编写的?如果编译器是用C语言编写的,那么编译器用来编译编译代码的是什么?

推荐答案

gcc的具体历史记录见第GCC Wiki页.更一般的一点是,编译器通常最初是与其他编译器一起编译的,直到它们强大到可以自己编译为止.或者,也可以编写一个基本的编译器,可以在汇编程序中处理功能的子集,并从中构建.但再一次,这几乎再也不需要了.有很多可用的编译器,有多种语言.即使在斯蒂芬·约翰逊(Stephen Johnson)编写pcc(最早的C编译器之一)时,也有针对B的编译器,以及许多其他语言.gcc最初有几个编译器可供 Select 来构建它,RMS说他至少在最初的开发过程中使用了Pastel编译器.

请记住,C编译器不需要用C编写.如果愿意,可以用Perl编写.不要求给定平台的编译器最初在该平台上编写(嵌入式系统几乎总是在其他系统上编译).因此,有很多方法可以让你self 激励.

这个问题有一些与 bootstrap 编译器的第一个实例相关的有趣的微妙之处.如果你很聪明,你可以利用那条自助线跑something incredible, brilliant and terrifying英里.

C++相关问答推荐

新的memaligning函数有什么用?

如何在不修改字符串缓冲区早期使用的情况下覆盖字符串缓冲区

自定义应用程序上的日志(log)轮换问题

带有sigLongjMP中断I/O的异常处理程序

致命:ThreadSaniizer:在Linux内核6.6+上运行时意外的内存映射

我的程序在收到SIGUSR1信号以从PAUSE()继续程序时总是崩溃()

进程在写入管道时挂起

FRIDA-服务器成为端口扫描的目标?

无法在OpenGL上绘制三角形

链接到底是如何工作的,我在这里到底做错了什么

C代码可以在在线编译器上运行,但不能在Leetcode上运行

如何在双向表中实现线程安全,每个条目仅使用4位,同时避免任何全局锁?

C语言中的数字指针

C语言中浮点数的取整方式浮点数尾数超过23位时如何取整剩余部分

用C++构建和使用DLL的困惑

Linux分段故障(核心转储)

与外部SPI闪存通信时是否应禁用中断?

在printf()中用%.*S格式填充长度为0的字符串是否会调用任何UB?如果是,是哪一个?

GCC认为这是一个VLA是对的吗?

如何找出C中分配在堆上的数组的大小?