Expert .NET 2.0 IL Assembler
——精通.NET 2.0 IL汇编程序
关于作者
绪论
概要目录
电子书下载
第1部分 快速入门
第1章 简单示例
1.1 CLR简介
1.2 简单示例:The Code
程序头
类声明
字段声明
方法声明
全局项
映射字段
数据声明
作为占位符的值类型
调用非托管代码
1.3 类的预先声明
1.4 小结
第2章 代码增强
2.1 代码压缩
2.2 代码保护
2.3 小结
第3章 使代码更简单
3.1 别名
3.2 Compilation Control Directives
3.3 关联当前类和它的引用项
3.4 小结
第2部分 底层结构
第4章 托管可执行体文件的结构
4.1 PE/COFF头
MS-DOS 头/占位程序 和 PE特征
COFF头
PE头
区域头
4.2 CLR头
头结构
Flags字段
EntryPointToken字段
VTableFixups字段
StrongNameSignature字段
重定位区段
正文区段
数据区段
数据常量
V-表
非托管导出表
线程局部存储
4.3 小结
阶段1:初始化
阶段2:源代码解析
阶段3:图像生成
阶段4:完成
第5章 元数据表的组织
5.1 什么是元数据
5.2 堆和表
堆
通用元数据头
元数据表流
5.3 RID和标志
RID
标志
编码标志
5.4 元数据和验证
5.5 小结
第3部分 基本组件
第6章 模块和程序集
6.1 什么是程序集
6.2 私有程序集和共享程序集
6.3 作为逻辑执行单元的应用程序域
6.4 清单
6.5 程序集元数据表和声明
6.6 AssemblyRef元数据表和声明
被引用的程序集的自动侦测
6.7 加载程序搜索程序集
6.8 Module元数据表和声明
6.9 ModuleRef元数据表和声明
6.10 File元数据表和声明
6.11 托管资源元数据表和声明
6.12 ExportedType元数据表和声明
6.13 ILAsm中清单声明的次序
6.14 单模块和多模块程序集
6.15 元数据验证规则小结
Assembly表验证规则
AssemblyRef表验证规则
Module表验证规则
ModuleRef表验证规则
File表验证规则
Manifest表验证规则
ExportedType表验证规则
第7章 名称空间和类
7.1 类的元数据
TypeDef元数据表
TypeRef元数据表
InterfaceImpt元数据表
NestedClass元数据表
ClassLayout元数据表
7.2 命名空间和完整类名
ILAsm命名规则
命名空间
完整类名
7.3 类的特性
标志
类的可见性和友元程序集
类的引用
父类型
接口的实现
类的布局信息
7.4 接口
7.5 值类型
值的装箱和拆箱
值类型的实例成员
值类型的派生
7.6 枚举
7.7 委托
7.8 内嵌类型
7.9 类的扩充
7.10 元数据验证规则小结
TypeDef表验证规则
Enumeration-Specific验证规则
TypeRef表验证规则
InterfaceImpt表验证规则
NestedClass表验证规则
ClassLayout表验证规则
第8章 基本类型和签名
8.1 CLR中的基本类型
基本数据类型
数据指针类型
函数指针类型
向量和数组
修饰符
本地类型
变量类型
8.2 签名中的类表示
8.3 签名
调用约定
字段特征
方法和属性签名
MenberRef签名
间接调用签名
局部变量签名
类型说明
8.4 签名验证规则小结
第9章 宇段和数据常量
9.1 字段元数据
定义一个字段
引用一个字段
9.2 实例和静态字段
9.3 默认值
9.4 映射字段
9.5 数据常量声明
9.6 显示布局和联合声明
9.7 全局字段
9.8 构造函数和数据常量
9.9 元数据验证规则小结
Field表验证规则
FieldLayout表验证规则
FieldRVA表验证规则
FieldMarshal表验证规则
Constant表验证规则
MemberRef表验证规则
第10章 方法
10.1 方法元数据
方法表的记录项
方法标志
方法名
方法实现标志
方法参数
引用方法
方法实现元数据
10.2 静态方法、实例方法和虚方法
10.3 显示方法重载
10.4 方法重载和访问性
10.5 方法头特性
10.6 局部变量
10.7 类的构造函数
类的构造函数和预初始化标志
模块的构造函数
10.8 实例构造函数
10.9 实例的终止函数
10.10 变量参数列表
10.11 方法重载
10.12 全局方法
10.13 元数据验证规则小结
Method表验证规则
Param表验证规则
MethodImpl表验证规则
第11章 泛型类型
11.1 泛型元数据
11.2 约束标志
11.3 在ILAsm中定义泛型
11.4 类型参数的寻址
11.5 泛型实例
11.6 定义泛型:继承、实现、约束
11.7 定义泛型:循环依赖性
11.8 泛型成员:泛型中的虚方法
11.9 内嵌泛型
11.10 元数据验证规则小结
第12章 泛型方法
12.1 泛型方法元数据
12.2 泛型方法签名
12.3 在ILAsm中定义泛型方法
12.4 调用泛型方法
12.5 重载虚泛型方法
12.6 元数据验证规则小结
第4部分 深入执行体引擎
第13章 IL指令
13.1 长参数和短参数指令
13.2 标签和流控制指令
无条件转移指令
有条件转移指令
比较转移指令
switch指令
break指令
托管EH块退出指令
EH块结束指令
ref指令
13.3 运算指令
栈操作
常量加载
间接加载
间接存储
算术操作
溢出算术操作
位逻辑运算操作
移位操作
转换操作
溢出转换操作
逻辑条件检查操作
块操作
13.4 寻址参数和局部变量
方法参数加载
方法参数地址加载
方法参数存储
方法参数列表
局部变量加载
局部变量引用加载
局部变量存储
局部块存储单元分配
前缀指令
13.5 寻址字段
13.6 调用方法
直接调用
间接调用
尾部调用
有约束的虚调用
13.7 寻址类和值类型
13.8 向量指令
向量创建
元素地址加载
元素加载
元素存储
13.9 代码验证
第14章 托管型异常处理
14.1 EH子句的内部表示
14.2 EH子句的类型
14.3 EH子句声明的标签格式
14.4 EH子句声明的作用域格式
14.5 处理异常
14.6 异常类型
加载异常
JIT编译器异常
执行引擎异常
互操作异常
子类异常
非托管异常映射
12.7 EH子句结构化规则小结
第5部分 特殊组件
第15章 事件和属性
15.1 事件和委托
15.2 事件元数据
Event表
EventMap表
MethodSemantics表
15.3 事件声明
15.4 属性元数据
Property表
PropertyMap表
15.5 属性声明
15.6 元数据验证规则小结
Event表的验证规则
EventMap表的验证规则
Property表的验证规则
PropertyMap表的验证规则
MethodSemantics表的验证规则
第16章 自定义特性
16.1 自定义特性的概念
16.2 CustomAttribute元数据表
16.3 自定义特性的值编码
16.4 自定义特性的口头描述
16.5 自定义特性的分类
执行引擎和JIT编译器
互操作子系统
安全
远程子系统
Visual Studio调试器
程序集链接器
CLR兼容器
伪自定义特性
16.6 元数据验证规则小结
第17章 安全特性
17.1 声明性安全
17.2 声明性操作
17.3 安全许可权限
访问许可权限
身份许可权限
自定义许可权限
许可权限集
17.4 声明性安全元数据
17.5 权限集合块编码
17.6 安全特性声明
17.7 元数据验证规则小结
第18章 托管和非托管代码的互操作
18.1 替换程序和包装器
P/Invoke替换程序
实现映射元数据
IJW替换程序
COM可调用包装器
运行时可调用包装器
18.2 数据编组
Bittable类型
In/Out参数
字符串数组
对象编组
更多对象编组
数组编组
委托编组
18.3 为非托管方法提供托管方法作为回调
18.4 作为非作为非托管输出的托管方法
输出表的编组
18.5 小结
第19章 多语言工程
19.1 IL反编译器
19.2 双向解析的原则
19.3 创造性的双向解析
19.4 使用类的增强
19.5 通过双向解析进行模块链接
19.6 ASMMETA:解决循环依赖性
19.7 内嵌在高级语言中的IL
19.8 调试模式中的编译
19.9 小结
第6部分 附录
附录A ILAsm语法
附录B 元数据表
附录C IL指令集
附录D IL Assembler和IL Disassembler的命令行选项
附录E 离线验证工具
索引
部分专有名词翻译:
Expert
Property 属性
Attribute 特性
Managed 托管的
Executable File 可执行体文件
Compact及Compacting
Class Augmentation 类的扩充
Derivation 派生
Convention 约定
Signature 特征/签名 ?
Label 标签
Branching 转移
Cyclic Dependencies 循环依赖性
Clause 子句
Pseudo 伪的
Signature 签名(第一版翻译为特征,这里不沿袭)
posted @ 2008-07-19 19:15
包建强 阅读(2181)
评论(30) 编辑 收藏 所属分类:
.NET MSIL