首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >C#编译器是用哪种语言编写的?

C#编译器是用哪种语言编写的?
EN

Stack Overflow用户
提问于 2014-12-17 04:22:22
回答 3查看 20.8K关注 0票数 158

我看过http://referencesource.microsoft.com/的源代码,似乎所有的源代码都是用C#编写的。

我还查看了新的C#编译器平台(Roslyn)的源代码,它也是用C#编写的。那件事怎么可能?C#语言编译器是用C#编写的吗?还是我漏掉了什么明显的东西?如果C#编译器是用C#编写的,那么它是如何工作的呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-12-17 04:24:58

最初的C#编译器不是用C#编写的,而是用C和C++编写的。新的罗斯林编译器是用C#编写的,但最初是用旧的编译器编译的。一旦新的编译器完成,它就能够编译自己的源代码:这就是所谓的bootstrapping

票数 244
EN

Stack Overflow用户

发布于 2014-12-17 08:06:01

编译器是实用程序-它们将编程语言文本转换为机器代码。如果编程语言描述的软件恰好是一个编译器.....

编译器还可以为其他架构生成机器码。例如,苹果使用基于英特尔的服务器机架编译iOS。编译器不必运行它生成的ARM代码,只需将其写入磁盘即可。

编译器2.0必须用编译器1.0可以处理的语言编写,但它肯定可以创建具有更新功能的编译器2.0,比如优化。然后,您可以使用编译器2.0重新编译源代码,并生成更好的版本。同样,编译器不知道它正在生成自己的另一个版本。

如果我们回到时间的迷雾中足够远,那么我们确实达到了没有编译器的地步--高级语言的第一次迭代。然后我们必须拿出铅笔和操作码手册,并在汇编中编写第一个。我们是如何编写第一个汇编器的?直接输入机器代码,可能在打孔的纸带上,或前面板上的翻转开关上。

票数 34
EN

Stack Overflow用户

发布于 2014-12-17 14:06:32

编译器只是一个程序,就像任何其他程序一样。它并没有什么神奇或特别之处。它需要一些输入并产生一些输出。在本例中,输入恰好是C#,输出恰好是CIL,但这与输入是一系列纳税申报单,输出是一份报告没有什么不同。

票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27513234

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档