技术改变世界!学习改变自己!

每天进步一点点,遥不可及的事情,在你一点一滴的努力下,也会变成现实。

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

我们可以使用任何支持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 2010-03-31 21:23  阿捷  阅读(807)  评论(0编辑  收藏  举报