CLR学习(2)
Table of Contents
1 关于CLR是什么?
- .NET代码都包含与自己相关的信息叫做metadata。
- CLR提供CTS(CLS也有功劳),所以可以在不同编程语言之间共享原代码。
- 用metadata管理代码信息(不是利用注册表),所以代码易于安装。
- 使用统一的数据类型和类库,所以编程语言的选择变得不重要了,而且易于团队开发。
2 代码在CLR中的运行过程
2.1 选择编译器
首先CLR选择编译器,因为CLR中可以运行不同语言开发出来的代码。
2.2 把代码编译成MSIL
CLR利用编译器生成MSIL(microsoft intermediate language)和metaData把他们加载到PE(Protable executable file)。
MSIL:解释语言,包含代码信息,让JIT易于编译成机器语言。与操作系统和编程语言无关。
PE:可执行文件格式,Windows下就是DLL和EXE
2.3 用JIT编译器把MSIL编译成机器语言
有两种方式:
- 只编译当前执行的代码段
- 整个代码一次性编译
JIT会检测代码的安全性
2.4 执行代码
代码首次调用会被编译成机器代码,再次调用的时候就不需要重新编译了。
相关工具:
- MSIL生成器 - MSIL Assemble(ilasm.exe)
- MSIL反编译器
3 平台结构
附1:.NET平台结构
附2:Csharp项目结构