C编译器语言

时间:2010-08-20 11:45:03

标签: c compiler-construction

我只想知道编写C编译器的语言。请说出C以外的其他内容。

9 个答案:

答案 0 :(得分:7)

这是一篇很好的读物:肯·汤普森的Reflections on Trusting Trust。首先概述第一批C编译器的编写方式。引导捆扎技术是准确的。不能直接回答你的问题,但会给你一些见解。

答案 1 :(得分:4)

几乎所有主要的C编译器都是用C语言编写的。你可能会认为这有鸡与蛋的问题,但事实并非如此。该过程称为bootstrapping

答案 2 :(得分:2)

GCC是用C语言编写的。大多数C编译器都是用C语言编写的。

在第一次为某种语言生成编译器时,有一个启动捆绑阶段(任何具有pretensions能够编译自己的编译器的语言 - 在同一平台上COBOL是一个合理的例外,但还有许多其他例外),但是一旦你有了编译器,那么就用这种语言编写编译器。

除此之外,在汇编程序中执行它太昂贵了。

答案 3 :(得分:2)

非常原始的C编译器(由K& R)用一种名为B的前驱语言编写,或者可能是BCPL。但是一旦C编译器运行良好,它们就会转换为C并开始使用每个连续版本来编译下一个版本。

C的许多奇怪功能,如增量前和增量后运算符都存在,因为(a)它们代表了在第一个C开发的PDP-11上的特殊寻址模式,或者(b)它们帮助了编译器在编译自己的下一个版本时适合内存。

这就是故事的其余部分。

答案 4 :(得分:1)

根据哪个C编译器,它可能是用汇编编写的,然后它最终可能会自编译,所以部分用C语言编写。

您可以在http://gcc.gnu.org/viewcvs/branches/

自己浏览GCC的来源

答案 5 :(得分:1)

gcc是用C

编写的

Clang是用C ++编写的。

这是我认识的两个。

答案 6 :(得分:0)

您必须指定哪个编译器。

答案 7 :(得分:0)

在过去,人们会在汇编程序中编写C语言的一小部分,然后使用它来“引导”编译用C编写的更好的C编译器。这些天更常见的是为C编译器通过从已经有效的架构交叉编译的新架构。我相信很少有例如gcc编译器,它们不是用C或C ++编写的。

答案 8 :(得分:-1)

在我看来,用perl

编写编译器是最简单的