.NET程序编译原理

导语:html

CPU只认识二进制代码,那么C#源代码是怎样变成CPU可识别的二进制代码的呢?ide

步骤以下:工具

一、C#源码spa

二、运用VS自带的命令提示窗口,使用csc命令将C#源码转成程序集(EXE文件或DLL文件),程序集里面主要由MSIL(微软中间语言)组成,经过.NET Reflector工具以将程序集进行反编译,能够看到里面的微软中间语言。.net

三、运行EXE文件后,.net framework也开始运行,里面的CLR(公共语言运行时)中的JIT(即时编译器)将中间语言转成本地平台的CPU指令,并将指令发给CPU执行。htm


疑点:blog

一、为何程序集不直接变成二进制代码?这样看起来岂不是更快?get

不一样品牌不一样型号的CPU,同一动做的指令是不同的,C,C++是直接转二进制的,它只是将语言的代码编译成不一样CPU的交集的功能,而.NET程序的编译,首先会先判断本机的CPU星号,JIT将中间语言转成本地平台的CPU指令,能够充分地运用当前CPU的每个功能,因此,并非C,C++的效率就比C#高,C#有时候比C,C++执行效率更高。编译器

二、.NET能够跨语言吗?源码

能够,VB.NET有VB编译器将VB语言转成微软中间语言,其他的就不须要你去作了,其他的同理。

三、.NET跨平台吗?

能够,运用mono


附图:





转载这里

相关文章
相关标签/搜索