1.CLR简介
全称:Common Language Runtime(公共语言进行时)
属性:一种托管模块
使用对象:面向CLR的所有语言(C#、Basic、IL...)
核心功能:内存管理、程序集加载、安全性、异常处理、线程同步
2. 源代码与CLR的关系
3.CLR托管模块的组成部分
【PE32 或 PE32+ 头】
标准 Windows PE 文件头,类似于“公公对象文件格式”(Common Object File Format,COFF)头。如果这个头使用 PE32 格式,文件能在 Windows 的 32 位或 64 位版本上运行。如果这个头使用 PE32+ 格式,文件只能在 Windows 的 64 位版本上运行。这个头还标识了文件类型,包括 GUI,CUI 或者 DLL,并包含一个时间标记来指出文件的生成时间。对于只包含 IL 代码的模块,PE32(+) 头的大多数信息会被忽视。对于包含本地 CPU 代码的模块,这个头包含了与本地 CPU 代码有关的信息
【CLR 头】
包含是这个模块成为一个托管模块信息(可由 CLR 和一些实用程序进行解释)。头中包含了需要的 CLR 版本,一些标志(flag),托管模块入口方法(Main 方法)的 MethodDef 元数据标记(token),以及模块的元数据、资源、强名称、一些 flag 以及其它不太重要的数据项的位置/大小
【元数据】
每个托管模块都包含元数据表。主要有两种类型的表:描述源代码中定义的类型和成员的表;描述源代码引用的类型和成员的表
【IL代码】
编译器编译代码时生成的代码。在运行时,CLR 将 IL 编译成本地 CPU 指令