1. Common Language Infrastructure 通用语言基础概述
2. Common Language Specification 公共语言规范
- 3.1. CTS 与面向对象编程的关系
- 3.2. 值和类型的关系
- 3.3. Locations 位置
- 3.4. 类型成员
- 3.5. 命名
- 3.6. Contracts 协议
- 3.7. 赋值兼容性
- 3.8. 类型安全和类型验证
- 3.9. Type definers 类型定义器
- 3.10. 成员继承
- 3.11. 成员定义
- 4.1. Components & assemblies 组件与程序集
- 4.2. 访问元数据
- 4.3. 非托管代码
- 4.4. 方法实现的元数据
- 4.5. 类布局
- 4.6. 程序集中的类型名称范围
- 4.7. 元数据的可扩展性
- 4.8. 全局,导入和导出
- 4.9. 范围静态
6. Virtual Execution System 虚拟执行系统
- 3.1. 通用语法表示法
- 3.2. 基本语法类别
- 3.3. 标识符
- 3.4. 标签和标签列表
- 3.5. 十六进制字节列表
- 3.6. 浮点数
- 3.7. 源文件行信息
- 3.8. 文件名
- 3.9. 特性和元数据
- 3.10. ILAsm 源文件
- 4.1. 程序集定义
- 4.2. assembly extern:引用程序集
- 4.3. module:模块声明
- 4.4. module extern:模块引用
- 4.5. 在模块或程序集内部的声明
- 4.6. class extern:导出类型定义
- 4.7. class extern forwarder:类型转发器
- 7.1. 泛型类型定义
- 7.2. 泛型和递归继承图
- 7.3. 泛型方法定义
- 7.4. GenArgs:实例化泛型类型
- 7.5. 泛型参数的协变和逆变
- 7.6. 实例化类型的赋值兼容性
- 7.7. 成员签名的有效性
- 7.8. 签名和绑定
- 7.9. 继承和重写
- 7.10. 显式方法重写
- 7.11. 泛型参数的约束
- 7.12. 对泛型类型的成员的引用
- 8.1. ClassHeader:Type Header
- 8.2. 类型定义的主体
- 8.3. 引入和重写虚方法
- 8.4. 方法实现要求
- 8.5. 特殊成员
- 8.6. 嵌套类型
- 8.7. 控制实例布局
- 8.8. 全局字段和方法
- 13.1. 方法描述符
- 13.2. 静态、实例和虚方法
- 13.3. CallConv:调用约定
- 13.4. MethodHeader:定义方法
- 13.5. 非托管方法
- 20.1. 元数据验证规则
- 20.2. Module: 0x00
- 20.3. TypeRef: 0x01
- 20.4. TypeDef: 0x02
- 20.5. Field: 0x04
- 20.6. MethodDef: 0x06
- 20.7. Param: 0x08
- 20.8. InterfaceImpl: 0x09
- 20.9. MemberRef: 0x0A
- 20.10. Constant: 0x0B
- 20.11. CustomAttribute: 0x0C
- 20.12. FieldMarshal : 0x0D
- 20.13. DeclSecurity: 0x0E
- 20.14. ClassLayout: 0x0F
- 20.15. FieldLayout: 0x10
- 20.16. StandAloneSig: 0x11
- 20.17. EventMap: 0x12
- 20.18. Event: 0x14
- 20.19. PropertyMap: 0x15
- 20.20. Property: 0x17
- 20.21. MethodSemantics: 0x18
- 20.22. MethodImpl: 0x19
- 20.23. ModuleRef: 0x1A
- 20.24. TypeSpec: 0x1B
- 20.25. ImplMap: 0x1C
- 20.26. FieldRVA: 0x1D
- 20.27. Assembly: 0x20
- 20.28. AssemblyProcessor: 0x21
- 20.29. AssemblyOS: 0x22
- 20.30. AssemblyRef: 0x23
- 20.31. AssemblyRefProcessor: 0x24
- 20.32. AssemblyRefOS: 0x25
- 20.33. File: 0x26
- 20.34. ExportedType: 0x27
- 20.35. ManifestResource: 0x28
- 20.36. NestedClass: 0x29
- 20.37. GenericParam: 0x2A
- 20.38. MethodSpec: 0x2B
- 20.39. GenericParamConstraint: 0x2C
- 21.1. BitMasks & Flags
- 21.1.1. AssemblyHashAlgorithm
- 21.1.2. AssemblyFlags
- 21.1.3. Culture
- 21.1.4. EventAttributes:Flags for Events
- 21.1.5. FieldAttributes:Fields
- 21.1.6. FileAttributes:Files
- 21.1.7. GenericParamAttributes:Generic Parameters
- 21.1.8. PInvokeAttributes:ImplMap
- 21.1.9. ManifestResourceAttributes:ManifestResource
- 21.1.10. MethodAttributes:Methods
- 21.1.11. MethodImplAttributes:MethodImpl
- 21.1.12. MethodSemanticsAttributes:MethodSemantics
- 21.1.13. ParamAttributes:Params
- 21.1.14. PropertyAttributes:Properties
- 21.1.15. TypeAttributes:Types
- 21.1.16. 签名中使用的元素类型
- 21.2. Blobs & Signatures
- 21.2.1. MethodDefSig
- 21.2.2. MethodRefSig
- 21.2.3. StandAloneMethodSig
- 21.2.4. FieldSig
- 21.2.5. PropertySig
- 21.2.6. LocalVarSig
- 21.2.7. CustomMod
- 21.2.8. TypeDefOrRefOrSpecEncoded
- 21.2.9. Constraint
- 21.2.10. Param
- 21.2.11. RetType
- 21.2.12. Type
- 21.2.13. ArrayShape
- 21.2.14. TypeSpec
- 21.2.15. MethodSpec
- 21.2.16. Short form signatures
- 21.3. Custom attributes
- 21.4. Marshalling descriptors 22. 元数据物理布局
- 22.1. 固定字段
- 22.2. File headers
- 23.1. 运行时文件格式的结构
- 23.2. PE Header
- 23.3. Section Headers
- 23.4. CIL 物理布局
- 1.1. 数据类型
- 1.2. 指令变体表
- 1.3. 堆栈转换图
- 1.4. 操作数类型表
- 1.5. 隐式参数强制转换
- 1.6. 对 CIL 代码序列的限制
- 1.7. 可验证性和正确性
- 1.8. 元数据 Token
- 1.9. 异常抛出
- 2.1. constrained. :在变量类型的值上调用成员
- 2.2. no. :可能跳过错误检查
- 2.3. readonly. :后续指令返回可控易变托管指针
- 2.4. tail. :调用终止当前方法
- 2.5. unaligned. (prefix) – 指针指令可能不对齐
- 2.6. volatile. :指针引用是易变的
- 3.1. add :添加数值
- 3.2. add.ovf.<signed> :添加整数值并检查溢出
- 3.3. and :按位与
- 3.4. arglist :获取参数列表
- 3.5. beq.<length> :相等分支
- 3.6. bge.<length> :大于或等于分支
- 3.7. bge.un.<length> :无符号 / 无序的大于或等于分支
- 3.8. bgt.<length> :大于分支
- 3.9. bgt.un.<length> :无符号 / 无序的大于分支
- 3.10. ble.<length> :小于或等于分支
- 3.11. ble.un.<length> :无符号 / 无序的小于或等于分支
- 3.12. blt.<length> :小于分支
- 3.13. blt.un.<length> :无符号 / 无序的小于分支
- 3.14. bne.un.<length> :不等于或无序分支
- 3.15. br.<length> :无条件分支
- 3.16. break :断点指令
- 3.17. brfalse.<length> :分支到假、空或零
- 3.18. brtrue.<length> :分支到非假或非空
- 3.19. call :调用方法
- 3.20. calli :间接方法调用
- 3.21. ceq :比较相等
- 3.22. cgt :比较大于
- 3.23. cgt.un :比较大于,无符号 / 无序
- 3.24. ckfinite :检查有限实数
- 3.25. clt :比较小于
- 3.26. clt.un :比较小于,无符号 / 无序
- 3.27. conv.<to type> :数据转换
- 3.28. conv.ovf.<to type> :带溢出检测的数据转换
- 3.29. conv.ovf.<to type>.un :带溢出检测的无符号数据转换
- 3.30. cpblk :从内存复制数据到内存
- 3.31. div :除法运算
- 3.32. div.un :除法运算整数值,无符号
- 3.33. dup :复制堆栈顶部的值
- 3.34. endfilter :结束异常处理过滤器子句
- 3.35. endfinally :结束异常块的 finally 或 fault 子句
- 3.36. initblk :将一块内存初始化为一个值
- 3.37. jmp :跳转到方法
- 3.38. ldarg.<length> :将参数加载到堆栈
- 3.39. ldarga.<length> :加载参数地址
- 3.40. ldc.<type> :加载数值常量
- 3.41. ldftn : 加载方法指针
- 3.42. ldind.<type> :间接加载值到堆栈
- 3.43. ldloc :将局部变量加载到堆栈
- 3.44. ldloca.<length> :加载局部变量地址
- 3.45. ldnull :加载空指针
- 3.46. leave.<length> :退出代码的受保护区域
- 3.47. localloc :在局部动态内存池中分配空间
- 3.48. mul :乘法运算
- 3.49. mul.ovf.<type> :带溢出检查的乘法运算
- 3.50. neg :取反
- 3.51. nop :无操作
- 3.52. not :按位取反
- 3.53. or :按位或
- 3.54. pop :移除堆栈的顶部元素
- 3.55. rem :计算余数
- 3.56. rem.un :计算整数余数,无符号
- 3.57. ret :从方法返回
- 3.58. shl ;左移整数
- 3.59. shr :右移整数
- 3.60. shr.un :无符号右移整数
- 3.61. starg.<length> :在参数槽中存储值
- 3.62. stind.<type> :间接从堆栈存储值
- 3.63. stloc :从堆栈弹出值到局部变量
- 3.64. sub :减去数值
- 3.65. sub.ovf.<type> :检查溢出的减法
- 3.66. switch :基于值的表切换
- 3.67. xor :按位异或
- 4.1. box :将可装箱值转换为其装箱形式
- 4.2. callvirt :调用与对象在运行时关联的方法
- 4.3. castclass :将对象转换为类
- 4.4. cpobj :将一个地址的值复制到另一个地址
- 4.5. initobj :初始化地址处的值
- 4.6. isinst :测试一个对象是否是类或接口的实例
- 4.7. ldelem :从数组中加载元素
- 4.8. ldelem.<type> :从数组中加载元素
- 4.9. ldelema :加载数组元素的地址
- 4.10. ldfld :加载对象的字段
- 4.11. ldflda :加载字段地址
- 4.12. ldlen :加载数组的长度
- 4.13. ldobj :将地址处的值复制到堆栈
- 4.14. ldsfld :加载类的静态字段
- 4.15. ldsflda :加载静态字段地址
- 4.16. ldstr :加载字面字符串
- 4.17. ldtoken :加载元数据 token 的运行时表示
- 4.18. ldvirtftn :加载虚方法指针
- 4.19. mkrefany :在堆栈上推送一个类型引用
- 4.20. newarr :创建一个零基一维数组
- 4.21. newobj :创建新对象
- 4.22. refanytype :从类型引用中加载类型
- 4.23. refanyval :从类型引用中加载地址
- 4.24. rethrow :重新抛出当前异常
- 4.25. sizeof :加载类型的字节大小
- 4.26. stelem :将元素存储到数组中
- 4.27. stelem.<type> :将元素存储到数组中
- 4.28. stfld :将值存储到对象的字段中
- 4.29. stobj :将值存储到地址中
- 4.30. stsfld :存储类的静态字段
- 4.31. throw :抛出异常
- 4.32. unbox :将装箱的值类型转换为其原始形式
- 4.33. unbox.any :将装箱类型转换为值
- 5.1. 一般性意见
- 5.2. 运行时基础设施库
- 5.3. 基础类库(BCL)
- 5.4. 网络库
- 5.5. 反射库
- 5.6. XML 库
- 5.7. 扩展数值库
- 5.8. 扩展数组库
- 5.9. Vararg 库
- 5.10. 并行库