merge -r 58784:58785
[mono.git] / mcs / ilasm / codegen / InstrTable.cs
1 //
2 // Mono.ILASM.InstrTable
3 //
4 // Author(s):
5 //  Jackson Harper (Jackson@LatitudeGeo.com)
6 //
7 // (C) 2003 Jackson Harper, All rights reserved
8 //
9
10 using PEAPI;
11 using System;
12 using System.Collections;
13
14 namespace Mono.ILASM {
15
16         public class InstrTable {
17
18                 private static Hashtable inst_table;
19
20                 static InstrTable ()
21                 {
22                         CreateInstTable ();
23                 }
24
25                 public static ILToken GetToken (string str)
26                 {
27                         return inst_table[str] as ILToken;
28                 }
29
30                 public static bool IsInstr (string str)
31                 {
32                         return inst_table.Contains (str);
33                 }
34
35                 private static void CreateInstTable ()
36                 {
37                         inst_table = new Hashtable ();
38
39                         inst_table["nop"] = new ILToken (Token.INSTR_NONE, Op.nop);
40                         inst_table["break"] = new ILToken (Token.INSTR_NONE, Op.breakOp);
41                         inst_table["ldarg.0"] = new ILToken (Token.INSTR_NONE, Op.ldarg_0);
42                         inst_table["ldarg.1"] = new ILToken (Token.INSTR_NONE, Op.ldarg_1);
43                         inst_table["ldarg.2"] = new ILToken (Token.INSTR_NONE, Op.ldarg_2);
44                         inst_table["ldarg.3"] = new ILToken (Token.INSTR_NONE, Op.ldarg_3);
45                         inst_table["ldloc.0"] = new ILToken (Token.INSTR_NONE, Op.ldloc_0);
46                         inst_table["ldloc.1"] = new ILToken (Token.INSTR_NONE, Op.ldloc_1);
47                         inst_table["ldloc.2"] = new ILToken (Token.INSTR_NONE, Op.ldloc_2);
48                         inst_table["ldloc.3"] = new ILToken (Token.INSTR_NONE, Op.ldloc_3);
49                         inst_table["stloc.0"] = new ILToken (Token.INSTR_NONE, Op.stloc_0);
50                         inst_table["stloc.1"] = new ILToken (Token.INSTR_NONE, Op.stloc_1);
51                         inst_table["stloc.2"] = new ILToken (Token.INSTR_NONE, Op.stloc_2);
52                         inst_table["stloc.3"] = new ILToken (Token.INSTR_NONE, Op.stloc_3);
53                         inst_table["ldnull"] = new ILToken (Token.INSTR_NONE, Op.ldnull);
54                         inst_table["ldc.i4.m1"] = new ILToken (Token.INSTR_NONE, Op.ldc_i4_m1);
55                         inst_table["ldc.i4.M1"] = new ILToken (Token.INSTR_NONE, Op.ldc_i4_m1);
56                         inst_table["ldc.i4.0"] = new ILToken (Token.INSTR_NONE, Op.ldc_i4_0);
57                         inst_table["ldc.i4.1"] = new ILToken (Token.INSTR_NONE, Op.ldc_i4_1);
58                         inst_table["ldc.i4.2"] = new ILToken (Token.INSTR_NONE, Op.ldc_i4_2);
59                         inst_table["ldc.i4.3"] = new ILToken (Token.INSTR_NONE, Op.ldc_i4_3);
60                         inst_table["ldc.i4.4"] = new ILToken (Token.INSTR_NONE, Op.ldc_i4_4);
61                         inst_table["ldc.i4.5"] = new ILToken (Token.INSTR_NONE, Op.ldc_i4_5);
62                         inst_table["ldc.i4.6"] = new ILToken (Token.INSTR_NONE, Op.ldc_i4_6);
63                         inst_table["ldc.i4.7"] = new ILToken (Token.INSTR_NONE, Op.ldc_i4_7);
64                         inst_table["ldc.i4.8"] = new ILToken (Token.INSTR_NONE, Op.ldc_i4_8);
65                         inst_table["dup"] = new ILToken (Token.INSTR_NONE, Op.dup);
66                         inst_table["pop"] = new ILToken (Token.INSTR_NONE, Op.pop);
67                         inst_table["ret"] = new ILToken (Token.INSTR_NONE, Op.ret);
68                         inst_table["ldind.i1"] = new ILToken (Token.INSTR_NONE, Op.ldind_i1);
69                         inst_table["ldind.u1"] = new ILToken (Token.INSTR_NONE, Op.ldind_u1);
70                         inst_table["ldind.i2"] = new ILToken (Token.INSTR_NONE, Op.ldind_i2);
71                         inst_table["ldind.u2"] = new ILToken (Token.INSTR_NONE, Op.ldind_u2);
72                         inst_table["ldind.i4"] = new ILToken (Token.INSTR_NONE, Op.ldind_i4);
73                         inst_table["ldind.u4"] = new ILToken (Token.INSTR_NONE, Op.ldind_u4);
74                         inst_table["ldind.i8"] = new ILToken (Token.INSTR_NONE, Op.ldind_i8);
75                         inst_table["ldind.u8"] = new ILToken (Token.INSTR_NONE, Op.ldind_i8);
76                         inst_table["ldind.i"] = new ILToken (Token.INSTR_NONE, Op.ldind_i);
77                         inst_table["ldind.r4"] = new ILToken (Token.INSTR_NONE, Op.ldind_r4);
78                         inst_table["ldind.r8"] = new ILToken (Token.INSTR_NONE, Op.ldind_r8);
79                         inst_table["ldind.ref"] = new ILToken (Token.INSTR_NONE, Op.ldind_ref);
80                         inst_table["stind.ref"] = new ILToken (Token.INSTR_NONE, Op.stind_ref);
81                         inst_table["stind.i1"] = new ILToken (Token.INSTR_NONE, Op.stind_i1);
82                         inst_table["stind.i2"] = new ILToken (Token.INSTR_NONE, Op.stind_i2);
83                         inst_table["stind.i4"] = new ILToken (Token.INSTR_NONE, Op.stind_i4);
84                         inst_table["stind.i8"] = new ILToken (Token.INSTR_NONE, Op.stind_i8);
85                         inst_table["stind.r4"] = new ILToken (Token.INSTR_NONE, Op.stind_r4);
86                         inst_table["stind.r8"] = new ILToken (Token.INSTR_NONE, Op.stind_r8);
87                         inst_table["add"] = new ILToken (Token.INSTR_NONE, Op.add);
88                         inst_table["sub"] = new ILToken (Token.INSTR_NONE, Op.sub);
89                         inst_table["mul"] = new ILToken (Token.INSTR_NONE, Op.mul);
90                         inst_table["div"] = new ILToken (Token.INSTR_NONE, Op.div);
91                         inst_table["div.un"] = new ILToken (Token.INSTR_NONE, Op.div_un);
92                         inst_table["rem"] = new ILToken (Token.INSTR_NONE, Op.rem);
93                         inst_table["rem.un"] = new ILToken (Token.INSTR_NONE, Op.rem_un);
94                         inst_table["and"] = new ILToken (Token.INSTR_NONE, Op.and);
95                         inst_table["or"] = new ILToken (Token.INSTR_NONE, Op.or);
96                         inst_table["xor"] = new ILToken (Token.INSTR_NONE, Op.xor);
97                         inst_table["shl"] = new ILToken (Token.INSTR_NONE, Op.shl);
98                         inst_table["shr"] = new ILToken (Token.INSTR_NONE, Op.shr);
99                         inst_table["shr.un"] = new ILToken (Token.INSTR_NONE, Op.shr_un);
100                         inst_table["neg"] = new ILToken (Token.INSTR_NONE, Op.neg);
101                         inst_table["not"] = new ILToken (Token.INSTR_NONE, Op.not);
102                         inst_table["conv.i1"] = new ILToken (Token.INSTR_NONE, Op.conv_i1);
103                         inst_table["conv.i2"] = new ILToken (Token.INSTR_NONE, Op.conv_i2);
104                         inst_table["conv.i4"] = new ILToken (Token.INSTR_NONE, Op.conv_i4);
105                         inst_table["conv.i8"] = new ILToken (Token.INSTR_NONE, Op.conv_i8);
106                         inst_table["conv.r4"] = new ILToken (Token.INSTR_NONE, Op.conv_r4);
107                         inst_table["conv.r8"] = new ILToken (Token.INSTR_NONE, Op.conv_r8);
108                         inst_table["conv.u4"] = new ILToken (Token.INSTR_NONE, Op.conv_u4);
109                         inst_table["conv.u8"] = new ILToken (Token.INSTR_NONE, Op.conv_u8);
110                         inst_table["conv.r.un"] = new ILToken (Token.INSTR_NONE, Op.conv_r_un);
111                         inst_table["throw"] = new ILToken (Token.INSTR_NONE, Op.throwOp);
112                         inst_table["conv.ovf.i1.un"] = new ILToken (Token.INSTR_NONE, Op.conv_ovf_i1_un);
113                         inst_table["conv.ovf.i2.un"] = new ILToken (Token.INSTR_NONE, Op.conv_ovf_i2_un);
114                         inst_table["conv.ovf.i4.un"] = new ILToken (Token.INSTR_NONE, Op.conv_ovf_i4_un);
115                         inst_table["conv.ovf.i8.un"] = new ILToken (Token.INSTR_NONE, Op.conv_ovf_i8_un);
116                         inst_table["conf.ovf.u1.un"] = new ILToken (Token.INSTR_NONE, Op.conf_ovf_u1_un);
117                         inst_table["conv.ovf.u2.un"] = new ILToken (Token.INSTR_NONE, Op.conv_ovf_u2_un);
118                         inst_table["conv.ovf.u4.un"] = new ILToken (Token.INSTR_NONE, Op.conv_ovf_u4_un);
119                         inst_table["conv.ovf.u8.un"] = new ILToken (Token.INSTR_NONE, Op.conv_ovf_u8_un);
120                         inst_table["conv.ovf.i.un"] = new ILToken (Token.INSTR_NONE, Op.conv_ovf_i_un);
121                         inst_table["conv.ovf.u.un"] = new ILToken (Token.INSTR_NONE, Op.conv_ovf_u_un);
122                         inst_table["ldlen"] = new ILToken (Token.INSTR_NONE, Op.ldlen);
123                         inst_table["ldelem.i1"] = new ILToken (Token.INSTR_NONE, Op.ldelem_i1);
124                         inst_table["ldelem.u1"] = new ILToken (Token.INSTR_NONE, Op.ldelem_u1);
125                         inst_table["ldelem.i2"] = new ILToken (Token.INSTR_NONE, Op.ldelem_i2);
126                         inst_table["ldelem.u2"] = new ILToken (Token.INSTR_NONE, Op.ldelem_u2);
127                         inst_table["ldelem.i4"] = new ILToken (Token.INSTR_NONE, Op.ldelem_i4);
128                         inst_table["ldelem.u4"] = new ILToken (Token.INSTR_NONE, Op.ldelem_u4);
129                         inst_table["ldelem.i8"] = new ILToken (Token.INSTR_NONE, Op.ldelem_i8);
130                         inst_table["ldelem.u8"] = new ILToken (Token.INSTR_NONE, Op.ldelem_i8);
131                         inst_table["ldelem.i"] = new ILToken (Token.INSTR_NONE, Op.ldelem_i);
132                         inst_table["ldelem.r4"] = new ILToken (Token.INSTR_NONE, Op.ldelem_r4);
133                         inst_table["ldelem.r8"] = new ILToken (Token.INSTR_NONE, Op.ldelem_r8);
134                         inst_table["ldelem.ref"] = new ILToken (Token.INSTR_NONE, Op.ldelem_ref);
135                         inst_table["stelem.i"] = new ILToken (Token.INSTR_NONE, Op.stelem_i);
136                         inst_table["stelem.i1"] = new ILToken (Token.INSTR_NONE, Op.stelem_i1);
137                         inst_table["stelem.i2"] = new ILToken (Token.INSTR_NONE, Op.stelem_i2);
138                         inst_table["stelem.i4"] = new ILToken (Token.INSTR_NONE, Op.stelem_i4);
139                         inst_table["stelem.i8"] = new ILToken (Token.INSTR_NONE, Op.stelem_i8);
140                         inst_table["stelem.r4"] = new ILToken (Token.INSTR_NONE, Op.stelem_r4);
141                         inst_table["stelem.r8"] = new ILToken (Token.INSTR_NONE, Op.stelem_r8);
142                         inst_table["stelem.ref"] = new ILToken (Token.INSTR_NONE, Op.stelem_ref);
143                         inst_table["conv.ovf.i1"] = new ILToken (Token.INSTR_NONE, Op.conv_ovf_i1);
144                         inst_table["conv.ovf.u1"] = new ILToken (Token.INSTR_NONE, Op.conv_ovf_u1);
145                         inst_table["conv.ovf.i2"] = new ILToken (Token.INSTR_NONE, Op.conv_ovf_i2);
146                         inst_table["conv.ovf.u2"] = new ILToken (Token.INSTR_NONE, Op.conv_ovf_u2);
147                         inst_table["conv.ovf.i4"] = new ILToken (Token.INSTR_NONE, Op.conv_ovf_i4);
148                         inst_table["conv.ovf.u4"] = new ILToken (Token.INSTR_NONE, Op.conv_ovf_u4);
149                         inst_table["conv.ovf.i8"] = new ILToken (Token.INSTR_NONE, Op.conv_ovf_i8);
150                         inst_table["conv.ovf.u8"] = new ILToken (Token.INSTR_NONE, Op.conv_ovf_u8);
151                         inst_table["conv.ovf.u1.un"] = new ILToken (Token.INSTR_NONE, Op.conf_ovf_u1_un);
152                         inst_table["conv.ovf.u2.un"] = new ILToken (Token.INSTR_NONE, Op.conv_ovf_u2_un);
153                         inst_table["conv.ovf.u4.un"] = new ILToken (Token.INSTR_NONE, Op.conv_ovf_u4_un);
154                         inst_table["conv.ovf.u8.un"] = new ILToken (Token.INSTR_NONE, Op.conv_ovf_u8_un);
155                         inst_table["conv.ovf.i1.un"] = new ILToken (Token.INSTR_NONE, Op.conv_ovf_i1_un);
156                         inst_table["conv.ovf.i2.un"] = new ILToken (Token.INSTR_NONE, Op.conv_ovf_i2_un);
157                         inst_table["conv.ovf.i4.un"] = new ILToken (Token.INSTR_NONE, Op.conv_ovf_i4_un);
158                         inst_table["conv.ovf.i8.un"] = new ILToken (Token.INSTR_NONE, Op.conv_ovf_i8_un);
159                         inst_table["ckfinite"] = new ILToken (Token.INSTR_NONE, Op.ckfinite);
160                         inst_table["conv.u2"] = new ILToken (Token.INSTR_NONE, Op.conv_u2);
161                         inst_table["conv.u1"] = new ILToken (Token.INSTR_NONE, Op.conv_u1);
162                         inst_table["conv.i"] = new ILToken (Token.INSTR_NONE, Op.conv_i);
163                         inst_table["conv.ovf.i"] = new ILToken (Token.INSTR_NONE, Op.conv_ovf_i);
164                         inst_table["conv.ovf.u"] = new ILToken (Token.INSTR_NONE, Op.conv_ovf_u);
165                         inst_table["add.ovf"] = new ILToken (Token.INSTR_NONE, Op.add_ovf);
166                         inst_table["add.ovf.un"] = new ILToken (Token.INSTR_NONE, Op.add_ovf_un);
167                         inst_table["mul.ovf"] = new ILToken (Token.INSTR_NONE, Op.mul_ovf);
168                         inst_table["mul.ovf.un"] = new ILToken (Token.INSTR_NONE, Op.mul_ovf_un);
169                         inst_table["sub.ovf"] = new ILToken (Token.INSTR_NONE, Op.sub_ovf);
170                         inst_table["sub.ovf.un"] = new ILToken (Token.INSTR_NONE, Op.sub_ovf_un);
171                         inst_table["endfinally"] = new ILToken (Token.INSTR_NONE, Op.endfinally);
172                         // endfault is really just an alias for endfinally
173                         inst_table["endfault"] = new ILToken (Token.INSTR_NONE, Op.endfinally);
174                         inst_table["stind.i"] = new ILToken (Token.INSTR_NONE, Op.stind_i);
175                         inst_table["conv.u"] = new ILToken (Token.INSTR_NONE, Op.conv_u);
176                         inst_table["arglist"] = new ILToken (Token.INSTR_NONE, Op.arglist);
177                         inst_table["ceq"] = new ILToken (Token.INSTR_NONE, Op.ceq);
178                         inst_table["cgt"] = new ILToken (Token.INSTR_NONE, Op.cgt);
179                         inst_table["cgt.un"] = new ILToken (Token.INSTR_NONE, Op.cgt_un);
180                         inst_table["clt"] = new ILToken (Token.INSTR_NONE, Op.clt);
181                         inst_table["clt.un"] = new ILToken (Token.INSTR_NONE, Op.clt_un);
182                         inst_table["localloc"] = new ILToken (Token.INSTR_NONE, Op.localloc);
183                         inst_table["endfilter"] = new ILToken (Token.INSTR_NONE, Op.endfilter);
184                         inst_table["volatile."] = new ILToken (Token.INSTR_NONE, Op.volatile_);
185                         inst_table["tail."] = new ILToken (Token.INSTR_NONE, Op.tail_);
186                         inst_table["cpblk"] = new ILToken (Token.INSTR_NONE, Op.cpblk);
187                         inst_table["initblk"] = new ILToken (Token.INSTR_NONE, Op.initblk);
188                         inst_table["rethrow"] = new ILToken (Token.INSTR_NONE, Op.rethrow);
189                         inst_table["refanytype"] = new ILToken (Token.INSTR_NONE, Op.refanytype);
190
191                         //
192                         // Int operations
193                         //
194
195                         // param
196                         inst_table["ldarg"] = new ILToken (Token.INSTR_PARAM, IntOp.ldarg);
197                         inst_table["ldarga"] = new ILToken (Token.INSTR_PARAM, IntOp.ldarga);
198                         inst_table["starg"] = new ILToken (Token.INSTR_PARAM, IntOp.starg);
199                         inst_table["ldarg.s"] = new ILToken (Token.INSTR_PARAM, IntOp.ldarg_s);
200                         inst_table["ldarga.s"] = new ILToken (Token.INSTR_PARAM, IntOp.ldarga_s);
201                         inst_table["starg.s"] = new ILToken (Token.INSTR_PARAM, IntOp.starg_s);
202
203                         // local
204                         inst_table["ldloc"] = new ILToken (Token.INSTR_LOCAL, IntOp.ldloc);
205                         inst_table["ldloca"] = new ILToken (Token.INSTR_LOCAL, IntOp.ldloca);
206                         inst_table["stloc"] = new ILToken (Token.INSTR_LOCAL, IntOp.stloc);
207                         inst_table["ldloc.s"] = new ILToken (Token.INSTR_LOCAL, IntOp.ldloc_s);
208                         inst_table["ldloca.s"] = new ILToken (Token.INSTR_LOCAL, IntOp.ldloca_s);
209                         inst_table["stloc.s"] = new ILToken (Token.INSTR_LOCAL, IntOp.stloc_s);
210
211                         inst_table["ldc.i4.s"] = new ILToken (Token.INSTR_I, IntOp.ldc_i4_s);
212                         inst_table["ldc.i4"] = new ILToken (Token.INSTR_I, IntOp.ldc_i4);
213                         inst_table["unaligned."] =  new ILToken (Token.INSTR_I, IntOp.unaligned);
214
215                         //
216                         // Type operations
217                         //
218
219                         inst_table["cpobj"] = new ILToken (Token.INSTR_TYPE, TypeOp.cpobj);
220                         inst_table["ldobj"] = new ILToken (Token.INSTR_TYPE, TypeOp.ldobj);
221                         inst_table["castclass"] = new ILToken (Token.INSTR_TYPE, TypeOp.castclass);
222                         inst_table["isinst"] = new ILToken (Token.INSTR_TYPE, TypeOp.isinst);
223                         inst_table["unbox"] = new ILToken (Token.INSTR_TYPE, TypeOp.unbox);
224                         inst_table["unbox.any"] = new ILToken (Token.INSTR_TYPE, TypeOp.unbox_any);
225                         inst_table["stobj"] = new ILToken (Token.INSTR_TYPE, TypeOp.stobj);
226                         inst_table["box"] = new ILToken (Token.INSTR_TYPE, TypeOp.box);
227                         inst_table["newarr"] = new ILToken (Token.INSTR_TYPE, TypeOp.newarr);
228                         inst_table["ldelema"] = new ILToken (Token.INSTR_TYPE, TypeOp.ldelema);
229                         inst_table["refanyval"] = new ILToken (Token.INSTR_TYPE, TypeOp.refanyval);
230                         inst_table["mkrefany"] = new ILToken (Token.INSTR_TYPE, TypeOp.mkrefany);
231                         inst_table["initobj"] = new ILToken (Token.INSTR_TYPE, TypeOp.initobj);
232                         inst_table["sizeof"] = new ILToken (Token.INSTR_TYPE, TypeOp.sizeOf);
233                         // inst_table["stelem"] = new ILToken (Token.INSTR_TYPE, TypeOp.stelem);
234                         // inst_table["ldelem"] = new ILToken (Token.INSTR_TYPE, TypeOp.ldelem);
235
236                         //
237                         // MethodRef operations
238                         //
239
240                         inst_table["jmp"] = new ILToken (Token.INSTR_METHOD, MethodOp.jmp);
241                         inst_table["call"] = new ILToken (Token.INSTR_METHOD, MethodOp.call);
242                         inst_table["callvirt"] = new ILToken (Token.INSTR_METHOD, MethodOp.callvirt);
243                         inst_table["newobj"] = new ILToken (Token.INSTR_METHOD, MethodOp.newobj);
244                         inst_table["ldftn"] = new ILToken (Token.INSTR_METHOD, MethodOp.ldftn);
245                         inst_table["ldvirtftn"] = new ILToken (Token.INSTR_METHOD, MethodOp.ldvirtfn);
246
247                         //
248                         // FieldRef instructions
249                         //
250
251                         inst_table["ldfld"] = new ILToken (Token.INSTR_FIELD, FieldOp.ldfld);
252                         inst_table["ldflda"] = new ILToken (Token.INSTR_FIELD, FieldOp.ldflda);
253                         inst_table["stfld"] = new ILToken (Token.INSTR_FIELD, FieldOp.stfld);
254                         inst_table["ldsfld"] = new ILToken (Token.INSTR_FIELD, FieldOp.ldsfld);
255                         inst_table["ldsflda"] = new ILToken (Token.INSTR_FIELD, FieldOp.ldsflda);
256                         inst_table["stsfld"] = new ILToken (Token.INSTR_FIELD, FieldOp.stsfld);
257
258                         //
259                         // Branch Instructions
260                         //
261
262                         inst_table["br"] = new ILToken (Token.INSTR_BRTARGET, BranchOp.br);
263                         inst_table["brfalse"] = new ILToken (Token.INSTR_BRTARGET, BranchOp.brfalse);
264                         inst_table["brnull"] = new ILToken (Token.INSTR_BRTARGET, BranchOp.brfalse);
265                         inst_table["brtrue"] = new ILToken (Token.INSTR_BRTARGET, BranchOp.brtrue);
266                         inst_table["beq"] = new ILToken (Token.INSTR_BRTARGET, BranchOp.beq);
267                         inst_table["bge"] = new ILToken (Token.INSTR_BRTARGET, BranchOp.bge);
268                         inst_table["bgt"] = new ILToken (Token.INSTR_BRTARGET, BranchOp.bgt);
269                         inst_table["ble"] = new ILToken (Token.INSTR_BRTARGET, BranchOp.ble);
270                         inst_table["blt"] = new ILToken (Token.INSTR_BRTARGET, BranchOp.blt);
271                         inst_table["bne.un"] = new ILToken (Token.INSTR_BRTARGET, BranchOp.bne_un);
272                         inst_table["bge.un"] = new ILToken (Token.INSTR_BRTARGET, BranchOp.bge_un);
273                         inst_table["bgt.un"] = new ILToken (Token.INSTR_BRTARGET, BranchOp.bgt_un);
274                         inst_table["ble.un"] = new ILToken (Token.INSTR_BRTARGET, BranchOp.ble_un);
275                         inst_table["blt.un"] = new ILToken (Token.INSTR_BRTARGET, BranchOp.blt_un);
276                         inst_table["leave"] = new ILToken (Token.INSTR_BRTARGET, BranchOp.leave);
277
278                         inst_table["br.s"] = new ILToken (Token.INSTR_BRTARGET, BranchOp.br_s);
279                         inst_table["brfalse.s"] = new ILToken (Token.INSTR_BRTARGET, BranchOp.brfalse_s);
280                         inst_table["brtrue.s"] = new ILToken (Token.INSTR_BRTARGET, BranchOp.brtrue_s);
281                         inst_table["beq.s"] = new ILToken (Token.INSTR_BRTARGET, BranchOp.beq_s);
282                         inst_table["bge.s"] = new ILToken (Token.INSTR_BRTARGET, BranchOp.bge_s);
283                         inst_table["bgt.s"] = new ILToken (Token.INSTR_BRTARGET, BranchOp.bgt_s);
284                         inst_table["ble.s"] = new ILToken (Token.INSTR_BRTARGET, BranchOp.ble_s);
285                         inst_table["blt.s"] = new ILToken (Token.INSTR_BRTARGET, BranchOp.blt_s);
286                         inst_table["bne.un.s"] = new ILToken (Token.INSTR_BRTARGET, BranchOp.bne_un_s);
287                         inst_table["bge.un.s"] = new ILToken (Token.INSTR_BRTARGET, BranchOp.bge_un_s);
288                         inst_table["bgt.un.s"] = new ILToken (Token.INSTR_BRTARGET, BranchOp.bgt_un_s);
289                         inst_table["ble.un.s"] = new ILToken (Token.INSTR_BRTARGET, BranchOp.ble_un_s);
290                         inst_table["blt.un.s"] = new ILToken (Token.INSTR_BRTARGET, BranchOp.blt_un_s);
291                         inst_table["leave.s"] = new ILToken (Token.INSTR_BRTARGET, BranchOp.leave_s);
292
293                         //
294                         // Misc other instructions
295                         //
296
297                         inst_table["ldstr"] = new ILToken (Token.INSTR_STRING, MiscInstr.ldstr);
298                         inst_table["ldc.r4"] = new ILToken (Token.INSTR_R, MiscInstr.ldc_r4);
299                         inst_table["ldc.r8"] = new ILToken (Token.INSTR_R, MiscInstr.ldc_r8);
300                         inst_table["ldc.i8"] = new ILToken (Token.INSTR_I8, MiscInstr.ldc_i8);
301                         inst_table["switch"] = new ILToken (Token.INSTR_SWITCH, MiscInstr._switch);
302                         inst_table["calli"] = new ILToken (Token.INSTR_SIG, MiscInstr.calli);
303                         inst_table["ldtoken"] = new ILToken (Token.INSTR_TOK, MiscInstr.ldtoken);
304                 }
305
306         }
307
308 }
309