如果你把你的源代码编译成受控代码,编译器将把你的源代码
转换为Microsoft中间语言(MSIL),这种代码将是不依赖于CPU的
,而且能够高效的转换为本地代码。MSIL拥有众多的指令,像
loading、storing、initializing以及基于对象的方法调用还有算
术逻辑运算、流控、直接内存存储和异常处理等。在代码执行之前
,必须通过JIT编译器将MSIL转换为基于特定CPU的代码。由于运行
时为它所支持的每一种计算机体系结构都提供了一到多个JIT编译
器,同样的MSIL指令集合能够被JIT编译并且在所有支持的体系结
构上面执行。
当编译器产生MSIL的同时,也产生元数据,元数据描述了代码
中的类型,包括每一种类型的定义、每一种类型成员的签名、代码
引用的成员以及在执行时运行时用到的其它数据。代码和元数据都
包括在一个PE文件中,这个PE文件基于并且扩展了已发布的
Microsoft PE以及曾经用于执行信息的通用对象文件格式
(Common Object File Format)(COFF)。PE这种文件格式,将有
利于帮助操作系统识别CLR镜像。在文件中和MSIL一起存在的元数据
将使得你的代码是自描述的,也就是说不再需要类型库或者IDL。在
执行过程中,运行是根据需要从文件中定位和提取元数据。