Cri*_*nSO 144 c# compiler-construction roslyn
我查看了http://referencesource.microsoft.com/上的源代码,看来所有源代码都在C#中.
我还查看了新的C#编译器平台(Roslyn)的源代码,它也在C#中.怎么可能?C#语言编译器是用C#编写的吗?还是我错过了一些明显的东西?如果C#编译器是用C#编写的,那么它是如何工作的?
Tho*_*que 221
原始的C#编译器不是用C#编写的,而是用C和C++编写的.新的Roslyn编译器是用C#编写的,但最初是用旧的编译器编译的.一旦新的编译器完成,它就能够编译自己的源代码:这称为bootstrapping.
小智 32
编译器是实用程序 - 它们将编程语言文本转换为机器代码.如果编程语言描述恰好是编译器的软件.....
编译器还可以为其他体系结构生成机器代码.例如,Apple使用基于Intel的服务器机架编译iOS.编译器不必运行它生成的ARM代码,只需将其写入磁盘即可.
编译器2.0必须用编译器1.0可以处理的语言编写,但它肯定可以创建具有优化等新功能的编译器2.0.然后,您可以使用编译器2.0重新编译源代码,并为自己制作更好的版本.同样,编译器不知道它正在制作自己的另一个版本.
如果我们回到时间的迷雾中,那么我们确实达到了一个我们没有编译器的地步 - 高级语言的第一次迭代.然后我们必须拿出铅笔和操作码书,然后在装配中写下第一本书.我们是如何编写第一个汇编程序的?直接输入机器代码,可能是在穿孔纸带上,或在前面板上翻转开关.
Jör*_*tag 15
编译器就像任何其他程序一样.关于它没有任何神奇或特殊的东西.它需要一些输入并产生一些输出.在这种特殊情况下,输入恰好是C#,输出恰好是CIL,但这与输入是一系列纳税申报并且输出是报告没有区别.