代码在CLR中的运行过程
1、选择编译器
首先CLR选择编译器,因为CLR中可以运行不同语言开发出来的代码。
2、把代码编译成MSIL
CLR利用选择的编译器生成MSIL(Microsoft intermediate language)和metadata把她们加载到PE(portable executable file)。
MSIL:解释语言,包含代码信息,让JIT易于编译成机器语言。与操作系统和编程语言无关。
PE:可执行文件格式,windows就是DLL或EXE了。
3、用JIT编译器把MSIL编译成机器语言
有两种方式一种是只编译当前执行的代码段,另一种是把整个代码一次性编译。JIT会检测代码的安全性。
4、 执行代码
代码首次调用就会编译成机器代码,再次调用的时候就不再重新编译了。
----------------
所以CLR的作用是把不同的语言例如c#,VB等等编译出来的程序集,转换成机器可以执行的代码,不同的托管程序用的都是一个CLR。