08 2008 档案

摘要:返回目录 本章讨论了程序集和模块的组织、部署和执行。它还对元数据片断提供了逐条的检查,负责程序集和模块的同一性和交互性:清单表(manifest)。正如你可能从第一章回想到的,一个程序集可以包括很多模块(托管的PE文件)。一个多模块程序集的任何模块可以——而且确实可以,一般地说——携带着它自己的清单表,但是每个程序集只有一个模块携带着这个清单表,其中包括了程序集的同一性。因此,每个程序集,... 阅读全文
posted @ 2008-08-30 23:10 包建强 阅读(719) 评论(0) 推荐(0) 编辑
摘要:Zune是只在美国可以买的,所以托了美国的同学带回来的,大家不要直接购买哦! 阅读全文
posted @ 2008-08-30 00:19 包建强 阅读(920) 评论(8) 推荐(0) 编辑
摘要:并发模式主要是为了处理以下两种类型的问题: 1) 共享资源:每次只能由一个操作访问共享资源,从而不至于产生死锁。 2) 操作顺序。在访问共享资源时,有时要保证多个访问操作按照特定的顺序进行。 以下为11种并发模式: 1. 单线程执行模式:最简单的解决方案,确保了每次最多只有一个线程访问一个资源。 2. 静态锁定顺序:死锁的解决方案。 3. 锁对象:通过锁定唯... 阅读全文
posted @ 2008-08-29 22:00 包建强 阅读(1359) 评论(3) 推荐(0) 编辑
摘要:返回目录 小结 讨论过托管映像文件的结构以及IL编译器生成这些文件的方式,我将小结一下IL编译器创建一个托管PE文件的步骤。PE文件的创建表现为以下4个步骤: 步骤1:初始化 1. 初始化内部缓冲器 2. 在内存创建一个PE文件的空模板,包括MS-DOS头和stub、PE签名、COFF头和PE头。 3. 输入地址表和CLR头被分配在.text区段中。 步... 阅读全文
posted @ 2008-08-27 23:51 包建强 阅读(816) 评论(1) 推荐(0) 编辑
摘要:返回目录 重定位区段 映像文件的.reloc区段包括了Fixup表,它为映像文件中的所有修正保存了入口。RVA和.reloc区段的大小都由PE头的Base Relocation表目录定义。Fixup表由很多块修正组成,每一块将这些修正保存为一个4KB的页。这些块都是按4字节排列的。 每一个修正都描述了映像文件中特定地址的位置,以及当加载这个映像文件到内存的时候,OS加载器应该如何修改这个位置上... 阅读全文
posted @ 2008-08-27 23:48 包建强 阅读(1003) 评论(0) 推荐(0) 编辑
摘要:返回目录 CLR头 PE头的第15个目录入口包括了RVA和映像文件中的CLR头的大小。这个CLR头,包括了所有特定于CLR的数据入口和其他的信息,应该位于这个映像文件中的一段只读区段。IL编译器将CLR头放在了.text区段。 头的结构 CLR头定义在CorHdr.h中——一个头文件被分配为Microsoft .NET Framework SDK的一部分,如下: Code highlig... 阅读全文
posted @ 2008-08-27 23:40 包建强 阅读(1106) 评论(0) 推荐(0) 编辑
摘要:返回目录 小结 既然你已经了解元数据原则上是如何被组织的,你要准备好检测这些特定的元数据项和表示它们的表。所有进一步的考虑都将集中在4个元数据流上——#Strings、#Blob、#US和#~——因为#GUID只在一个元数据表中被引用到(Module表),而#-流(未优化的元数据)则从来不会被ILAsm编译器发布。 这里对一些人有一些建议,他们想知道这是否一个好的主意——在细微操作元数据的借口... 阅读全文
posted @ 2008-08-26 09:23 包建强 阅读(455) 评论(0) 推荐(0) 编辑
摘要:返回目录 元数据和验证 然而,这个“好的暗示”,仅仅是一个暗示。在前述的部分提供了关于你可以从一个列的确定的类型引用哪些表的信息。这并不意味着你应该引用所有你能够引用的表。在表5-10中列出的一些群组的符号类型比在CLR现有的发布版本中实际上可接受的要更加广阔。例如,MemberRefParent群组,描述了能够包含MemberRef记录的父级别的表,包括TypeDef表。但是这个元数据发布A... 阅读全文
posted @ 2008-08-26 09:22 包建强 阅读(581) 评论(0) 推荐(0) 编辑
摘要:返回目录 RID和符号 记录的索引和符号,是无符号整数值,用于索引元数据表中的记录。RID是简单的索引,只适用于显示指定的表,而符号则携带了识别它们所引用的元数据表的信息。 RID RID是一个识别符,是一个在包括了记录的表中从1开始的行号。有效的RID的范围从1延展到地址表中的记录的数量,1和这个数量值也包括在内。RID只用于元数据的内部;元数据发布和API重... 阅读全文
posted @ 2008-08-26 09:21 包建强 阅读(1003) 评论(0) 推荐(0) 编辑
摘要:返回目录 堆和表 从逻辑上讲,元数据被表示为一组有名称的流,附带着每个流表示一类的数据。这些流被分为两种类型:元数据堆和元数据表。 String堆:这种类型的堆包括了0休止符字符的字符串,以UTF-8格式编码。这些字符串直接首尾相接。这个堆的第一个字节总是为0,而且这导致了堆中的第一个字符串总是为空字符串的结果。这个堆的最后一个字节也必须是0(换句话说,堆中的最后一个字符串,就像其它的一样,必... 阅读全文
posted @ 2008-08-26 09:19 包建强 阅读(1168) 评论(0) 推荐(0) 编辑
摘要:返回目录 本章对元数据及其构造方式进行了概述。也还描述了元数据验证。后面的章节将会分析单独的元数据项——基于这里所表示的基础。我理解你可能的急躁——“这个家伙不要拖延时间,什么时候才能进入正题?”——但是我仍然奉劝你不要跳过本章。远远不是拖时,我只是系统地接近这个对象。这看上去可能是一样的,但是动机是完全不同的,而这正是我所关心的。 什么是元数据? 元数据的定义:描述数据的数据。然而,就像... 阅读全文
posted @ 2008-08-26 09:14 包建强 阅读(727) 评论(0) 推荐(0) 编辑
摘要:《Expert .NET 2.0 IL Assembler》第4章第一节第一部分,介绍了COFF头。 阅读全文
posted @ 2008-08-04 08:47 包建强 阅读(1683) 评论(5) 推荐(0) 编辑
摘要:讨论过托管图像文件的结构以及IL编译器生成这些文件的方式,我将小结一下IL编译器创建一个托管PE文件的步骤。PE文件的创建表现为以下4个步骤: 步骤1:初始化 1. 初始化内部缓冲器 2. 在内存创建一个PE文件的空模板,包括MS-DOS头和stub、PE签名、COFF头和PE头。 3. 输入地址表和CLR头被分配在.text区域中。 步骤2:源代... 阅读全文
posted @ 2008-08-04 00:02 包建强 阅读(449) 评论(0) 推荐(0) 编辑
摘要:返回目录 PE头 PE头,紧跟在COFF头的后面,提供了OS加载器的信息。虽然这个头被称为可选择的头(optional header),它只是可选择的,在某种意义上是说,对象文件通常不包括它。对于PE文件而言,这个头是强制性的。 PE文件的大小是不固定的。它取决于定义在头中的数据目录的数量,并由COFF头中的SizeOfOptionalHeader字段详细指明。定义... 阅读全文
posted @ 2008-08-03 23:43 包建强 阅读(937) 评论(0) 推荐(0) 编辑