王朝网络
分享
 
 
 

.NET探秘MSIL权威指南(图灵程序设计丛书,微软技术系列)

王朝导购·作者佚名
 
.NET探秘MSIL权威指南(图灵程序设计丛书,微软技术系列)  点此进入淘宝搜索页搜索
  特别声明:本站仅为商品信息简介,并不出售商品,您可点击文中链接进入淘宝网搜索页搜索该商品,有任何问题请与具体淘宝商家联系。
  参考价格: 点此进入淘宝搜索页搜索
  分类: 图书,计算机与互联网,程序语言与软件开发,语言与开发工具,.net,
  品牌: 利丁(Serge Lidin)

基本信息·出版社:人民邮电出版社

·页码:421 页

·出版日期:2009年09月

·ISBN:7115201765/9787115201768

·条形码:9787115201768

·包装版本:第1版

·装帧:平装

·开本:16

·正文语种:中文

·丛书名:图灵程序设计丛书,微软技术系列

产品信息有问题吗?请帮我们更新产品信息。

内容简介《.NET探秘MSIL权威指南》是IL汇编语言的权威之作,深入地讲解了IL的全部内容,是.NET底层开发人员必备的参考书,对于从概念设计到实现和维护等软件开发所有阶段都很有价值。《.NET探秘MSIL权威指南》内容基于.NET 2.0版本,同时,考虑到.NET 3.0/3.5在CLR/IL上没有作任何改动,且即将推出的 .NET 4.0也只是在CLR上稍作修改而并没有涉及IL语言,所以,《.NET探秘MSIL权威指南》对于目前各个版本的.NET Framework而言都是适用的。

《.NET探秘MSIL权威指南》适合所有.NET开发人员、讲师、研究人员阅读。

作者简介Serge Lidin,曾是.NET CLR小组核心开发人员之一,是MSlL语言的设计者以及该语言规范的作者之一,负责设计并开发了IL汇编器、IL反汇编器等核心组件。目前任职于微软Phoenix小组。开发新一代编译技术底层框架。

包建强,复旦人。微软2008年MVP。现就职于HP某航空项目,从事Sllverlight开发和Prism框架设计工作。技术博客:http://jax.cnblogs.corn/。

媒体推荐想真正理解.NET框架的内部机理吗?阅读本书吧。”

——Gunnar Peipman。微软MVP

“凭借本书和微软的规范、文档,我们编写IL代码生成器是如此美妙过瘾!”

——Robert Salita,资深编译器工程师

编辑推荐《.NET探秘MSIL权威指南》由微软资深工程师、MSIL语言设计者之一撰写,详尽而深入地讨论了.NET CLR的内部结构和运作。首次阐述了MSIL语言的方方面面,是极为宝贵的.NET技术资料。通过研读《.NET探秘MSIL权威指南》,你将大大加深自己对.NET框架的理解,从而开发出更加紧凑、更高性能的.NET代码。

.NET框架已经是微软技术的核心平台,但是,对于许多开发人员而言,它仍然是黑盒子。遇到各种实际的性能、调试等问题时很容易让人陷入不知所措的境地。

深入洞悉.NET技术内幕,MSIL唯—权威指南,Amazon五星巨著,学习和参考皆宜。

目录

第一部分 快速入门

第1章 简单示例 2

1.1 CLR基础 2

1.2 简单示例:The Code 5

1.2.1 程序头 7

1.2.2 类声明 8

1.2.3 字段声明 9

1.2.4 方法声明 10

1.2.5 全局项 14

1.2.6 映射字段 16

1.2.7 数据声明 16

1.2.8 作为占位符的值类型 17

1.2.9 调用非托管代码 17

1.3 类的预先声明 18

1.4 小结 20

第2章 代码增强 21

2.1 精简代码 21

2.2 保护代码 23

2.3 小结 28

第3章 使代码更简单 29

3.1 别名 29

3.2 编译控制伪指令 31

3.3 关联当前类及其引用项 34

3.4 小结 35

第二部分 底层结构

第4章 托管可执行文件的结构 38

4.1 PE/COFF头 39

4.1.1 MS-DOS头/Stub和PE签名 40

4.1.2 COFF头 40

4.1.3 PE头 43

4.1.4 节头 47

4.2 CLR头 49

4.2.1 头结构 50

4.2.2 Flags字段 51

4.2.3 EntryPointToken字段 52

4.2.4 VTableFixups字段 52

4.2.5 StrongNameSignature字段 53

4.2.6 重定位节 53

4.2.7 文本节 55

4.2.8 数据节 56

4.2.9 数据常量 56

4.2.10 V表 57

4.2.11 非托管导出表 57

4.2.12 线程局部存储(TLS) 59

4.2.13 资源 60

4.2.14 非托管资源 60

4.2.15 托管资源 62

4.3 小结 63

4.3.1 第一阶段:初始化 63

4.3.2 第二阶段:源代码解析 63

4.3.3 第三阶段:映像生成 63

4.3.4 第四阶段:完成 64

第5章 元数据表的组织 65

5.1 什么是元数据 65

5.2 堆和表 67

5.2.1 堆 67

5.2.2 通用元数据头 68

5.2.3 元数据表流 70

5.3 RID和标记 73

5.3.1 RID 73

5.3.2 标记 73

5.3.3 编码标记 75

5.4 元数据有效性检查 78

5.5 小结 79

第三部分 基本组件

第6章 模块和程序集 82

6.1 什么是程序集 82

6.2 私有程序集和共享程序集 82

6.3 作为逻辑执行单元的应用程序域 83

6.4 清单 84

6.5 Assembly元数据表和声明 86

6.6 AssemblyRef元数据表和声明 87

6.7 加载程序搜索程序集 89

6.8 Module元数据表和声明 92

6.9 ModuleRef元数据表和声明 92

6.10 File元数据表和声明 93

6.11 托管资源元数据表和声明 94

6.12 ExportedType元数据表和声明 97

6.13 ILAsm中清单声明的次序 98

6.14 单模块程序集和多模块程序集 99

6.15 元数据有效性规则概要 100

6.15.1 Assembly表有效性规则 100

6.15.2 AssemblyRef表有效性规则 100

6.15.3 Module表有效性规则 101

6.15.4 ModuleRef表有效性规则 101

6.15.5 File表有效性规则 101

6.15.6 ManifestResource表有效性规则 101

6.15.7 ExportedType表有效性规则 102

第7章 命名空间和类 103

7.1 类的元数据 104

7.1.1 TypeDef元数据表 105

7.1.2 TypeRef元数据表 106

7.1.3 InterfaceImpt元数据表 106

7.1.4 NestedClass元数据表 106

7.1.5 ClassLayout元数据表 107

7.2 命名空间和类的完整名称 107

7.2.1 ILAsm命名约定 108

7.2.2 命名空间 109

7.2.3 类的完整名称 110

7.3 类的特性 111

7.3.1 标志 111

7.3.2 类的可见性和友元程序集 113

7.3.3 类的引用 113

7.3.4 父类型 114

7.3.5 接口实现 114

7.3.6 类的布局信息 115

7.4 接口 115

7.5 值类型 117

7.5.1 值的装箱和拆箱 117

7.5.2 值类型的实例成员 118

7.5.3 值类型的派生 118

7.6 枚举 119

7.7 委托 119

7.8 嵌套类型 121

7.9 类的扩充 123

7.10 元数据有效性规则概要 125

7.10.1 TypeDef表有效性规则 125

7.10.2 特定于枚举的有效性规则 126

7.10.3 TypeRef表有效性规则 126

7.10.4 InterfaceImpt表有效性规则 126

7.10.5 NestedClass表有效性规则 127

7.10.6 ClassLayout表有效性规则 127

第8章 基本类型和签名 128

8.1 CLR中的基本类型 128

8.1.1 基本数据类型 128

8.1.2 数据指针类型 129

8.1.3 函数指针类型 131

8.1.4 向量和数组 131

8.1.5 修饰符 133

8.1.6 本地类型 134

8.1.7 可变类型 136

8.2 签名中类的表示 138

8.3 签名 139

8.3.1 调用约定 139

8.3.2 字段签名 139

8.3.3 方法和属性签名 140

8.3.4 MemberRef签名 140

8.3.5 间接调用签名 141

8.3.6 局部变量签名 141

8.3.7 类型说明 142

8.4 签名有效性规则概要 143

第9章 字段和数据常量 144

9.1 字段元数据 144

9.1.1 定义字段 145

9.1.2 引用字段 146

9.2 实例字段和静态字段 147

9.3 默认值 147

9.4 映射字段 150

9.5 数据常量声明 151

9.6 显式布局和联合声明 152

9.7 全局字段 155

9.8 构造函数与数据常量 156

9.9 元数据有效性规则概要 158

9.9.1 Field表有效性规则 159

9.9.2 FieldLayout表有效性规则 159

9.9.3 FieldRVA表有效性规则 159

9.9.4 FieldMarshal表有效性规则 160

9.9.5 Constant表有效性规则 160

9.9.6 MemberRef表有效性规则 160

第10章 方法 161

10.1 方法元数据 161

10.1.1 Method表的记录字段 162

10.1.2 方法标志 162

10.1.3 方法名称 164

10.1.4 方法实现标志 165

10.1.5 方法参数 166

10.1.6 引用方法 167

10.1.7 方法实现元数据 168

10.2 静态方法、实例方法和虚方法 168

10.3 显式方法重写 172

10.4 方法重写和可访问性 177

10.5 方法头特性 178

10.6 局部变量 180

10.7 类的构造函数 181

10.7.1 类的构造函数和beforefieldinit标志 182

10.7.2 模块构造函数 184

10.8 实例构造函数 184

10.9 实例终结器 186

10.10 可变参数列表 187

10.11 方法重载 189

10.12 全局方法 191

10.13 元数据有效性规则概要 191

10.13.1 Method表有效性规则 192

10.13.2 Param表有效性规则 193

10.13.3 MethodImpl表有效性规则 193

第11章 泛型类型 195

11.1 泛型类型元数据 196

11.1.1 GenericParam元数据表 198

11.1.2 GenericParamConstraint元数据表 198

11.1.3 TypeSpec元数据表 199

11.2 约束标志 199

11.3 在ILAsm中定义泛型类型 199

11.4 类型参数寻址 200

11.5 泛型类型实例化 201

11.6 定义泛型类型:继承、实现、约束 202

11.7 定义泛型类型:循环依赖 203

11.8 泛型类型的成员 205

11.9 嵌套泛型类型 210

11.10 元数据有效性规则概要 213

第12章 泛型方法 214

12.1 泛型方法元数据 214

12.2 泛型方法签名 216

12.3 在ILAsm中定义泛型方法 216

12.4 调用泛型方法 217

12.5 重写虚泛型方法 219

12.6 元数据有效性规则概要 223

第四部分 深入执行引擎

第13章 IL指令 226

13.1 长参数和短参数指令 227

13.2 标号和流程控制指令 227

13.2.1 无条件转移指令 228

13.2.2 有条件转移指令 228

13.2.3 比较转移指令 228

13.2.4 switch指令 230

13.2.5 break指令 230

13.2.6 托管EH块退出指令 230

13.2.7 托管EH块结束指令 231

13.2.8 ret指令 231

13.3 运算指令 231

13.3.1 栈处理 231

13.3.2 常量加载 232

13.3.3 间接加载 233

13.3.4 间接存储 233

13.3.5 算术操作 234

13.3.6 溢出算术操作 235

13.3.7 位操作 236

13.3.8 移位操作 236

13.3.9 转换操作 237

13.3.10 溢出转换操作 238

13.3.11 逻辑条件检查指令 238

13.3.12 块操作 239

13.4 寻址参数和局部变量 239

13.4.1 方法参数加载 239

13.4.2 方法参数地址加载 240

13.4.3 方法参数存储 240

13.4.4 方法参数列表 240

13.4.5 局部变量加载 240

13.4.6 局部变量引用加载 241

13.4.7 局部变量存储 241

13.4.8 局部块分配 241

13.4.9 前缀指令 241

13.5 寻址字段 242

13.6 调用方法 243

13.6.1 直接调用 243

13.6.2 间接调用 244

13.6.3 尾部调用 245

13.6.4 带约束的虚调用 246

13.7 寻址类和值类型 247

13.8 向量指令 250

13.8.1 向量创建 250

13.8.2 元素地址加载 251

13.8.3 元素加载 251

13.8.4 元素存储 252

13.9 代码可验证性 252

第14章 托管异常处理 255

14.1 EH子句的内部表示 255

14.2 EH子句的类型 256

14.3 EH子句声明的标号格式 258

14.4 EH子句声明的作用域格式 259

14.5 处理异常 262

14.6 异常类型 264

14.6.1 加载程序异常 264

14.6.2 JIT编译器异常 264

14.6.3 执行引擎异常 265

14.6.4 互操作异常 266

14.6.5 子类异常 266

14.6.6 非托管异常映射 266

14.7 EH子句结构化规则概要 267

第五部分 特殊组件

第15章 事件和属性 270

15.1 事件和委托 270

15.2 事件元数据 273

15.2.1 Event表 273

15.2.2 EventMap表 274

15.2.3 MethodSemantics表 274

15.3 事件声明 275

15.4 属性元数据 277

15.4.1 Property表 278

15.4.2 PropertyMap表 279

15.5 属性声明 279

15.6 元数据有效性规则概要 280

15.6.1 Event表有效性规则 280

15.6.2 EventMap表有效性规则 281

15.6.3 Property表有效性规则 281

15.6.4 PropertyMap表有效性规则 281

15.6.5 MethodSemantics表有效性规则 281

第16章 自定义特性 283

16.1 自定义特性的概念 283

16.2 CustomAttribute元数据表 284

16.3 自定义特性的值编码 285

16.4 自定义特性的逐字描述 287

16.5 自定义特性声明 288

16.6 自定义特性的分类 291

16.6.1 执行引擎和JIT编译器 292

16.6.2 互操作子系统 293

16.6.3 安全 295

16.6.4 Remoting子系统 296

16.6.5 Visual Studio调试器 297

16.6.6 程序集链接器 297

16.6.7 公共语言规范(CLS)兼容性 298

16.6.8 伪自定义特性 298

16.7 元数据有效性规则概要 300

第17章 安全特性 301

17.1 声明性安全 301

17.2 声明性操作 302

17.3 安全许可权限 303

17.3.1 访问许可权限 303

17.3.2 身份许可权限 306

17.3.3 自定义许可权限 308

17.3.4 许可权限集 309

17.4 声明性安全元数据 310

17.5 许可权限集的Blob编码 311

17.6 安全特性声明 311

17.7 元数据有效性规则概要 312

第18章 托管代码和非托管代码的互操作 314

18.1 Thunk和包装器 315

18.1.1 P/Invoke Thunk 315

18.1.2 实现映射元数据 317

18.1.3 IJW Thunk 317

18.1.4 COM可调用包装器 318

18.1.5 运行时可调用包装器 319

18.2 数据封送 320

18.2.1 blittable类型 320

18.2.2 in/out参数 321

18.2.3 字符串封送 322

18.2.4 对象封送 323

18.2.5 更多对象封送 324

18.2.6 数组封送 325

18.2.7 委托封送 325

18.3 为非托管代码提供托管方法作为回调 326

18.4 作为非托管导出的托管方法 328

18.5 小结 334

第19章 多语言工程 336

19.1 IL反汇编器 336

19.2 双向解析的原则 340

19.3 创造性的双向解析 341

19.4 使用类的扩充 342

19.5 通过双向解析进行模块链接 342

19.6 ASMMETA:解决循环依赖 344

19.7 内嵌在高级语言中的IL 346

19.8 在调试模式下编译 347

19.9 小结 352

第六部分 附录

附录A ILAsm语法 356

附录B 元数据表 376

附录C IL指令集 387

附录D IL汇编器和IL反汇编器的命令行选项 394

附录E 离线验证工具 399

部分术语翻译说明 416

……[看更多目录]

序言不要惊讶,坐在你面前娓娓而谈的,并不是一个技术Geek,而是流连于淮海路迤逦风光的性情中人。编程只是我诸多业余爱好中的一项。当然,有时会稍微热情些,比如说,从狄更斯的《双城记》中能联想到设计模式的精华。

一直在酝酿一篇有些不同的序言,即开头没有诸多名人的溢美之词,结尾也没有感谢父母家人的肺腑之言,我只想谈一谈阅读本书时所要注意的问题,以及本书的不足之处。

作者Serge Lidin是位慈眉善目的老伯,我们曾坐在微软总部的长椅上攀谈良久。他曾经是微软IL小组的成员,所写的内容都是第一手资料,所以写起本书来当仁不让,章节划分相当合理。但是,正如作者所说,他不善笔墨,所以本书读起来非常枯燥。当然,CLR底层本身就是非常枯燥的,要把它写得精彩生动,很难做到。除非借助C#来讲解IL和元数据,才会吸引人,如某位印度作家编著的C#to IL。建议大家先去阅读后面这本书,它只是基于.NET 1.1的,没有涉及泛型,内容没有前者丰富,但是,它要简单得多。

言归正传。本书是学习和研究IL和元数据的首选图书,它可以作为一本技术参考手册,睡觉前翻翻也是不错的。本书并没有介绍任何IL性能调优的方法,而这正是开发人员所关心的,这不能不说是一个遗憾。

IL和元数据,也就是PE结构体,是静态的内容。对于运行期间的动态执行过程,完全不是这么回事。本书没有涉及后面这部分内容,毕竟,这超出了本书的范围。有兴趣的读者可以去研究Rotor,可以参考SharedSource CLI Essentials一书。

作者非常认真负责。我们书信往来半年之久,修正了原书中的一些错误。同时,统一了.NET和汇编语言中的中文术语,其中,参考了侯捷先生和李建忠先生译作中的诸多神来之笔。此外,还在字里行间添加了大量的译注,有助于读者理解。

文摘插图:

.NET探秘MSIL权威指南(图灵程序设计丛书,微软技术系列)

第1章简单示例

本章概要介绍几Asm——MsIL汇编语言。(Ms几表示微软中间语言,本章稍后将会讨论。)

本章先讨论一个相对简单的ILAsm程序,随后提出了一些修改意见,展示了如何用ILAsm表示.NET程序设计中的概念和元素。

本章并没有讲如何用ILAsm编写程序,但是会帮助用户理解IL汇编器(ILASM)和IL反汇编器(ILDASM)做了什么,以及如何通过这些理解并借助这些工具来分析.NET程序的内部结构。你还将了解到一些发生在CLR中的神秘而有趣的事件——相当吸引人,希望这能促使你读完本书的其他部分。

注解简单起见,在本书中将IL汇编语言简写ILAsm。不要将其与ILAsM相混淆,后者是IL汇编器(也就是ILAsm汇编器)在.NET文档中的简写形式。

1.1CLR基础

.NETcLR不仅是.NET诸多概念中的一个,更是.NET的核心。(注意,有时候我会将CLR称为运行库。)我们将重点关注.NETd?真正发生行为的部分——CLR,而不是.NET平台的完全描述。

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
 
更多商品
迷人居纯棉环保活性印花双人床单四件套 点缀生活(专业品牌,值得信耐!)
迷人居纯棉环保活性印花双人床单四件套 秋思(专业品牌,值得信耐!)
中公教育·全真模拟预测试卷·政法(2010中公版)(上海市公务员录用考试教材)
钛的金属学和热处理(钛系列丛书)
电工技术基本功(世纪英才中职项目系列规划教材·电工电子类专业)
软件工程师标准日本语(初级)(附光盘1张)
计算机科学概论(第10版)(英文版)(国外著名高等院校信息科学与技术优秀教材)(Computer Science An Overview 10th Edition)
网页设计与制作教程:Photoshop CS3/Flash 8/Dreamweaver 8(21世纪高等学校计算机规划教材,高校系列)
Auto CAD2009机械制图实例教程(中国职业技术教育学会科研项目优秀成果,高等职业教育“双证课程”培养方案规划教材,机电基础课程系列)
按图索骥学修空调器(附光盘1张)(按图索骥学技术系列图书)
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有