4 using System.Collections.Generic;
11 * This partial class contains the tables used by the disassembler.
13 public partial class ILDAsm {
15 Dictionary<uint, string> type_access_map = new Dictionary <uint, string> () {
16 { (uint)TypeAttributes.NotPublic, "private " },
17 { (uint)TypeAttributes.Public, "public " },
18 { (uint)TypeAttributes.NestedPublic, "nested public " },
19 { (uint)TypeAttributes.NestedPrivate, "nested private " },
20 { (uint)TypeAttributes.NestedFamily, "nested family " },
21 { (uint)TypeAttributes.NestedAssembly, "nested assembly " },
22 { (uint)TypeAttributes.NestedFamANDAssem, "nested famandassem " },
23 { (uint)TypeAttributes.NestedFamORAssem, "nested famorassem " },
25 Dictionary<uint, string> type_layout_map = new Dictionary <uint, string> () {
26 { (uint)TypeAttributes.AutoLayout, "auto " },
27 { (uint)TypeAttributes.SequentialLayout, "sequential " },
28 { (uint)TypeAttributes.ExplicitLayout, "explicit " }
30 Dictionary<uint, string> type_string_format_map = new Dictionary <uint, string> () {
31 { (uint)TypeAttributes.AnsiClass, "ansi " },
32 { (uint)TypeAttributes.UnicodeClass, "unicode " },
33 //{ (uint)TypeAttributes.AutoClass, "unicode " },
35 Dictionary<uint, string> type_flag_map = new Dictionary <uint, string> () {
36 { (uint)TypeAttributes.Abstract, "abstract " },
37 { (uint)TypeAttributes.Sealed, "sealed " },
38 { (uint)TypeAttributes.SpecialName, "specialname " },
39 { (uint)TypeAttributes.Import, "import " },
40 { (uint)TypeAttributes.Serializable, "serializable " },
41 { (uint)TypeAttributes.BeforeFieldInit, "beforefieldinit " },
42 { (uint)TypeAttributes.RTSpecialName, "rtspecialname " },
43 //{ (uint)TypeAttributes.HasSecurity, "rtspecialname " },
44 //{ (uint)TypeAttributes.Forwarder, "rtspecialname " },
47 Dictionary<uint, string> type_sem_map = new Dictionary <uint, string> () {
48 { (uint)TypeAttributes.Class, "" },
49 { (uint)TypeAttributes.Interface, "interface " },
53 Dictionary<uint, string> field_access_map = new Dictionary <uint, string> () {
54 { (uint)FieldAttributes.Private, "private " },
55 { (uint)FieldAttributes.FamANDAssem, "famandassem " },
56 { (uint)FieldAttributes.Assembly, "assembly " },
57 { (uint)FieldAttributes.Family, "family " },
58 { (uint)FieldAttributes.FamORAssem, "famorassem " },
59 { (uint)FieldAttributes.Public, "public " },
62 Dictionary<uint, string> field_flag_map = new Dictionary <uint, string> () {
63 { (uint)FieldAttributes.Static, "static " },
64 { (uint)FieldAttributes.Literal, "literal " },
65 { (uint)FieldAttributes.InitOnly, "initonly " },
66 { (uint)FieldAttributes.SpecialName, "specialname " },
67 { (uint)FieldAttributes.RTSpecialName, "rtspecialname " },
68 { (uint)FieldAttributes.NotSerialized, "notserialized " },
72 Dictionary<uint, string> method_access_map = new Dictionary <uint, string> () {
73 { (uint)MethodAttributes.CompilerControlled, "privatescope " },
74 { (uint)MethodAttributes.Private, "private " },
75 { (uint)MethodAttributes.Public, "public " },
76 { (uint)MethodAttributes.Family, "family " },
77 { (uint)MethodAttributes.FamORAssem, "famorassem " },
78 { (uint)MethodAttributes.Assembly, "assembly " }
81 Dictionary<uint, string> method_flag_map = new Dictionary <uint, string> () {
82 { (uint)MethodAttributes.Static, "static " },
83 { (uint)MethodAttributes.Final, "final " },
84 { (uint)MethodAttributes.Virtual, "virtual " },
85 { (uint)MethodAttributes.HideBySig, "hidebysig " },
86 { (uint)MethodAttributes.NewSlot, "newslot " },
87 { (uint)MethodAttributes.CheckAccessOnOverride, "strict " },
88 { (uint)MethodAttributes.Abstract, "abstract " },
89 { (uint)MethodAttributes.SpecialName, "specialname " },
90 { (uint)MethodAttributes.RTSpecialName, "rtspecialname " },
94 Dictionary<uint, string> method_impl_map = new Dictionary <uint, string> () {
95 { (uint)MethodImplAttributes.IL, "cil " },
96 { (uint)MethodImplAttributes.Runtime, "runtime " }
98 Dictionary<uint, string> method_managed_map = new Dictionary <uint, string> () {
99 { (uint)MethodImplAttributes.Managed, "managed " }
101 Dictionary<uint, string> method_impl_flag_map = new Dictionary <uint, string> () {
102 { (uint)MethodImplAttributes.PreserveSig, "preservesig " },
103 { (uint)MethodImplAttributes.InternalCall, "internalcall " },
104 { (uint)MethodImplAttributes.Synchronized, "synchronized " },
105 { (uint)MethodImplAttributes.NoInlining, "noinlining " },
109 Dictionary<NativeType, string> native_type_to_str = new Dictionary<NativeType, string> () {
110 { NativeType.Boolean, "bool" },
111 { NativeType.I1, "int8" },
112 { NativeType.U1, "unsigned int8" },
113 { NativeType.I2, "int16" },
114 { NativeType.U2, "unsigned int16" },
115 { NativeType.I4, "int32" },
116 { NativeType.U4, "unsigned int32" },
117 { NativeType.I8, "int64" },
118 { NativeType.U8, "unsigned int64" },
119 //{ NativeType.R4, "int32" },
120 //{ NativeType.R8, "unsigned int32" },
121 { NativeType.LPStr, "lpstr" },
122 { NativeType.Int, "int" },
123 //{ NativeType.Int, "int" },
124 { NativeType.Func, "method" },
125 //{ NativeType.Array, "int" },
126 //{ NativeType.Currency, "method" },
127 { NativeType.BStr, "bstr " },
128 { NativeType.LPWStr, "lpwstr" },
129 //{ NativeType.LPTStr, "lpwstr" },
130 //{ NativeType.FixedSysString, "lpwstr" },
131 { NativeType.IUnknown, "iunknown" },
132 { NativeType.IDispatch, "idispatch" },
133 { NativeType.Struct, "struct" },
134 { NativeType.IntF, "interface" },
135 //{ NativeType.SafeArray, "interface" },
136 //{ NativeType.FixedArray, "interface" },
137 //{ NativeType.ByValStr, "interface" },
138 //{ NativeType.ANSIBStr, "interface" },
139 //{ NativeType.TBStr, "interface" },
140 { NativeType.VariantBool, "variant bool" },
141 { NativeType.ASAny, "as any" },
142 { NativeType.LPStruct, "lpstruct" },
143 //{ NativeType.CustomMarshaler, "lpstruct" },
144 //{ NativeType.Error, "lpstruct" },
148 Dictionary<uint, string> pinvoke_char_set_map = new Dictionary <uint, string> () {
149 { (uint)PInvokeAttributes.CharSetNotSpec, "" },
150 { (uint)PInvokeAttributes.CharSetAnsi, "ansi " },
151 { (uint)PInvokeAttributes.CharSetUnicode, "unicode " },
152 { (uint)PInvokeAttributes.CharSetAuto, "autochar " },
155 Dictionary<uint, string> pinvoke_cconv_map = new Dictionary <uint, string> () {
156 { (uint)PInvokeAttributes.CallConvWinapi, "winapi " },
157 { (uint)PInvokeAttributes.CallConvCdecl, "cdecl " },
158 { (uint)PInvokeAttributes.CallConvStdCall, "stdcall " },
159 { (uint)PInvokeAttributes.CallConvThiscall, "thiscall " },
160 { (uint)PInvokeAttributes.CallConvFastcall, "fastcall " },
163 Dictionary<uint, string> pinvoke_flags_map = new Dictionary <uint, string> () {
164 { (uint)PInvokeAttributes.SupportsLastError, "lasterr " },
168 Dictionary<SecurityAction, string> sec_action_to_string = new Dictionary<SecurityAction, string> () {
169 //{ SecurityAction.Request, "reqmin" },
170 { SecurityAction.Demand, "demand" },
171 { SecurityAction.Assert, "assert" },
172 { SecurityAction.Deny, "deny" },
173 { SecurityAction.PermitOnly, "permitonly" },
174 { SecurityAction.LinkDemand, "linkcheck" },
175 { SecurityAction.InheritDemand, "inheritcheck" },
176 { SecurityAction.RequestMinimum, "reqmin" },
177 { SecurityAction.RequestOptional, "reqopt" },
178 { SecurityAction.RequestRefuse, "reqrefuse" },
179 //{ SecurityAction.PreJitGrant, "reqmin" },
180 //{ SecurityAction.PreJitDeny, "reqmin" },
181 //{ SecurityAction.NonCasDemand, "reqmin" },
182 //{ SecurityAction.NonCasLinkDemand, "reqmin" },
183 //{ SecurityAction.NonCasInheritance, "reqmin" },
187 Dictionary<string, bool> keyword_table = new Dictionary<string, bool> {
192 {"add.ovf.un", true},
206 {"beforefieldinit", true},
223 {"blob_object", true},
251 {"callmostderived", true},
262 {"charmaperror", true},
269 {"Compilercontrolled", true},
276 {"conv.ovf.i1", true},
277 {"conv.ovf.i1.un", true},
278 {"conv.ovf.i2", true},
279 {"conv.ovf.i2.un", true},
280 {"conv.ovf.i4", true},
281 {"conv.ovf.i4.un", true},
282 {"conv.ovf.i8", true},
283 {"conv.ovf.i8.un", true},
284 {"conv.ovf.i", true},
285 {"conv.ovf.i.un", true},
286 {"conv.ovf.u1", true},
287 {"conv.ovf.u1.un", true},
288 {"conv.ovf.u2", true},
289 {"conv.ovf.u2.un", true},
290 {"conv.ovf.u4", true},
291 {"conv.ovf.u4.un", true},
292 {"conv.ovf.u8", true},
293 {"conv.ovf.u8.un", true},
294 {"conv.ovf.u", true},
295 {"conv.ovf.u.un", true},
318 {"endfinally", true},
326 {"famandassem", true},
328 {"famorassem", true},
341 {"forwardref", true},
342 {"fromunmanaged", true},
349 {"implements", true},
350 {"implicitcom", true},
351 {"implicitres", true},
354 {"inheritcheck", true},
365 {"internalcall", true},
405 {"ldelem.ref", true},
460 {"mul.ovf.un", true},
467 {"noappdomain", true},
468 {"noinlining", true},
471 {"nometadata", true},
472 {"noncasdemand", true},
473 {"noncasinheritance", true},
474 {"noncaslinkdemand", true},
478 {"not_in_gc_heap", true},
479 {"notremotable", true},
480 {"notserialized", true},
491 {"permitonly", true},
493 {"pinvokeimpl", true},
503 {"prejitdeny", true},
504 {"prejitgrant", true},
505 {"preservesig", true},
507 {"privatescope", true},
514 {"refanytype", true},
526 {"rtspecialname", true},
530 {"sequential", true},
531 {"serializable", true},
537 {"specialname", true},
550 {"stelem.ref", true},
562 {"stored_object", true},
563 {"streamed_object", true},
571 {"sub.ovf.un", true},
573 {"synchronized", true},
590 {"unmanagedexp", true},
593 {"userdefined", true},