.NET程序编译原理_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > .NET程序编译原理

.NET程序编译原理

 2013/9/1 19:09:39  软谋在线软件培训  博客园  我要评论(0)
  • 摘要:导语:CPU只认识二进制代码,那么C#源代码是怎样变成CPU可识别的二进制代码的呢?步骤如下:1、C#源码2、运用VS自带的命令提示窗口,使用csc命令将C#源码转成程序集(EXE文件或DLL文件),程序集里面主要由MSIL(微软中间语言)组成,通过.NETReflector工具可以将程序集进行反编译,可以看到里面的微软中间语言。3、运行EXE文件后,.netframework也开始运行,里面的CLR(公共语言运行时)中的JIT(即时编译器)将中间语言转成本地平台的CPU指令
  • 标签:程序 .net 编译 net

导语:

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

步骤如下:

1、C#源码

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

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

 

疑点:

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

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

2、.NET可以跨语言吗?

可以,VB.NET有VB编译器将VB语言转成微软中间语言,其余的就不需要你去做了,其余的同理。

3、.NET跨平台吗?

可以,运用mono

 

附图:

发表评论
用户名: 匿名