一、CLR的执行模型(1)

1.1 将源码编译成托管模块   

  • 公共语言运行时(Common Language Runtime,CLR) 是一个可由多种编程语言使用的“运行时”。CLR的核心功能(内存管理、程序集加载、安全性、异常处理和线程同步)。
  • 托管模块: 标准的32位Microsoft Windows 可移植执行体(PE32)文件或者标准的64位Window 可移植执行体(PE32+),它们都需要CLR才能执行。
  • 托管模块各个部分(如图1.1.1):  
    组成部分 说明
    PE32或PE32+头 标准的window PE文件头,类型与‘公共对象文件格式’头
    CLR头

    包括使这个模块成为托管模块信息(可由CLR和一些实用程序进行解释)。头部包含CLR要求的版本一些标志(flag) ,托管模块入口方法(Main)MethodDef元数据token以及模块的元数据、资源、强名称、一些标志及其他不重要的数据项的位置/大小。

    元数据  每个托管模块都包含元数据表,主要两张表:1.描述源代码定义的类型和成员.2引用的类型和成员
    IL(中间语言)代码  编译器编译源代码时生成的代码。在运行时,|CLR将IL编译成本机CPU指令

                                                                                               图1.1.1    

1.2将托管模块合并成程序集

  •  程序集   是抽象概念,初学者很难把握它的精髓。首先,程序集是一个或多个模块/资源的逻辑性分组。在CLR的世界中,程序集相当于"组件"。
  • 将托管模块合并成程序集

                                                                                                              图1.2.1

posted @ 2019-01-29 14:41  小小糖  阅读(133)  评论(0编辑  收藏  举报