技术驱动生活,科技畅想未来!

坚持每天进步一点!

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

我们可以使用任何支持CLR的编程语言来创建源代码文件。然后使用相应的编译器来做语法检查和源代码分析。但是不管使用的是何种编译器,最后生成的结果都是一个托管模块(Managed Module)。托管模块是一个需要CLR才能执行的标准WindowsPE(Portable executable,简称PE)文件。

下表描述了一个托管模块的各个组成部分

组成部分

描述

PE表头

标准的Windows PE文件表头,类似于通用对象文件格式(Common Object File Format,简称COFF)表头。该表头指出了文件的类型:GUI(图像用户界面),CUI(控制台用户界面),或者DLL(译注:DLL在以前表示Windows中的动态链接库文件,即Dynamic Link Library,它是以动态链接的方式提供的一组函数库。在.net平台中,由于和传统的动态链接库文件有着相同的扩展名.dll,所以DLL文件的名称被沿用了下来,但其含义已经有所改变。.NET中的DLL特指程序集文件的一种形式)另外该表头还包括一个时间标记用于表示文件创建的时间。对于仅包含IL代码的模块,该表头的大多数信息会被忽略。对于包含有本地CPU代码的模块,该表头还会包含有关本地CPU代码的一些信息。

CLR表头

包含标识托管模块的一些信息(可以被CLR或者一些实用工具解析)。这些信息包括托管模块所需要的CLR版本号,一些标记,托管模块入口点方法(Main方法)的MethodRef元数据标记,以及有关托管模块的元数据、资源、强命名、标记和其他一些意义不是太大的信息的位置和尺寸

元数据

每个托管模块都包含一些源数据表。元数据表主要分两种,一种用于描述源代码中定义的类型和成员,一种用于描述源代码中引用的类型和成员

中间语言(IL)代码

编译器在编译源代码时产生的指令。CLR在运行时会将IL代码编译成本地CPU指令

大多数早先的编译器产生的代码都是面向特定CPU的体系的。

posted on 2009-03-08 12:48  ajiefjcn  阅读(206)  评论(0编辑  收藏  举报