DEADSOFTWARE

Remove batch
[gpcp-linux.git] / gpcp / IlasmCodes.cp
1 (* ============================================================ *)
2 (* IlasmCodes is the module which defines ilasm name ordinals. *)
3 (* Name spelling is defined by the lexical rules of ILASM. *)
4 (* Copyright (c) John Gough 1999, 2000. *)
5 (* ============================================================ *)
7 MODULE IlasmCodes;
8 IMPORT
9 GPCPcopyright;
11 (* ============================================================ *)
13 CONST
14 dot_error* = 0;
15 dot_try* = 1;
16 dot_class* = 2;
17 dot_entrypoint*= 3;
18 dot_field* = 4;
19 dot_implements*= 5;
20 dot_interface* = 6;
21 dot_locals* = 7;
22 dot_line* = 8;
23 dot_method* = 9;
24 dot_source* = 10;
25 dot_super* = 11;
26 dot_throws* = 12;
27 dot_var* = 13;
28 dot_assembly* = 14;
29 dot_namespace* = 15;
30 dot_maxstack* = 16;
32 CONST
33 att_empty* = {};
34 att_public* = {0};
35 att_private* = {1};
36 att_assembly* = {2};
37 att_protected* = {3};
38 att_value* = {4};
39 att_static* = {5};
40 att_final* = {6};
41 att_sealed* = {7};
42 att_abstract* = {8};
43 att_newslot* = {9};
44 att_interface* = {10};
45 att_synchronized*= {11};
46 att_extern* = {12};
47 att_virtual* = {13};
48 att_instance* = {14};
49 att_volatile* = {15};
50 maxAttIndex* = 15;
52 CONST modAttr* = att_public + att_sealed (* + att_abstract *);
54 (* ============================================================ *)
56 CONST
57 opc_error* = 0; (* Start opcodes with *)
58 opc_add* = 1; (* no arguments... *)
59 opc_add_ovf* = 2;
60 opc_add_ovf_un* = 3;
61 opc_and* = 4;
63 opc_arglist* = 9;
64 opc_break* = 10;
65 opc_ceq* = 11;
66 opc_cgt* = 12;
67 opc_cgt_un* = 13;
68 opc_ckfinite* = 14;
69 opc_clt* = 15;
70 opc_clt_un* = 16;
71 opc_conv_i* = 17;
72 opc_conv_i1* = 18;
73 opc_conv_i2* = 19;
74 opc_conv_i4* = 20;
75 opc_conv_i8* = 21;
76 opc_conv_ovf_i* = 22;
77 opc_conv_ovf_i_un* = 23;
78 opc_conv_ovf_i1* = 24;
79 opc_conv_ovf_i1_un* = 25;
80 opc_conv_ovf_i2* = 26;
81 opc_conv_ovf_i2_un* = 27;
82 opc_conv_ovf_i4* = 28;
83 opc_conv_ovf_i4_un* = 29;
84 opc_conv_ovf_i8* = 30;
85 opc_conv_ovf_i8_un* = 31;
86 opc_conv_ovf_u* = 32;
87 opc_conv_ovf_u_un* = 32;
88 opc_conv_ovf_u1* = 34;
89 opc_conv_ovf_u1_un* = 35;
90 opc_conv_ovf_u2* = 36;
91 opc_conv_ovf_u2_un* = 37;
92 opc_conv_ovf_u4* = 38;
93 opc_conv_ovf_u4_un* = 39;
94 opc_conv_ovf_u8* = 40;
95 opc_conv_ovf_u8_un* = 41;
96 opc_conv_r4* = 42;
97 opc_conv_r8* = 43;
98 opc_conv_u* = 44;
99 opc_conv_u1* = 45;
100 opc_conv_u2* = 46;
101 opc_conv_u4* = 47;
102 opc_conv_u8* = 48;
103 opc_cpblk* = 49;
104 opc_div* = 50;
105 opc_div_un* = 51;
106 opc_dup* = 52;
107 opc_endcatch* = 53;
108 opc_endfilter* = 54;
109 opc_endfinally* = 55;
110 opc_initblk* = 56;
111 opc_jmpi* = 57;
112 opc_ldarg_0* = 58;
113 opc_ldarg_1* = 59;
114 opc_ldarg_2* = 60;
115 opc_ldarg_3* = 61;
116 opc_ldc_i4_0* = 62;
117 opc_ldc_i4_1* = 63;
118 opc_ldc_i4_2* = 64;
119 opc_ldc_i4_3* = 65;
120 opc_ldc_i4_4* = 66;
121 opc_ldc_i4_5* = 67;
122 opc_ldc_i4_6* = 68;
123 opc_ldc_i4_7* = 69;
124 opc_ldc_i4_8* = 70;
125 opc_ldc_i4_M1* = 71;
126 opc_ldelem_i* = 72;
127 opc_ldelem_i1* = 73;
128 opc_ldelem_i2* = 74;
129 opc_ldelem_i4* = 75;
130 opc_ldelem_i8* = 76;
131 opc_ldelem_r4* = 77;
132 opc_ldelem_r8* = 78;
133 opc_ldelem_ref* = 79;
134 opc_ldelem_u* = 80;
135 opc_ldelem_u1* = 81;
136 opc_ldelem_u2* = 82;
137 opc_ldelem_u4* = 83;
138 opc_ldind_i* = 84;
139 opc_ldind_i1* = 85;
140 opc_ldind_i2* = 86;
141 opc_ldind_i4* = 87;
142 opc_ldind_i8* = 88;
143 opc_ldind_r4* = 89;
144 opc_ldind_r8* = 90;
145 opc_ldind_ref* = 91;
146 opc_ldind_u* = 92;
147 opc_ldind_u1* = 93;
148 opc_ldind_u2* = 94;
149 opc_ldind_u4* = 95;
150 opc_ldlen* = 96;
151 opc_ldloc_0* = 97;
152 opc_ldloc_1* = 98;
153 opc_ldloc_2* = 99;
154 opc_ldloc_3* = 100;
155 opc_ldnull* = 101;
156 opc_localloc* = 102;
157 opc_mul* = 103;
158 opc_mul_ovf* = 104;
159 opc_mul_ovf_un* = 105;
160 opc_neg* = 106;
161 opc_nop* = 107;
162 opc_not* = 108;
163 opc_or* = 109;
164 opc_pop* = 110;
165 opc_refanytype* = 111;
166 opc_rem* = 112;
167 opc_rem_un* = 113;
168 opc_ret* = 114;
169 opc_rethrow* = 115;
170 opc_shl* = 116;
171 opc_shr* = 117;
172 opc_shr_un* = 118;
173 opc_stelem_i* = 119;
174 opc_stelem_i1* = 120;
175 opc_stelem_i2* = 121;
176 opc_stelem_i4* = 122;
177 opc_stelem_i8* = 123;
178 opc_stelem_r4* = 124;
179 opc_stelem_r8* = 125;
180 opc_stelem_ref* = 126;
181 opc_stind_i* = 127;
182 opc_stind_i1* = 128;
183 opc_stind_i2* = 129;
184 opc_stind_i4* = 130;
185 opc_stind_i8* = 131;
186 opc_stind_r4* = 132;
187 opc_stind_r8* = 133;
188 opc_stind_ref* = 134;
189 opc_stloc_0* = 135;
190 opc_stloc_1* = 136;
191 opc_stloc_2* = 137;
192 opc_stloc_3* = 138;
193 opc_sub* = 139;
194 opc_sub_ovf* = 140;
195 opc_sub_ovf_un* = 141;
196 opc_tailcall* = 142;
197 opc_throw* = 143;
198 opc_volatile* = 144;
199 opc_xor* = 145;
200 (*
201 *)
202 opc_ldarg* = 151;
203 opc_ldarg_s* = 152;
204 opc_ldarga* = 153;
205 opc_ldarga_s* = 154;
206 opc_starg* = 155;
207 opc_starg_s* = 156;
208 opc_ldloc* = 225; (* oops! *)
209 opc_ldloc_s* = 226; (* oops! *)
210 opc_ldloca* = 227; (* oops! *)
211 opc_ldloca_s* = 228; (* oops! *)
212 opc_stloc* = 157;
213 opc_stloc_s* = 158;
215 opc_ldc_i4* = 159; (* Opcodes with i4 arg. *)
216 opc_unaligned_* = 160;
217 opc_ldc_i4_s* = 161;
218 opc_ldc_i8* = 162; (* Opcodes with i8 arg. *)
219 opc_ldc_r4* = 163; (* Opcodes with flt/dbl *)
220 opc_ldc_r8* = 164;
221 (*
222 *)
223 opc_beq* = 166;
224 opc_beq_s* = 167;
225 opc_bge* = 168;
226 opc_bge_s* = 169;
227 opc_bge_un* = 170;
228 opc_bge_un_s* = 171;
229 opc_bgt* = 172;
230 opc_bgt_s* = 173;
231 opc_bgt_un* = 174;
232 opc_bgt_un_s* = 175;
233 opc_ble* = 176;
234 opc_ble_s* = 177;
235 opc_ble_un* = 5;
236 opc_ble_un_s* = 6;
237 opc_blt* = 178;
238 opc_blt_s* = 179;
239 opc_blt_un* = 180;
240 opc_blt_un_s* = 181;
241 opc_bne_un* = 182;
242 opc_bne_un_s* = 183;
243 opc_br* = 184;
244 opc_br_s* = 185;
245 opc_brfalse* = 186;
246 opc_brfalse_s* = 187;
247 opc_brtrue* = 188;
248 opc_brtrue_s* = 189;
249 opc_leave* = 190;
250 (*
251 * opc_leave_s* = 191;
253 *)
254 opc_call* = 194;
255 opc_callvirt* = 195;
256 opc_jmp* = 196;
257 opc_ldftn* = 197;
258 opc_ldvirtftn* = 198;
259 opc_newobj* = 199;
261 opc_ldfld* = 200; (* Opcodes with fldNm args *)
262 opc_ldflda* = 201;
263 opc_ldsfld* = 202;
264 opc_ldsflda* = 203;
265 opc_stfld* = 204;
266 opc_stsfld* = 205;
268 opc_box* = 206; (* Opcodes with type arg *)
269 opc_castclass* = 207;
270 opc_cpobj* = 208;
271 opc_initobj* = 209;
272 opc_isinst* = 210;
273 opc_ldelema* = 211;
274 opc_ldobj* = 212;
275 opc_mkrefany* = 213;
276 opc_newarr* = 214;
277 opc_refanyval* = 215;
278 opc_sizeof* = 216;
279 opc_stobj* = 217;
280 opc_unbox* = 218;
282 opc_ldstr* = 219; (* Miscellaneous *)
283 opc_calli* = 220;
284 opc_ldptr* = 221;
285 opc_ldtoken* = 222;
286 (*
287 *)
288 opc_switch* = 224;
290 (* ============================================================ *)
292 TYPE
293 OpName* = ARRAY 20 OF CHAR;
295 (* ============================================================ *)
297 VAR op* : ARRAY 232 OF OpName;
298 cd* : ARRAY 232 OF INTEGER;
299 dl* : ARRAY 232 OF INTEGER;
301 VAR dirStr* : ARRAY 18 OF OpName;
302 access* : ARRAY 16 OF OpName;
304 (* ============================================================ *)
306 BEGIN
307 (* ---------------------------------------------- *)
309 dirStr[dot_error] := ".ERROR";
310 dirStr[dot_try] := " .try";
311 dirStr[dot_class] := ".class";
312 dirStr[dot_entrypoint] := ".entrypoint";
313 dirStr[dot_field] := ".field";
314 dirStr[dot_implements] := " implements";
315 dirStr[dot_interface] := ".interface";
316 dirStr[dot_locals] := ".locals";
317 dirStr[dot_line] := ".line";
318 dirStr[dot_method] := ".method";
319 dirStr[dot_source] := ".source";
320 dirStr[dot_super] := " extends";
321 dirStr[dot_throws] := ".throws";
322 dirStr[dot_var] := ".var";
323 dirStr[dot_assembly] := ".assembly";
324 dirStr[dot_namespace] := ".namespace";
325 dirStr[dot_maxstack] := ".maxstack";
327 (* ---------------------------------------------- *)
329 access[ 0] := "public";
330 access[ 1] := "private";
331 access[ 2] := "assembly";
332 access[ 3] := "protected";
333 access[ 4] := "value";
334 access[ 5] := "static";
335 access[ 6] := "final";
336 access[ 7] := "sealed";
337 access[ 8] := "abstract";
338 access[ 9] := "newslot";
339 access[10] := "interface";
340 access[11] := "synchronized";
341 access[12] := "extern";
342 access[13] := "virtual";
343 access[14] := "instance";
344 access[15] := "volatile";
346 (* ---------------------------------------------- *)
348 op[opc_error] := "ERROR";
349 op[opc_add] := "add";
350 op[opc_add_ovf] := "add.ovf";
351 op[opc_add_ovf_un] := "add.ovf.un";
352 op[opc_and] := "and";
354 op[opc_arglist] := "arglist";
355 op[opc_break] := "break";
356 op[opc_ceq] := "ceq";
357 op[opc_cgt] := "cgt";
358 op[opc_cgt_un] := "cgt.un";
359 op[opc_ckfinite] := "ckfinite";
360 op[opc_clt] := "clt";
361 op[opc_clt_un] := "clt.un";
362 op[opc_conv_i] := "conv.i";
363 op[opc_conv_i1] := "conv.i1";
364 op[opc_conv_i2] := "conv.i2";
365 op[opc_conv_i4] := "conv.i4";
366 op[opc_conv_i8] := "conv.i8";
367 op[opc_conv_ovf_i] := "conv.ovf.i";
368 op[opc_conv_ovf_i_un] := "conv.ovf.i.un";
369 op[opc_conv_ovf_i1] := "conv.ovf.i1";
370 op[opc_conv_ovf_i1_un] := "conv.ovf.i1.un";
371 op[opc_conv_ovf_i2] := "conv.ovf.i2";
372 op[opc_conv_ovf_i2_un] := "conv.ovf.i2.un";
373 op[opc_conv_ovf_i4] := "conv.ovf.i4";
374 op[opc_conv_ovf_i4_un] := "conv.ovf.i4.un";
375 op[opc_conv_ovf_i8] := "conv.ovf.i8";
376 op[opc_conv_ovf_i8_un] := "conv.ovf.i8.un";
377 op[opc_conv_ovf_u] := "conv.ovf.u";
378 op[opc_conv_ovf_u_un] := "conv.ovf.u.un";
379 op[opc_conv_ovf_u1] := "conv.ovf.u1";
380 op[opc_conv_ovf_u1_un] := "conv.ovf.u1.un";
381 op[opc_conv_ovf_u2] := "conv.ovf.u2";
382 op[opc_conv_ovf_u2_un] := "conv.ovf.u2.un";
383 op[opc_conv_ovf_u4] := "conv.ovf.u4";
384 op[opc_conv_ovf_u4_un] := "conv.ovf.u4.un";
385 op[opc_conv_ovf_u8] := "conv.ovf.u8";
386 op[opc_conv_ovf_u8_un] := "conv.ovf.u8.un";
387 op[opc_conv_r4] := "conv.r4";
388 op[opc_conv_r8] := "conv.r8";
389 op[opc_conv_u] := "conv.u";
390 op[opc_conv_u1] := "conv.u1";
391 op[opc_conv_u2] := "conv.u2";
392 op[opc_conv_u4] := "conv.u4";
393 op[opc_conv_u8] := "conv.u8";
394 op[opc_cpblk] := "cpblk";
395 op[opc_div] := "div";
396 op[opc_div_un] := "div.un";
397 op[opc_dup] := "dup";
398 op[opc_endcatch] := "endcatch";
399 op[opc_endfilter] := "endfilter";
400 op[opc_endfinally] := "endfinally";
401 op[opc_initblk] := "initblk";
402 op[opc_jmpi] := "jmpi";
403 op[opc_ldarg_0] := "ldarg.0";
404 op[opc_ldarg_1] := "ldarg.1";
405 op[opc_ldarg_2] := "ldarg.2";
406 op[opc_ldarg_3] := "ldarg.3";
407 op[opc_ldc_i4_0] := "ldc.i4.0";
408 op[opc_ldc_i4_1] := "ldc.i4.1";
409 op[opc_ldc_i4_2] := "ldc.i4.2";
410 op[opc_ldc_i4_3] := "ldc.i4.3";
411 op[opc_ldc_i4_4] := "ldc.i4.4";
412 op[opc_ldc_i4_5] := "ldc.i4.5";
413 op[opc_ldc_i4_6] := "ldc.i4.6";
414 op[opc_ldc_i4_7] := "ldc.i4.7";
415 op[opc_ldc_i4_8] := "ldc.i4.8";
416 op[opc_ldc_i4_M1] := "ldc.i4.M1";
417 op[opc_ldelem_i] := "ldelem.i";
418 op[opc_ldelem_i1] := "ldelem.i1";
419 op[opc_ldelem_i2] := "ldelem.i2";
420 op[opc_ldelem_i4] := "ldelem.i4";
421 op[opc_ldelem_i8] := "ldelem.i8";
422 op[opc_ldelem_r4] := "ldelem.r4";
423 op[opc_ldelem_r8] := "ldelem.r8";
424 op[opc_ldelem_ref] := "ldelem.ref";
425 op[opc_ldelem_u] := "ldelem.u";
426 op[opc_ldelem_u1] := "ldelem.u1";
427 op[opc_ldelem_u2] := "ldelem.u2";
428 op[opc_ldelem_u4] := "ldelem.u4";
429 op[opc_ldind_i] := "ldind.i";
430 op[opc_ldind_i1] := "ldind.i1";
431 op[opc_ldind_i2] := "ldind.i2";
432 op[opc_ldind_i4] := "ldind.i4";
433 op[opc_ldind_i8] := "ldind.i8";
434 op[opc_ldind_r4] := "ldind.r4";
435 op[opc_ldind_r8] := "ldind.r8";
436 op[opc_ldind_ref] := "ldind.ref";
437 op[opc_ldind_u] := "ldind.u";
438 op[opc_ldind_u1] := "ldind.u1";
439 op[opc_ldind_u2] := "ldind.u2"; (* NOT ldind.u3! *)
440 op[opc_ldind_u4] := "ldind.u4";
441 op[opc_ldlen] := "ldlen";
442 op[opc_ldloc_0] := "ldloc.0";
443 op[opc_ldloc_1] := "ldloc.1";
444 op[opc_ldloc_2] := "ldloc.2";
445 op[opc_ldloc_3] := "ldloc.3";
446 op[opc_ldnull] := "ldnull";
447 op[opc_localloc] := "localloc";
448 op[opc_mul] := "mul";
449 op[opc_mul_ovf] := "mul.ovf";
450 op[opc_mul_ovf_un] := "mul.ovf.un";
451 op[opc_neg] := "neg";
452 op[opc_nop] := "nop";
453 op[opc_not] := "not";
454 op[opc_or] := "or";
455 op[opc_pop] := "pop";
456 op[opc_refanytype] := "refanytype";
457 op[opc_rem] := "rem";
458 op[opc_rem_un] := "rem.un";
459 op[opc_ret] := "ret";
460 op[opc_rethrow] := "rethrow";
461 op[opc_shl] := "shl";
462 op[opc_shr] := "shr";
463 op[opc_shr_un] := "shr.un";
464 op[opc_stelem_i] := "stelem.i";
465 op[opc_stelem_i1] := "stelem.i1";
466 op[opc_stelem_i2] := "stelem.i2";
467 op[opc_stelem_i4] := "stelem.i4";
468 op[opc_stelem_i8] := "stelem.i8";
469 op[opc_stelem_r4] := "stelem.r4";
470 op[opc_stelem_r8] := "stelem.r8";
471 op[opc_stelem_ref] := "stelem.ref";
472 op[opc_stind_i] := "stind.i";
473 op[opc_stind_i1] := "stind.i1";
474 op[opc_stind_i2] := "stind.i2";
475 op[opc_stind_i4] := "stind.i4";
476 op[opc_stind_i8] := "stind.i8";
477 op[opc_stind_r4] := "stind.r4";
478 op[opc_stind_r8] := "stind.r8";
479 op[opc_stind_ref] := "stind.ref";
480 op[opc_stloc_0] := "stloc.0";
481 op[opc_stloc_1] := "stloc.1";
482 op[opc_stloc_2] := "stloc.2";
483 op[opc_stloc_3] := "stloc.3";
484 op[opc_sub] := "sub";
485 op[opc_sub_ovf] := "sub.ovf";
486 op[opc_sub_ovf_un] := "sub.ovf.un";
487 op[opc_tailcall] := "tailcall";
488 op[opc_throw] := "throw";
489 op[opc_volatile] := "volatile";
490 op[opc_xor] := "xor";
492 op[opc_ldarg] := "ldarg";
493 op[opc_ldarg_s] := "ldarg.s";
494 op[opc_ldarga] := "ldarga";
495 op[opc_ldarga_s] := "ldarga.s";
496 op[opc_starg] := "starg";
497 op[opc_starg_s] := "starg.s";
498 op[opc_ldloc] := "ldloc";
499 op[opc_ldloc_s] := "ldloc.s";
500 op[opc_ldloca] := "ldloca";
501 op[opc_ldloca_s] := "ldloca.s";
502 op[opc_stloc] := "stloc";
503 op[opc_stloc_s] := "stloc.s";
505 op[opc_ldc_i4] := "ldc.i4";
506 op[opc_unaligned_] := "unaligned.";
507 op[opc_ldc_i4_s] := "ldc.i4.s";
508 op[opc_ldc_i8] := "ldc.i8";
509 op[opc_ldc_r4] := "ldc.r4";
510 op[opc_ldc_r8] := "ldc.r8";
512 op[opc_beq] := "beq";
513 op[opc_beq_s] := "beq.s";
514 op[opc_bge] := "bge";
515 op[opc_bge_s] := "bge.s";
516 op[opc_bge_un] := "bge.un";
517 op[opc_bge_un_s] := "bge.un.s";
518 op[opc_bgt] := "bgt";
519 op[opc_bgt_s] := "bgt.s";
520 op[opc_bgt_un] := "bgt.un";
521 op[opc_bgt_un_s] := "bgt.un.s";
522 op[opc_ble] := "ble";
523 op[opc_ble_s] := "ble.s";
524 op[opc_ble_un] := "ble.un";
525 op[opc_ble_un_s] := "ble.un.s";
526 op[opc_blt] := "blt";
527 op[opc_blt_s] := "blt.s";
528 op[opc_blt_un] := "blt.un";
529 op[opc_blt_un_s] := "blt.un.s";
530 op[opc_bne_un] := "bne.un";
531 op[opc_bne_un_s] := "bne.un.s";
532 op[opc_br] := "br";
533 op[opc_br_s] := "br.s";
534 op[opc_brfalse] := "brfalse";
535 op[opc_brfalse_s] := "brfalse.s";
536 op[opc_brtrue] := "brtrue";
537 op[opc_brtrue_s] := "brtrue.s";
538 op[opc_leave] := "leave";
539 (*
540 * op[opc_leave_s] := "leave.s";
541 *)
542 op[opc_call] := "call";
543 op[opc_callvirt] := "callvirt";
544 op[opc_jmp] := "jmp";
545 op[opc_ldftn] := "ldftn";
546 op[opc_ldvirtftn] := "ldvirtftn";
547 op[opc_newobj] := "newobj";
549 op[opc_ldfld] := "ldfld";
550 op[opc_ldflda] := "ldflda";
551 op[opc_ldsfld] := "ldsfld";
552 op[opc_ldsflda] := "ldsflda";
553 op[opc_stfld] := "stfld";
554 op[opc_stsfld] := "stsfld";
556 op[opc_box] := "box";
557 op[opc_castclass] := "castclass";
558 op[opc_cpobj] := "cpobj";
559 op[opc_initobj] := "initobj";
560 op[opc_isinst] := "isinst";
561 op[opc_ldelema] := "ldelema";
562 op[opc_ldobj] := "ldobj";
563 op[opc_mkrefany] := "mkrefany";
564 op[opc_newarr] := "newarr";
565 op[opc_refanyval] := "refanyval";
566 op[opc_sizeof] := "sizeof";
567 op[opc_stobj] := "stobj";
568 op[opc_unbox] := "unbox";
570 op[opc_ldstr] := "ldstr";
571 op[opc_calli] := "calli";
572 op[opc_ldptr] := "ldptr";
573 op[opc_ldtoken] := "ldtoken";
574 op[opc_switch] := "switch";
576 (* ---------------------------------------------- *)
578 cd[opc_error] := -1;
581 cd[opc_nop] := 0;
582 cd[opc_break] := 1;
583 cd[opc_ldarg_0] := 2;
584 cd[opc_ldarg_1] := 3;
585 cd[opc_ldarg_2] := 4;
586 cd[opc_ldarg_3] := 5;
587 cd[opc_ldloc_0] := 6;
588 cd[opc_ldloc_1] := 7;
589 cd[opc_ldloc_2] := 8;
590 cd[opc_ldloc_3] := 9;
591 cd[opc_stloc_0] := 10;
592 cd[opc_stloc_1] := 11;
593 cd[opc_stloc_2] := 12;
594 cd[opc_stloc_3] := 13;
596 cd[opc_ldarg_s] := 0EH;
597 cd[opc_ldarga_s] := 0FH;
598 cd[opc_starg_s] := 10H;
599 cd[opc_ldloc_s] := 11H;
600 cd[opc_ldloca_s] := 12H;
601 cd[opc_stloc_s] := 13H;
603 cd[opc_ldnull] := 14H;
604 cd[opc_ldc_i4_M1] := 15H;
605 cd[opc_ldc_i4_0] := 16H;
606 cd[opc_ldc_i4_1] := 17H;
607 cd[opc_ldc_i4_2] := 18H;
608 cd[opc_ldc_i4_3] := 19H;
609 cd[opc_ldc_i4_4] := 1AH;
610 cd[opc_ldc_i4_5] := 1BH;
611 cd[opc_ldc_i4_6] := 1CH;
612 cd[opc_ldc_i4_7] := 1DH;
613 cd[opc_ldc_i4_8] := 1EH;
614 cd[opc_ldc_i4_s] := 1FH;
615 cd[opc_ldc_i4] := 20H;
616 cd[opc_ldc_i8] := 21H;
617 cd[opc_ldc_r4] := 22H;
618 cd[opc_ldc_r8] := 23H;
620 cd[opc_dup] := 25H;
621 cd[opc_pop] := 26H;
622 cd[opc_jmp] := 27H;
623 cd[opc_call] := 28H;
625 cd[opc_ret] := 2AH;
626 cd[opc_br] := 2BH;
627 cd[opc_brfalse] := 2CH;
628 cd[opc_brtrue] := 2DH;
629 cd[opc_beq] := 2EH;
630 cd[opc_bge] := 2FH;
631 cd[opc_bgt] := 30H;
632 cd[opc_ble] := 31H;
633 cd[opc_blt] := 32H;
634 cd[opc_bne_un] := 33H;
635 cd[opc_bge_un] := 34H;
636 cd[opc_bgt_un] := 35H;
637 cd[opc_ble_un] := 36H;
638 cd[opc_blt_un] := 37H;
640 cd[opc_ldind_i1] := 46H;
641 cd[opc_ldind_u1] := 71;
642 cd[opc_ldind_i2] := 72;
643 cd[opc_ldind_u2] := 73;
644 cd[opc_ldind_i4] := 74;
645 cd[opc_ldind_u4] := 75;
646 cd[opc_ldind_i8] := 76;
647 cd[opc_ldind_i] := 77;
648 cd[opc_ldind_r4] := 78;
649 cd[opc_ldind_r8] := 79;
650 cd[opc_ldind_ref] := 80;
651 cd[opc_stind_ref] := 81;
652 cd[opc_stind_i1] := 82;
653 cd[opc_stind_i2] := 83;
654 cd[opc_stind_i4] := 84;
655 cd[opc_stind_i8] := 85;
656 cd[opc_stind_r4] := 86;
657 cd[opc_stind_r8] := 87;
658 cd[opc_add] := 88;
659 cd[opc_sub] := 89;
660 cd[opc_mul] := 90;
661 cd[opc_div] := 91;
662 cd[opc_div_un] := 92;
663 cd[opc_rem] := 93;
664 cd[opc_rem_un] := 94;
665 cd[opc_and] := 95;
666 cd[opc_or] := 96;
667 cd[opc_xor] := 97;
668 cd[opc_shl] := 98;
669 cd[opc_shr] := 99;
670 cd[opc_shr_un] := 100;
671 cd[opc_neg] := 101;
672 cd[opc_not] := 102;
673 cd[opc_conv_i1] := 103;
674 cd[opc_conv_i2] := 104;
675 cd[opc_conv_i4] := 105;
676 cd[opc_conv_i8] := 106;
677 cd[opc_conv_r4] := 107;
678 cd[opc_conv_r8] := 108;
679 cd[opc_conv_u4] := 109;
680 cd[opc_conv_u8] := 110;
682 cd[opc_callvirt] := 6FH;
683 cd[opc_cpobj] := 70H;
684 cd[opc_ldobj] := 71H;
685 cd[opc_ldstr] := 72H;
686 cd[opc_newobj] := 73H;
687 cd[opc_castclass] := 74H;
688 cd[opc_isinst] := 75H;
689 (*
690 * cd[opc_conv_r_un] := 76H;
691 *)
692 cd[opc_unbox] := 79H;
693 cd[opc_throw] := 7AH;
694 cd[opc_ldfld] := 7BH;
695 cd[opc_ldflda] := 7CH;
696 cd[opc_stfld] := 7DH;
697 cd[opc_ldsfld] := 7EH;
698 cd[opc_ldsflda] := 7FH;
699 cd[opc_stsfld] := 80H;
700 cd[opc_stobj] := 81H;
701 cd[opc_conv_ovf_i1_un] := 82H;
702 cd[opc_conv_ovf_i2_un] := 83H;
703 cd[opc_conv_ovf_i4_un] := 84H;
704 cd[opc_conv_ovf_i8_un] := 85H;
705 cd[opc_conv_ovf_u1_un] := 86H;
706 cd[opc_conv_ovf_u2_un] := 87H;
707 cd[opc_conv_ovf_u4_un] := 88H;
708 cd[opc_conv_ovf_u8_un] := 89H;
709 cd[opc_conv_ovf_i_un] := 8AH;
710 cd[opc_conv_ovf_u_un] := 8BH;
711 cd[opc_box] := 8CH;
712 cd[opc_newarr] := 8DH;
713 cd[opc_ldlen] := 8EH;
714 cd[opc_ldelema] := 8FH;
715 cd[opc_ldelem_i1] := 90H;
716 cd[opc_ldelem_u1] := 91H;
717 cd[opc_ldelem_i2] := 92H;
718 cd[opc_ldelem_u2] := 93H;
719 cd[opc_ldelem_i4] := 94H;
720 cd[opc_ldelem_u4] := 95H;
721 cd[opc_ldelem_i8] := 96H;
722 cd[opc_ldelem_i] := 97H;
723 cd[opc_ldelem_r4] := 98H;
724 cd[opc_ldelem_r8] := 99H;
725 cd[opc_ldelem_ref] := 9AH;
727 cd[opc_stelem_i] := 9BH;
728 cd[opc_stelem_i1] := 9CH;
729 cd[opc_stelem_i2] := 9DH;
730 cd[opc_stelem_i4] := 9EH;
731 cd[opc_stelem_i8] := 9FH;
732 cd[opc_stelem_r4] := 0A0H;
733 cd[opc_stelem_r8] := 0A1H;
734 cd[opc_stelem_ref] := 0A2H;
736 cd[opc_conv_ovf_i1] := 0B3H;
737 cd[opc_conv_ovf_u1] := 0B4H;
738 cd[opc_conv_ovf_i2] := 0B5H;
739 cd[opc_conv_ovf_u2] := 0B6H;
740 cd[opc_conv_ovf_i4] := 0B7H;
741 cd[opc_conv_ovf_u4] := 0B8H;
742 cd[opc_conv_ovf_i8] := 0B9H;
743 cd[opc_conv_ovf_u8] := 0BAH;
745 cd[opc_refanyval] := 0C2H;
746 cd[opc_ckfinite] := 0C3H;
747 cd[opc_mkrefany] := 0C6H;
749 cd[opc_ldtoken] := 0D0H;
750 cd[opc_conv_u2] := 0D1H;
751 cd[opc_conv_u1] := 0D2H;
752 cd[opc_conv_i] := 0D3H;
753 cd[opc_conv_ovf_i] := 0D4H;
754 cd[opc_conv_ovf_u] := 0D5H;
755 cd[opc_add_ovf] := 0D6H;
756 cd[opc_add_ovf_un] := 0D7H;
757 cd[opc_mul_ovf] := 0D8H;
758 cd[opc_mul_ovf_un] := 0D9H;
759 cd[opc_sub_ovf] := 0DAH;
760 cd[opc_sub_ovf_un] := 0DBH;
761 cd[opc_endfinally] := 0DCH;
763 cd[opc_leave] := 0DEH; (* actually leave.s *)
764 (*
765 * cd[opc_leave_s] := 0DEH;
766 *)
767 cd[opc_stind_i] := 0DFH;
768 cd[opc_conv_u] := 0E0H;
770 cd[opc_localloc] := 0F1H;
771 cd[opc_endfilter] := 0F2H;
772 cd[opc_volatile] := 0F4H;
773 cd[opc_tailcall] := 0F5H;
774 cd[opc_cpblk] := 0F8H;
775 cd[opc_initblk] := 0F9H;
777 cd[opc_arglist] := 0FE00H;
778 cd[opc_ceq] := 0FE01H;
779 cd[opc_cgt] := 0FE02H;
780 cd[opc_cgt_un] := 0FE03H;
781 cd[opc_clt] := 0FE04H;
782 cd[opc_clt_un] := 0FE05H;
783 cd[opc_ldftn] := 0FE06H;
784 cd[opc_ldvirtftn] := 0FE07H;
785 cd[opc_ldarg] := 0FE09H;
786 cd[opc_ldarga] := 0FE0AH;
787 cd[opc_starg] := 0FE0BH;
788 cd[opc_ldloc] := 0FE0CH;
789 cd[opc_ldloca] := 0FE0DH;
790 cd[opc_stloc] := 0FE0EH;
791 cd[opc_unaligned_] := 0FE12H;
792 cd[opc_initobj] := 0FE15H;
793 cd[opc_rethrow] := 0FE1AH;
794 cd[opc_sizeof] := 0FE1CH;
795 cd[opc_refanytype] := 0FE1DH;
798 (* ---------------------------------------------- *)
800 dl[opc_error] := 0;
801 dl[opc_add] := -1;
802 dl[opc_add_ovf] := -1;
803 dl[opc_add_ovf_un] := -1;
804 dl[opc_and] := -1;
805 dl[opc_arglist] := 1;
806 dl[opc_break] := 0;
807 dl[opc_ceq] := -1;
808 dl[opc_cgt] := -1;
809 dl[opc_cgt_un] := -1;
810 dl[opc_ckfinite] := -1;
811 dl[opc_clt] := -1;
812 dl[opc_clt_un] := -1;
813 dl[opc_conv_i] := 0;
814 dl[opc_conv_i1] := 0;
815 dl[opc_conv_i2] := 0;
816 dl[opc_conv_i4] := 0;
817 dl[opc_conv_i8] := 0;
818 dl[opc_conv_ovf_i] := 0;
819 dl[opc_conv_ovf_i_un] := 0;
820 dl[opc_conv_ovf_i1] := 0;
821 dl[opc_conv_ovf_i1_un] := 0;
822 dl[opc_conv_ovf_i2] := 0;
823 dl[opc_conv_ovf_i2_un] := 0;
824 dl[opc_conv_ovf_i4] := 0;
825 dl[opc_conv_ovf_i4_un] := 0;
826 dl[opc_conv_ovf_i8] := 0;
827 dl[opc_conv_ovf_i8_un] := 0;
828 dl[opc_conv_ovf_u] := 0;
829 dl[opc_conv_ovf_u_un] := 0;
830 dl[opc_conv_ovf_u1] := 0;
831 dl[opc_conv_ovf_u1_un] := 0;
832 dl[opc_conv_ovf_u2] := 0;
833 dl[opc_conv_ovf_u2_un] := 0;
834 dl[opc_conv_ovf_u4] := 0;
835 dl[opc_conv_ovf_u4_un] := 0;
836 dl[opc_conv_ovf_u8] := 0;
837 dl[opc_conv_ovf_u8_un] := 0;
838 dl[opc_conv_r4] := 0;
839 dl[opc_conv_r8] := 0;
840 dl[opc_conv_u] := 0;
841 dl[opc_conv_u1] := 0;
842 dl[opc_conv_u2] := 0;
843 dl[opc_conv_u4] := 0;
844 dl[opc_conv_u8] := 0;
845 dl[opc_cpblk] := -3;
846 dl[opc_div] := -1;
847 dl[opc_div_un] := -1;
848 dl[opc_dup] := 1;
849 dl[opc_endcatch] := 0;
850 dl[opc_endfilter] := -1;
851 dl[opc_endfinally] := 0;
852 dl[opc_initblk] := -3;
853 dl[opc_ldarg_0] := 1;
854 dl[opc_ldarg_1] := 1;
855 dl[opc_ldarg_2] := 1;
856 dl[opc_ldarg_3] := 1;
857 dl[opc_ldc_i4_0] := 1;
858 dl[opc_ldc_i4_1] := 1;
859 dl[opc_ldc_i4_2] := 1;
860 dl[opc_ldc_i4_3] := 1;
861 dl[opc_ldc_i4_4] := 1;
862 dl[opc_ldc_i4_5] := 1;
863 dl[opc_ldc_i4_6] := 1;
864 dl[opc_ldc_i4_7] := 1;
865 dl[opc_ldc_i4_8] := 1;
866 dl[opc_ldc_i4_M1] := 1;
867 dl[opc_ldelem_i] := -1;
868 dl[opc_ldelem_i1] := -1;
869 dl[opc_ldelem_i2] := -1;
870 dl[opc_ldelem_i4] := -1;
871 dl[opc_ldelem_i8] := -1;
872 dl[opc_ldelem_r4] := -1;
873 dl[opc_ldelem_r8] := -1;
874 dl[opc_ldelem_ref] := -1;
875 dl[opc_ldelem_u] := -1;
876 dl[opc_ldelem_u1] := -1;
877 dl[opc_ldelem_u2] := -1;
878 dl[opc_ldelem_u4] := -1;
879 dl[opc_ldind_i] := 0;
880 dl[opc_ldind_i1] := 0;
881 dl[opc_ldind_i2] := 0;
882 dl[opc_ldind_i4] := 0;
883 dl[opc_ldind_i8] := 0;
884 dl[opc_ldind_r4] := 0;
885 dl[opc_ldind_r8] := 0;
886 dl[opc_ldind_ref] := 0;
887 dl[opc_ldind_u] := 0;
888 dl[opc_ldind_u1] := 0;
889 dl[opc_ldind_u2] := 0;
890 dl[opc_ldind_u4] := 0;
891 dl[opc_ldlen] := 0;
892 dl[opc_ldloc_0] := 1;
893 dl[opc_ldloc_1] := 1;
894 dl[opc_ldloc_2] := 1;
895 dl[opc_ldloc_3] := 1;
896 dl[opc_ldnull] := 1;
897 dl[opc_localloc] := 0;
898 dl[opc_mul] := -1;
899 dl[opc_mul_ovf] := -1;
900 dl[opc_mul_ovf_un] := -1;
901 dl[opc_neg] := 0;
902 dl[opc_nop] := 0;
903 dl[opc_not] := 0;
904 dl[opc_or] := -1;
905 dl[opc_pop] := -1;
906 dl[opc_refanytype] := 0;
907 dl[opc_rem] := -1;
908 dl[opc_rem_un] := -1;
909 dl[opc_ret] := 0;
910 dl[opc_rethrow] := 0;
911 dl[opc_shl] := -1;
912 dl[opc_shr] := -1;
913 dl[opc_shr_un] := -1;
914 dl[opc_stelem_i] := -3;
915 dl[opc_stelem_i1] := -3;
916 dl[opc_stelem_i2] := -3;
917 dl[opc_stelem_i4] := -3;
918 dl[opc_stelem_i8] := -3;
919 dl[opc_stelem_r4] := -3;
920 dl[opc_stelem_r8] := -3;
921 dl[opc_stelem_ref] := -3;
922 dl[opc_stind_i] := -2;
923 dl[opc_stind_i1] := -2;
924 dl[opc_stind_i2] := -2;
925 dl[opc_stind_i4] := -2;
926 dl[opc_stind_i8] := -2;
927 dl[opc_stind_r4] := -2;
928 dl[opc_stind_r8] := -2;
929 dl[opc_stind_ref] := -2;
930 dl[opc_stloc_0] := -1;
931 dl[opc_stloc_1] := -1;
932 dl[opc_stloc_2] := -1;
933 dl[opc_stloc_3] := -1;
934 dl[opc_sub] := -1;
935 dl[opc_sub_ovf] := -1;
936 dl[opc_sub_ovf_un] := -1;
937 dl[opc_tailcall] := 0;
938 dl[opc_throw] := -1;
939 dl[opc_volatile] := 0;
940 dl[opc_xor] := -1;
942 dl[opc_ldarg] := 1;
943 dl[opc_ldarg_s] := 1;
944 dl[opc_ldarga] := 1;
945 dl[opc_ldarga_s] := 1;
946 dl[opc_starg] := -1;
947 dl[opc_starg_s] := -1;
948 dl[opc_ldloc] := 1;
949 dl[opc_ldloc_s] := 1;
950 dl[opc_ldloca] := 1;
951 dl[opc_ldloca_s] := 1;
952 dl[opc_stloc] := -1;
953 dl[opc_stloc_s] := -1;
955 dl[opc_ldc_i4] := 1;
956 dl[opc_unaligned_] := 0;
957 dl[opc_ldc_i4_s] := 1;
958 dl[opc_ldc_i8] := 1;
959 dl[opc_ldc_r4] := 1;
960 dl[opc_ldc_r8] := 1;
962 dl[opc_beq] := -2;
963 dl[opc_beq_s] := -2;
964 dl[opc_bge] := -2;
965 dl[opc_bge_s] := -2;
966 dl[opc_bge_un] := -2;
967 dl[opc_bge_un_s] := -2;
968 dl[opc_bgt] := -2;
969 dl[opc_bgt_s] := -2;
970 dl[opc_bgt_un] := -2;
971 dl[opc_bgt_un_s] := -2;
972 dl[opc_ble] := -2;
973 dl[opc_ble_s] := -2;
974 dl[opc_ble_un] := -2;
975 dl[opc_ble_un_s] := -2;
976 dl[opc_blt] := -2;
977 dl[opc_blt_s] := -2;
978 dl[opc_blt_un] := -2;
979 dl[opc_blt_un_s] := -2;
980 dl[opc_bne_un] := -2;
981 dl[opc_bne_un_s] := -2;
982 dl[opc_br] := 0;
983 dl[opc_br_s] := 0;
984 dl[opc_brfalse] := -1;
985 dl[opc_brfalse_s] := -1;
986 dl[opc_brtrue] := -1;
987 dl[opc_brtrue_s] := -1;
988 dl[opc_leave] := 0;
989 (*
990 * dl[opc_leave_s] := 0;
991 *)
992 dl[opc_call] := 0; (* variable *)
993 dl[opc_callvirt] := 0; (* variable *)
994 dl[opc_jmp] := 0;
995 dl[opc_jmpi] := -1;
997 dl[opc_ldftn] := 1;
998 dl[opc_ldvirtftn] := 1;
999 dl[opc_newobj] := 0; (* variable *)
1001 dl[opc_ldfld] := 0;
1002 dl[opc_ldflda] := 0;
1003 dl[opc_ldsfld] := 1;
1004 dl[opc_ldsflda] := 1;
1005 dl[opc_stfld] := -2;
1006 dl[opc_stsfld] := -1;
1008 dl[opc_box] := 0;
1009 dl[opc_castclass] := 0;
1010 dl[opc_cpobj] := -2;
1011 dl[opc_initobj] := -1;
1012 dl[opc_isinst] := 0;
1013 dl[opc_ldelema] := -1;
1014 dl[opc_ldobj] := 0;
1015 dl[opc_mkrefany] := 0;
1016 dl[opc_newarr] := 0;
1017 dl[opc_refanyval] := 0;
1018 dl[opc_sizeof] := 1;
1019 dl[opc_stobj] := -2;
1020 dl[opc_unbox] := 0;
1022 dl[opc_ldstr] := 1;
1023 dl[opc_calli] := 0; (* variable *)
1024 dl[opc_ldptr] := 1;
1025 dl[opc_ldtoken] := 1;
1026 dl[opc_switch] := -1;
1028 END IlasmCodes.
1029 (* ============================================================ *)