《Microsoft .NET IL汇编语言程序设计》PDF下载

  • 购买积分:12 如何计算积分?
  • 作  者:(加)Serge Lidin著;袁勤勇等译
  • 出 版 社:北京:机械工业出版社
  • 出版年份:2003
  • ISBN:7111124812
  • 页数:322 页
图书介绍:本书深入剖析.NET公共语言运行环境的内部结构和操作,并且介绍了描述该结构及操作的IL汇编语言的使用方法。

第一部分 快速入门 3

第1章 简单示例 3

1.1 公共语言运行环境简介 3

1.2 开始简单示例 6

1.2.1 程序头 7

1.2.2 类声明 8

1.2.3 字段声明 9

1.2.4 方法声明 10

1.2.5 全局项 14

1.2.6 映射字段 15

1.2.7 数据声明 16

1.2.8 作为占位符的值类型 16

1.2.9 调用非托管代码 17

1.3 类的提前声明 18

1.4 小结 19

第2章 增强代码 20

2.1 代码维护 20

2.2 保护代码 22

2.3 小结 26

第二部分 底层结构 29

第3章 托管可执行文件的结构 29

3.1 PE/COFF头 30

3.1.1 MS-DOS占位程序和PE特征 30

3.1.2 COFF头 30

3.1.3 PE头 32

3.1.4 区域头 36

3.2.1 头结构 38

3.2 公共语言运行环境头 38

3.2.2 Flags字段 39

3.2.3 EntryPointToken字段 40

3.2.4 VTableFixups字段 41

3.2.5 StrongNameSignature字段 41

3.3 重定位区域 42

3.4 正文区域 43

3.5.1 数据常量 44

3.5.2 V表 44

3.5 数据区域 44

3.5.3 非托管导出表 45

3.5.4 线程局部存储 46

3.6 资源 47

3.6.1 非托管资源 47

3.6.2 托管资源 49

3.7 小结 49

4.1 什么是元数据 51

第4章 元数据表组织 51

4.2 堆和表 52

4.2.1 堆 52

4.2.2 通用元数据头 54

4.2.3 元数据表流 55

4.3 RID和标识 58

4.3.1 RID 58

4.3.2 标识 58

4.3.3 编码标识 60

4.4 元数据验证 62

4.5 小结 63

第5章 模块和配件 67

5.1 什么是配件 67

5.1.1 私有配件和共享配件 67

第三部分 基本组件 67

5.1.2 作为逻辑执行单元的应用域 68

5.2 清单 69

5.2.1 配件元数据表和声明 70

5.2.2 AssemblyRef元数据表和声明 71

5.2.3 加载程序搜索配件 73

5.2.6 File元数据表和声明 75

5.2.4 Module元数据表和声明 75

5.2.5 ModuleRef元数据表和声明 75

5.2.7 托管资源元数据和声明 76

5.2.8 ExportedType元数据表和声明 78

5.3 ILAsm中清单声明的次序 79

5.4 单模块配件和多模块配件 80

5.5 元数据验证规则 81

5.5.1 Assembly表验证规则 81

5.5.5 File表验证规则 82

5.5.4 ModuleRef表验证规则 82

5.5.3 Module表验证规则 82

5.5.2 AssemblyRef表验证规则 82

5.5.6 ManifestResource表验证规则 83

5.5.7 ExportedType表验证规则 83

第6章 名称空间和类 84

6.1 类元数据 85

6.1.1 TypeDef元数据表 85

6.1.4 NestedClass元数据表 86

6.1.3 InterfaceImpl元数据表 86

6.1.2 TypeRef元数据表 86

6.1.5 C1assLayout元数据表 87

6.2 名称空间和全类名 87

6.2.1 ILAsm命名规则 87

6.2.2 名称空间 88

6.2.3 全类名 89

6.3 类属性 90

6.3.1 标志 90

6.3.3 父类型 92

6.3.2 类引用 92

6.3.4 接口实现 93

6.3.5 类布局信息 93

6.4 接口 94

6.5 值类型 94

6.5.1 装箱值类型和拆箱值类型 95

6.5.2 值类型的实例成员 95

6.6 枚举 96

6.7 委托 96

6.5.3 值类型的派生 96

6.8 嵌套类型 98

6.9 类的扩增 100

6.10 元数据验证规则 101

6.10.1 TypeDef表的验证规则 101

6.10.2 指定枚举的验证规则 102

6.10.3 TypeRef表的验证规则 103

6.10.4 InterfaceImpl表的验证规则 103

6.10.5 NestedClass表的验证规则 103

6.10.6 ClassLayout表的验证规则 103

7.1.1 基本数据类型 104

第7章 基本类型和特征 104

7.1 公共语言运行环境中的基本类型 104

7.1.2 数据指针类型 105

7.1.3 函数指针类型 106

7.1.4 向量和数组 107

7.1.5 修饰符 108

7.1.6 本机类型 110

7.1.7 变量类型 112

7.2 特征中的类表示 113

7.3.2 字段特征 114

7.3 特征 114

7.3.1 调用约定 114

7.3.3 方法和属性特征 115

7.3.4 MemberRef特征 115

7.3.5 间接调用特征 116

7.3.6 局部变量特征 116

7.3.7 类型说明 117

7.4 特征验证规则 117

8.1 字段元数据 119

第8章 字段和数据常量 119

8.2 实例和静态字段 122

8.3 默认值 122

8.4 映射字段 124

8.5 数据常量声明 125

8.6 显式布局和联合声明 126

8.7 全局字段 128

8.8 构造函数与数据常量 130

8.9.1 Field表的验证规则 132

8.9 元数据验证规则 132

8.9.2 FieldLayout表的验证规则 133

8.9.3 FieldRVA表的验证规则 133

8.9.4 FieldMarshal表的验证规则 133

8.9.5 Constant表的验证规则 133

8.9.6 MemberRef表的验证规则 133

第9章 方法 135

9.1 方法元数据 135

9.1.1 方法表记录的记录项 135

9.1.2 方法标志 136

9.1.4 方法实现标志 138

9.1.3 方法名称 138

9.1.5 方法参数 139

9.1.6 引用方法 140

9.1.7 方法实现元数据 141

9.2 静态、实例和虚拟方法 141

9.3 显式方法重载 145

9.4 方法头属性 148

9.5 局部变量 149

9.7 实例构造函数 151

9.6 类构造函数 151

9.8 实例的终止函数 152

9.9 变量参数列表 153

9.10 全局方法 155

9.11 元数据验证规则 156

9.11.1 Method表验证规则 156

9.11.2 Param表验证规则 157

9.11.3 MethodImpl表验证规则 158

第10章 IL指令 161

第四部分 执行引擎剖析 161

10.1 长参数和短参数指令 162

10.2 标号和流控制指令 162

10.2.1 无条件转移指令 162

10.2.2 有条件转移指令 162

10.2.3 比较转移指令 163

10.2.4 switch指令 164

10.2.5 break指令 164

10.2.6 SEH块退出指令 164

10.3 运算指令 165

10.3.1 栈控制 165

10.2.7 SEH结束指令 165

10.2.8 ret指令 165

10.3.2 常量加载 166

10.3.3 间接加载 166

10.3.4 间接存储 167

10.3.5 算术操作 167

10.3.6 溢出算术操作 168

10.3.8 移位操作 169

10.3.9 转换操作 169

10.3.7 位逻辑运算操作 169

10.3.10 溢出转换操作 170

10.3.11 逻辑条件检查操作 171

10.3.12 块操作 171

10.4 寻址参数和局部变量 172

10.4.1 方法参数加载 172

10.4.2 方法参数地址加载 172

10.4.3 方法参数存储 172

10.4.7 局部变量存储 173

10.4.8 局部块存储单元分配 173

10.4.5 局部变量加载 173

10.4.6 局部变量引用加载 173

10.4.4 方法参数列表 173

10.4.9 前缀指令 174

10.5 寻址字段 174

10.6 调用方法 175

10.6.1 直接调用 175

10.6.2 间接调用 176

10.6.3 尾部调用 176

10.7 寻址类和值类型 177

10.8 向量指令 179

10.8.1 向量创建 179

10.8.2 元素地址加载 180

10.8.3 元素加载 180

10.8.4 元素存储 181

10.9 代码验证 181

第11章 结构化异常处理 183

11.1 SEH子句的内部表示 183

11.2 SEH子句的类型 184

11.3 SEH子句声明的标号格式 185

11.4 SEH子句声明的作用域格式 187

11.5 处理异常 190

11.6 异常类型 191

11.6.1 加载程序异常 191

11.6.2 JIT编译器异常 192

11.6.3 执行引擎异常 192

11.6.4 互操作异常 193

11.6.5 子类异常 193

11.7 SEH子句结构化规则 194

11.6.6 非托管异常映射 194

第五部分 特殊组件 199

第12章 事件和属性 199

12.1 事件和委托 199

12.2 事件元数据 201

12.2.1 Event表 201

12.2.2 EventMap表 202

12.2.3 MethodSemantics表 202

12.3 事件声明 203

12.4 属性元数据 205

12.4.1 Property表 206

12.4.2 PropertyMap表 206

12.5 属性声明 206

12.6 元数据验证规则 208

12.6.1 Event表的验证规则 208

12.6.2 EventMap表的验证规则 208

12.6.3 Property表的验证规则 208

12.6.5 MethodSemantics表的验证规则 209

12.6.4 PropertyMap表的验证规则 209

第13章 定制属性 210

13.1 定制属性的概念 210

13.2 CustomAttribute元数据表 211

13.3 定制属性值编码 212

13.4 定制属性声明 213

13.5 定制属性分类 216

13.5.1 执行引擎和JIT编译器 217

13.5.2 互操作子系统 218

13.5.3 安全 219

13.5.4 远程子系统 220

13.5.5 Visual Studio .NET调试器 221

13.5.6 配件连接器 221

13.5.7 公共语言规范(CLS)兼容性 221

13.5.8 伪定制属性 222

13.6 元数据验证规则 223

第14章 安全属性 224

14.1 描述性安全 224

14.2 描述性操作 224

14.3.1 访问许可权限 226

14.3 安全许可权限 226

14.3.2 身份许可权限 229

14.3.3 定制许可权限 230

14.3.4 许可权限集 232

14.4 描述性安全元数据 232

14.5 安全属性声明 233

14.6 元数据验证规则 234

15.1 替换程序和包装器 237

第15章 托管和非托管代码的互操作 237

第六部分 互操作性 237

15.1.1 P/Invoke替换程序 238

15.1.2 实现映射元数据和验证规则 239

15.1.3 IJW替换程序 239

15.1.4 COM可调用包装器 240

15.1.5 运行时可调用包装器 241

15.2 数据编组 242

15.2.1 blittable类型 243

15.2.2 in/out参数 243

15.2.3 字符串编组 244

15.2.4 对象编组 245

15.2.5 类的编组 246

15.2.6 数组编组 246

15.2.7 委托的编组 247

15.3 为非托管方法提供托管方法作为回调 247

15.4 作为非托管输出的托管方法 251

第16章 多语言工程 257

16.1 IL反汇编器 257

16.2 双向解析的原则 260

16.4 使用类的增强 261

16.3 创造性的双向解析 261

16.5 通过双向解析进行模块连接 262

16.6 调试模式中的编译 263

第七部分 附录 271

附录A IL Assembler语法 271

附录B 元数据表 285

附录C IL指令集 294

附录D IL Assembler和IL Disassembler的命令行选项 302

附录E 离线验证工具 306