从实践中学习.net程序的运行原理

(1)       由原程序编译成程序集。

我们写完代码后,编译出来的DLL文件或EXE文件,该文件称为程序集,程序集包括MSIL以及元数据(元数据中包含类、属性以及类之间关系等数据)。不管是VB.NET还是C#,最后生成的程序集都包括MSIL以及元数据。

 

(2)       将MSIL编译成本地代码。

使用本机映像生成器(NGEN.exe)工具将MSIL编译成可以直接在本地执行的本地代码,并保存到本地映像中。

 

(3)       运行程序时,内部都干了些什么

当我们每次运行.net程序时,CLR都会即时对MSIL进行编译成本地代码,并执行。实际上,我们也可以使用NGen.exe工具将我们的程序集生成本地代码,这样可以一定程度上提高程序的启动速度。

 

(4)       实践例子

1、 首先,我们写一个简单的程序,并生成程序集,见下图:

2、 打开.net自带的反编译工具ILDASM,如下图:

从实践中学习.net程序的运行原理_第1张图片

 

3、 我们再打开我们生成的程序集,看看里面的中间语言代码(MSIL),如下图:

从实践中学习.net程序的运行原理_第2张图片

 看到了吗,图中的代码就是程序的中间代码。

4、 现在,让我们手工把它编译成本地代码,打开.net的命令行工具,并使用NGen.exe工具将我们的程序集编译成本地代码,输入命令,ngen + 程序集的绝对路径,如下图:

从实践中学习.net程序的运行原理_第3张图片

看到没有,已经编译成本地代码映像了。

5、 最后,让我们看看已经生成的本地代码映像,输入ngen /show StudyMSIL,如下图:

从实践中学习.net程序的运行原理_第4张图片

^_^ 看到了吗,这就是我们的本地代码映像文件

你可能感兴趣的:(.net)