1. 概述
本章主要是介绍从源代码到可执行程序的过程中,CLR所做的工作。
2. 名词解释
① 公共语言运行时(Common Language Runtime, CLR),是一个可由多种语言使用的 运行时,核心功能(内存管理、程序集加载、安全性、异常处理和线程同步)可由面向CLR的所有语言使用。
② PE32:32位 Microsoft Windows 可移植执行体。
PE32+:64位 Microsoft Windows 可移植执行体。
③ 元数据 是一组数据表,这些数据表描述了 模块中定义的内容 或者 托管模块引用的内容。
④ 托管模块 是一个标准的PE32或者PE32+文件,他们都需要CLR才能执行。由 PE32(+)头、CLR头、元数据 及 IL中间代码 组成。
⑤ 程序集 是一个或多个模块/资源文件的逻辑性分组,是重用、安全性以及版本控制的最小单元。
⑥ 清单(manifest) 是由 元数据表 构成的另一种集合,描述了构成程序集的文件。
⑦ 本地代码生成器(NGen.exe),将IL代码编译成本地代码。
⑧ Framework类库(FCL),Microsoft发布的一组DLL程序集的统称。
⑨ 通用类型系统(Common Type System, CTS):Microsoft制定的,描述类型定义和行为的规范。
⑩ 公共语言规范(Common Language Specification, CLS): 定义了一个最小功能集。任何编译器生成的类型要想兼容于由其他“符合CLS、面向CLR“的语言所生成的组件,就必须支持这个功能集。
3. 执行过程
① 将源代码编译成托管模块。
② 将托管模块合并成程序集。(程序集链接器AL.exe)
③ 加载公共语言运行时。
④ 执行程序集的代码。
CLR的JIT(just-in-time)编译器将IL转换成本地cpu指令。
一次编译,多次运行。期间进行代码优化。
⑤ 与非托管代码的互操作性。
4. 总结
介绍CLR相关的各个部分,概述CLR的执行逻辑。