5 // Jb Evain (jbevain@gmail.com)
7 // Generated by /CodeGen/cecil-gen.rb do not edit
8 // Fri Jun 06 13:04:02 +0200 2008
12 // Permission is hereby granted, free of charge, to any person obtaining
13 // a copy of this software and associated documentation files (the
14 // "Software"), to deal in the Software without restriction, including
15 // without limitation the rights to use, copy, modify, merge, publish,
16 // distribute, sublicense, and/or sell copies of the Software, and to
17 // permit persons to whom the Software is furnished to do so, subject to
18 // the following conditions:
20 // The above copyright notice and this permission notice shall be
21 // included in all copies or substantial portions of the Software.
23 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
24 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
26 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
27 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
28 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
29 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
32 namespace Mono.Cecil.Cil {
34 internal sealed class OpCodes {
36 internal static readonly OpCode [] OneByteOpCode = new OpCode [0xe0 + 1];
37 internal static readonly OpCode [] TwoBytesOpCode = new OpCode [0x1e + 1];
39 public static readonly OpCode Nop = new OpCode (
41 Code.Nop, FlowControl.Next,
42 OpCodeType.Primitive, OperandType.InlineNone,
43 StackBehaviour.Pop0, StackBehaviour.Push0);
45 public static readonly OpCode Break = new OpCode (
47 Code.Break, FlowControl.Break,
48 OpCodeType.Primitive, OperandType.InlineNone,
49 StackBehaviour.Pop0, StackBehaviour.Push0);
51 public static readonly OpCode Ldarg_0 = new OpCode (
53 Code.Ldarg_0, FlowControl.Next,
54 OpCodeType.Macro, OperandType.InlineNone,
55 StackBehaviour.Pop0, StackBehaviour.Push1);
57 public static readonly OpCode Ldarg_1 = new OpCode (
59 Code.Ldarg_1, FlowControl.Next,
60 OpCodeType.Macro, OperandType.InlineNone,
61 StackBehaviour.Pop0, StackBehaviour.Push1);
63 public static readonly OpCode Ldarg_2 = new OpCode (
65 Code.Ldarg_2, FlowControl.Next,
66 OpCodeType.Macro, OperandType.InlineNone,
67 StackBehaviour.Pop0, StackBehaviour.Push1);
69 public static readonly OpCode Ldarg_3 = new OpCode (
71 Code.Ldarg_3, FlowControl.Next,
72 OpCodeType.Macro, OperandType.InlineNone,
73 StackBehaviour.Pop0, StackBehaviour.Push1);
75 public static readonly OpCode Ldloc_0 = new OpCode (
77 Code.Ldloc_0, FlowControl.Next,
78 OpCodeType.Macro, OperandType.InlineNone,
79 StackBehaviour.Pop0, StackBehaviour.Push1);
81 public static readonly OpCode Ldloc_1 = new OpCode (
83 Code.Ldloc_1, FlowControl.Next,
84 OpCodeType.Macro, OperandType.InlineNone,
85 StackBehaviour.Pop0, StackBehaviour.Push1);
87 public static readonly OpCode Ldloc_2 = new OpCode (
89 Code.Ldloc_2, FlowControl.Next,
90 OpCodeType.Macro, OperandType.InlineNone,
91 StackBehaviour.Pop0, StackBehaviour.Push1);
93 public static readonly OpCode Ldloc_3 = new OpCode (
95 Code.Ldloc_3, FlowControl.Next,
96 OpCodeType.Macro, OperandType.InlineNone,
97 StackBehaviour.Pop0, StackBehaviour.Push1);
99 public static readonly OpCode Stloc_0 = new OpCode (
101 Code.Stloc_0, FlowControl.Next,
102 OpCodeType.Macro, OperandType.InlineNone,
103 StackBehaviour.Pop1, StackBehaviour.Push0);
105 public static readonly OpCode Stloc_1 = new OpCode (
107 Code.Stloc_1, FlowControl.Next,
108 OpCodeType.Macro, OperandType.InlineNone,
109 StackBehaviour.Pop1, StackBehaviour.Push0);
111 public static readonly OpCode Stloc_2 = new OpCode (
113 Code.Stloc_2, FlowControl.Next,
114 OpCodeType.Macro, OperandType.InlineNone,
115 StackBehaviour.Pop1, StackBehaviour.Push0);
117 public static readonly OpCode Stloc_3 = new OpCode (
119 Code.Stloc_3, FlowControl.Next,
120 OpCodeType.Macro, OperandType.InlineNone,
121 StackBehaviour.Pop1, StackBehaviour.Push0);
123 public static readonly OpCode Ldarg_S = new OpCode (
125 Code.Ldarg_S, FlowControl.Next,
126 OpCodeType.Macro, OperandType.ShortInlineParam,
127 StackBehaviour.Pop0, StackBehaviour.Push1);
129 public static readonly OpCode Ldarga_S = new OpCode (
131 Code.Ldarga_S, FlowControl.Next,
132 OpCodeType.Macro, OperandType.ShortInlineParam,
133 StackBehaviour.Pop0, StackBehaviour.Pushi);
135 public static readonly OpCode Starg_S = new OpCode (
137 Code.Starg_S, FlowControl.Next,
138 OpCodeType.Macro, OperandType.ShortInlineParam,
139 StackBehaviour.Pop1, StackBehaviour.Push0);
141 public static readonly OpCode Ldloc_S = new OpCode (
143 Code.Ldloc_S, FlowControl.Next,
144 OpCodeType.Macro, OperandType.ShortInlineVar,
145 StackBehaviour.Pop0, StackBehaviour.Push1);
147 public static readonly OpCode Ldloca_S = new OpCode (
149 Code.Ldloca_S, FlowControl.Next,
150 OpCodeType.Macro, OperandType.ShortInlineVar,
151 StackBehaviour.Pop0, StackBehaviour.Pushi);
153 public static readonly OpCode Stloc_S = new OpCode (
155 Code.Stloc_S, FlowControl.Next,
156 OpCodeType.Macro, OperandType.ShortInlineVar,
157 StackBehaviour.Pop1, StackBehaviour.Push0);
159 public static readonly OpCode Ldnull = new OpCode (
161 Code.Ldnull, FlowControl.Next,
162 OpCodeType.Primitive, OperandType.InlineNone,
163 StackBehaviour.Pop0, StackBehaviour.Pushref);
165 public static readonly OpCode Ldc_I4_M1 = new OpCode (
167 Code.Ldc_I4_M1, FlowControl.Next,
168 OpCodeType.Macro, OperandType.InlineNone,
169 StackBehaviour.Pop0, StackBehaviour.Pushi);
171 public static readonly OpCode Ldc_I4_0 = new OpCode (
173 Code.Ldc_I4_0, FlowControl.Next,
174 OpCodeType.Macro, OperandType.InlineNone,
175 StackBehaviour.Pop0, StackBehaviour.Pushi);
177 public static readonly OpCode Ldc_I4_1 = new OpCode (
179 Code.Ldc_I4_1, FlowControl.Next,
180 OpCodeType.Macro, OperandType.InlineNone,
181 StackBehaviour.Pop0, StackBehaviour.Pushi);
183 public static readonly OpCode Ldc_I4_2 = new OpCode (
185 Code.Ldc_I4_2, FlowControl.Next,
186 OpCodeType.Macro, OperandType.InlineNone,
187 StackBehaviour.Pop0, StackBehaviour.Pushi);
189 public static readonly OpCode Ldc_I4_3 = new OpCode (
191 Code.Ldc_I4_3, FlowControl.Next,
192 OpCodeType.Macro, OperandType.InlineNone,
193 StackBehaviour.Pop0, StackBehaviour.Pushi);
195 public static readonly OpCode Ldc_I4_4 = new OpCode (
197 Code.Ldc_I4_4, FlowControl.Next,
198 OpCodeType.Macro, OperandType.InlineNone,
199 StackBehaviour.Pop0, StackBehaviour.Pushi);
201 public static readonly OpCode Ldc_I4_5 = new OpCode (
203 Code.Ldc_I4_5, FlowControl.Next,
204 OpCodeType.Macro, OperandType.InlineNone,
205 StackBehaviour.Pop0, StackBehaviour.Pushi);
207 public static readonly OpCode Ldc_I4_6 = new OpCode (
209 Code.Ldc_I4_6, FlowControl.Next,
210 OpCodeType.Macro, OperandType.InlineNone,
211 StackBehaviour.Pop0, StackBehaviour.Pushi);
213 public static readonly OpCode Ldc_I4_7 = new OpCode (
215 Code.Ldc_I4_7, FlowControl.Next,
216 OpCodeType.Macro, OperandType.InlineNone,
217 StackBehaviour.Pop0, StackBehaviour.Pushi);
219 public static readonly OpCode Ldc_I4_8 = new OpCode (
221 Code.Ldc_I4_8, FlowControl.Next,
222 OpCodeType.Macro, OperandType.InlineNone,
223 StackBehaviour.Pop0, StackBehaviour.Pushi);
225 public static readonly OpCode Ldc_I4_S = new OpCode (
227 Code.Ldc_I4_S, FlowControl.Next,
228 OpCodeType.Macro, OperandType.ShortInlineI,
229 StackBehaviour.Pop0, StackBehaviour.Pushi);
231 public static readonly OpCode Ldc_I4 = new OpCode (
233 Code.Ldc_I4, FlowControl.Next,
234 OpCodeType.Primitive, OperandType.InlineI,
235 StackBehaviour.Pop0, StackBehaviour.Pushi);
237 public static readonly OpCode Ldc_I8 = new OpCode (
239 Code.Ldc_I8, FlowControl.Next,
240 OpCodeType.Primitive, OperandType.InlineI8,
241 StackBehaviour.Pop0, StackBehaviour.Pushi8);
243 public static readonly OpCode Ldc_R4 = new OpCode (
245 Code.Ldc_R4, FlowControl.Next,
246 OpCodeType.Primitive, OperandType.ShortInlineR,
247 StackBehaviour.Pop0, StackBehaviour.Pushr4);
249 public static readonly OpCode Ldc_R8 = new OpCode (
251 Code.Ldc_R8, FlowControl.Next,
252 OpCodeType.Primitive, OperandType.InlineR,
253 StackBehaviour.Pop0, StackBehaviour.Pushr8);
255 public static readonly OpCode Dup = new OpCode (
257 Code.Dup, FlowControl.Next,
258 OpCodeType.Primitive, OperandType.InlineNone,
259 StackBehaviour.Pop1, StackBehaviour.Push1_push1);
261 public static readonly OpCode Pop = new OpCode (
263 Code.Pop, FlowControl.Next,
264 OpCodeType.Primitive, OperandType.InlineNone,
265 StackBehaviour.Pop1, StackBehaviour.Push0);
267 public static readonly OpCode Jmp = new OpCode (
269 Code.Jmp, FlowControl.Call,
270 OpCodeType.Primitive, OperandType.InlineMethod,
271 StackBehaviour.Pop0, StackBehaviour.Push0);
273 public static readonly OpCode Call = new OpCode (
275 Code.Call, FlowControl.Call,
276 OpCodeType.Primitive, OperandType.InlineMethod,
277 StackBehaviour.Varpop, StackBehaviour.Varpush);
279 public static readonly OpCode Calli = new OpCode (
281 Code.Calli, FlowControl.Call,
282 OpCodeType.Primitive, OperandType.InlineSig,
283 StackBehaviour.Varpop, StackBehaviour.Varpush);
285 public static readonly OpCode Ret = new OpCode (
287 Code.Ret, FlowControl.Return,
288 OpCodeType.Primitive, OperandType.InlineNone,
289 StackBehaviour.Varpop, StackBehaviour.Push0);
291 public static readonly OpCode Br_S = new OpCode (
293 Code.Br_S, FlowControl.Branch,
294 OpCodeType.Macro, OperandType.ShortInlineBrTarget,
295 StackBehaviour.Pop0, StackBehaviour.Push0);
297 public static readonly OpCode Brfalse_S = new OpCode (
299 Code.Brfalse_S, FlowControl.Cond_Branch,
300 OpCodeType.Macro, OperandType.ShortInlineBrTarget,
301 StackBehaviour.Popi, StackBehaviour.Push0);
303 public static readonly OpCode Brtrue_S = new OpCode (
305 Code.Brtrue_S, FlowControl.Cond_Branch,
306 OpCodeType.Macro, OperandType.ShortInlineBrTarget,
307 StackBehaviour.Popi, StackBehaviour.Push0);
309 public static readonly OpCode Beq_S = new OpCode (
311 Code.Beq_S, FlowControl.Cond_Branch,
312 OpCodeType.Macro, OperandType.ShortInlineBrTarget,
313 StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
315 public static readonly OpCode Bge_S = new OpCode (
317 Code.Bge_S, FlowControl.Cond_Branch,
318 OpCodeType.Macro, OperandType.ShortInlineBrTarget,
319 StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
321 public static readonly OpCode Bgt_S = new OpCode (
323 Code.Bgt_S, FlowControl.Cond_Branch,
324 OpCodeType.Macro, OperandType.ShortInlineBrTarget,
325 StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
327 public static readonly OpCode Ble_S = new OpCode (
329 Code.Ble_S, FlowControl.Cond_Branch,
330 OpCodeType.Macro, OperandType.ShortInlineBrTarget,
331 StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
333 public static readonly OpCode Blt_S = new OpCode (
335 Code.Blt_S, FlowControl.Cond_Branch,
336 OpCodeType.Macro, OperandType.ShortInlineBrTarget,
337 StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
339 public static readonly OpCode Bne_Un_S = new OpCode (
341 Code.Bne_Un_S, FlowControl.Cond_Branch,
342 OpCodeType.Macro, OperandType.ShortInlineBrTarget,
343 StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
345 public static readonly OpCode Bge_Un_S = new OpCode (
347 Code.Bge_Un_S, FlowControl.Cond_Branch,
348 OpCodeType.Macro, OperandType.ShortInlineBrTarget,
349 StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
351 public static readonly OpCode Bgt_Un_S = new OpCode (
353 Code.Bgt_Un_S, FlowControl.Cond_Branch,
354 OpCodeType.Macro, OperandType.ShortInlineBrTarget,
355 StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
357 public static readonly OpCode Ble_Un_S = new OpCode (
359 Code.Ble_Un_S, FlowControl.Cond_Branch,
360 OpCodeType.Macro, OperandType.ShortInlineBrTarget,
361 StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
363 public static readonly OpCode Blt_Un_S = new OpCode (
365 Code.Blt_Un_S, FlowControl.Cond_Branch,
366 OpCodeType.Macro, OperandType.ShortInlineBrTarget,
367 StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
369 public static readonly OpCode Br = new OpCode (
371 Code.Br, FlowControl.Branch,
372 OpCodeType.Primitive, OperandType.InlineBrTarget,
373 StackBehaviour.Pop0, StackBehaviour.Push0);
375 public static readonly OpCode Brfalse = new OpCode (
377 Code.Brfalse, FlowControl.Cond_Branch,
378 OpCodeType.Primitive, OperandType.InlineBrTarget,
379 StackBehaviour.Popi, StackBehaviour.Push0);
381 public static readonly OpCode Brtrue = new OpCode (
383 Code.Brtrue, FlowControl.Cond_Branch,
384 OpCodeType.Primitive, OperandType.InlineBrTarget,
385 StackBehaviour.Popi, StackBehaviour.Push0);
387 public static readonly OpCode Beq = new OpCode (
389 Code.Beq, FlowControl.Cond_Branch,
390 OpCodeType.Macro, OperandType.InlineBrTarget,
391 StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
393 public static readonly OpCode Bge = new OpCode (
395 Code.Bge, FlowControl.Cond_Branch,
396 OpCodeType.Macro, OperandType.InlineBrTarget,
397 StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
399 public static readonly OpCode Bgt = new OpCode (
401 Code.Bgt, FlowControl.Cond_Branch,
402 OpCodeType.Macro, OperandType.InlineBrTarget,
403 StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
405 public static readonly OpCode Ble = new OpCode (
407 Code.Ble, FlowControl.Cond_Branch,
408 OpCodeType.Macro, OperandType.InlineBrTarget,
409 StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
411 public static readonly OpCode Blt = new OpCode (
413 Code.Blt, FlowControl.Cond_Branch,
414 OpCodeType.Macro, OperandType.InlineBrTarget,
415 StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
417 public static readonly OpCode Bne_Un = new OpCode (
419 Code.Bne_Un, FlowControl.Cond_Branch,
420 OpCodeType.Macro, OperandType.InlineBrTarget,
421 StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
423 public static readonly OpCode Bge_Un = new OpCode (
425 Code.Bge_Un, FlowControl.Cond_Branch,
426 OpCodeType.Macro, OperandType.InlineBrTarget,
427 StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
429 public static readonly OpCode Bgt_Un = new OpCode (
431 Code.Bgt_Un, FlowControl.Cond_Branch,
432 OpCodeType.Macro, OperandType.InlineBrTarget,
433 StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
435 public static readonly OpCode Ble_Un = new OpCode (
437 Code.Ble_Un, FlowControl.Cond_Branch,
438 OpCodeType.Macro, OperandType.InlineBrTarget,
439 StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
441 public static readonly OpCode Blt_Un = new OpCode (
443 Code.Blt_Un, FlowControl.Cond_Branch,
444 OpCodeType.Macro, OperandType.InlineBrTarget,
445 StackBehaviour.Pop1_pop1, StackBehaviour.Push0);
447 public static readonly OpCode Switch = new OpCode (
449 Code.Switch, FlowControl.Cond_Branch,
450 OpCodeType.Primitive, OperandType.InlineSwitch,
451 StackBehaviour.Popi, StackBehaviour.Push0);
453 public static readonly OpCode Ldind_I1 = new OpCode (
455 Code.Ldind_I1, FlowControl.Next,
456 OpCodeType.Primitive, OperandType.InlineNone,
457 StackBehaviour.Popi, StackBehaviour.Pushi);
459 public static readonly OpCode Ldind_U1 = new OpCode (
461 Code.Ldind_U1, FlowControl.Next,
462 OpCodeType.Primitive, OperandType.InlineNone,
463 StackBehaviour.Popi, StackBehaviour.Pushi);
465 public static readonly OpCode Ldind_I2 = new OpCode (
467 Code.Ldind_I2, FlowControl.Next,
468 OpCodeType.Primitive, OperandType.InlineNone,
469 StackBehaviour.Popi, StackBehaviour.Pushi);
471 public static readonly OpCode Ldind_U2 = new OpCode (
473 Code.Ldind_U2, FlowControl.Next,
474 OpCodeType.Primitive, OperandType.InlineNone,
475 StackBehaviour.Popi, StackBehaviour.Pushi);
477 public static readonly OpCode Ldind_I4 = new OpCode (
479 Code.Ldind_I4, FlowControl.Next,
480 OpCodeType.Primitive, OperandType.InlineNone,
481 StackBehaviour.Popi, StackBehaviour.Pushi);
483 public static readonly OpCode Ldind_U4 = new OpCode (
485 Code.Ldind_U4, FlowControl.Next,
486 OpCodeType.Primitive, OperandType.InlineNone,
487 StackBehaviour.Popi, StackBehaviour.Pushi);
489 public static readonly OpCode Ldind_I8 = new OpCode (
491 Code.Ldind_I8, FlowControl.Next,
492 OpCodeType.Primitive, OperandType.InlineNone,
493 StackBehaviour.Popi, StackBehaviour.Pushi8);
495 public static readonly OpCode Ldind_I = new OpCode (
497 Code.Ldind_I, FlowControl.Next,
498 OpCodeType.Primitive, OperandType.InlineNone,
499 StackBehaviour.Popi, StackBehaviour.Pushi);
501 public static readonly OpCode Ldind_R4 = new OpCode (
503 Code.Ldind_R4, FlowControl.Next,
504 OpCodeType.Primitive, OperandType.InlineNone,
505 StackBehaviour.Popi, StackBehaviour.Pushr4);
507 public static readonly OpCode Ldind_R8 = new OpCode (
509 Code.Ldind_R8, FlowControl.Next,
510 OpCodeType.Primitive, OperandType.InlineNone,
511 StackBehaviour.Popi, StackBehaviour.Pushr8);
513 public static readonly OpCode Ldind_Ref = new OpCode (
515 Code.Ldind_Ref, FlowControl.Next,
516 OpCodeType.Primitive, OperandType.InlineNone,
517 StackBehaviour.Popi, StackBehaviour.Pushref);
519 public static readonly OpCode Stind_Ref = new OpCode (
521 Code.Stind_Ref, FlowControl.Next,
522 OpCodeType.Primitive, OperandType.InlineNone,
523 StackBehaviour.Popi_popi, StackBehaviour.Push0);
525 public static readonly OpCode Stind_I1 = new OpCode (
527 Code.Stind_I1, FlowControl.Next,
528 OpCodeType.Primitive, OperandType.InlineNone,
529 StackBehaviour.Popi_popi, StackBehaviour.Push0);
531 public static readonly OpCode Stind_I2 = new OpCode (
533 Code.Stind_I2, FlowControl.Next,
534 OpCodeType.Primitive, OperandType.InlineNone,
535 StackBehaviour.Popi_popi, StackBehaviour.Push0);
537 public static readonly OpCode Stind_I4 = new OpCode (
539 Code.Stind_I4, FlowControl.Next,
540 OpCodeType.Primitive, OperandType.InlineNone,
541 StackBehaviour.Popi_popi, StackBehaviour.Push0);
543 public static readonly OpCode Stind_I8 = new OpCode (
545 Code.Stind_I8, FlowControl.Next,
546 OpCodeType.Primitive, OperandType.InlineNone,
547 StackBehaviour.Popi_popi8, StackBehaviour.Push0);
549 public static readonly OpCode Stind_R4 = new OpCode (
551 Code.Stind_R4, FlowControl.Next,
552 OpCodeType.Primitive, OperandType.InlineNone,
553 StackBehaviour.Popi_popr4, StackBehaviour.Push0);
555 public static readonly OpCode Stind_R8 = new OpCode (
557 Code.Stind_R8, FlowControl.Next,
558 OpCodeType.Primitive, OperandType.InlineNone,
559 StackBehaviour.Popi_popr8, StackBehaviour.Push0);
561 public static readonly OpCode Add = new OpCode (
563 Code.Add, FlowControl.Next,
564 OpCodeType.Primitive, OperandType.InlineNone,
565 StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
567 public static readonly OpCode Sub = new OpCode (
569 Code.Sub, FlowControl.Next,
570 OpCodeType.Primitive, OperandType.InlineNone,
571 StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
573 public static readonly OpCode Mul = new OpCode (
575 Code.Mul, FlowControl.Next,
576 OpCodeType.Primitive, OperandType.InlineNone,
577 StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
579 public static readonly OpCode Div = new OpCode (
581 Code.Div, FlowControl.Next,
582 OpCodeType.Primitive, OperandType.InlineNone,
583 StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
585 public static readonly OpCode Div_Un = new OpCode (
587 Code.Div_Un, FlowControl.Next,
588 OpCodeType.Primitive, OperandType.InlineNone,
589 StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
591 public static readonly OpCode Rem = new OpCode (
593 Code.Rem, FlowControl.Next,
594 OpCodeType.Primitive, OperandType.InlineNone,
595 StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
597 public static readonly OpCode Rem_Un = new OpCode (
599 Code.Rem_Un, FlowControl.Next,
600 OpCodeType.Primitive, OperandType.InlineNone,
601 StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
603 public static readonly OpCode And = new OpCode (
605 Code.And, FlowControl.Next,
606 OpCodeType.Primitive, OperandType.InlineNone,
607 StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
609 public static readonly OpCode Or = new OpCode (
611 Code.Or, FlowControl.Next,
612 OpCodeType.Primitive, OperandType.InlineNone,
613 StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
615 public static readonly OpCode Xor = new OpCode (
617 Code.Xor, FlowControl.Next,
618 OpCodeType.Primitive, OperandType.InlineNone,
619 StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
621 public static readonly OpCode Shl = new OpCode (
623 Code.Shl, FlowControl.Next,
624 OpCodeType.Primitive, OperandType.InlineNone,
625 StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
627 public static readonly OpCode Shr = new OpCode (
629 Code.Shr, FlowControl.Next,
630 OpCodeType.Primitive, OperandType.InlineNone,
631 StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
633 public static readonly OpCode Shr_Un = new OpCode (
635 Code.Shr_Un, FlowControl.Next,
636 OpCodeType.Primitive, OperandType.InlineNone,
637 StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
639 public static readonly OpCode Neg = new OpCode (
641 Code.Neg, FlowControl.Next,
642 OpCodeType.Primitive, OperandType.InlineNone,
643 StackBehaviour.Pop1, StackBehaviour.Push1);
645 public static readonly OpCode Not = new OpCode (
647 Code.Not, FlowControl.Next,
648 OpCodeType.Primitive, OperandType.InlineNone,
649 StackBehaviour.Pop1, StackBehaviour.Push1);
651 public static readonly OpCode Conv_I1 = new OpCode (
653 Code.Conv_I1, FlowControl.Next,
654 OpCodeType.Primitive, OperandType.InlineNone,
655 StackBehaviour.Pop1, StackBehaviour.Pushi);
657 public static readonly OpCode Conv_I2 = new OpCode (
659 Code.Conv_I2, FlowControl.Next,
660 OpCodeType.Primitive, OperandType.InlineNone,
661 StackBehaviour.Pop1, StackBehaviour.Pushi);
663 public static readonly OpCode Conv_I4 = new OpCode (
665 Code.Conv_I4, FlowControl.Next,
666 OpCodeType.Primitive, OperandType.InlineNone,
667 StackBehaviour.Pop1, StackBehaviour.Pushi);
669 public static readonly OpCode Conv_I8 = new OpCode (
671 Code.Conv_I8, FlowControl.Next,
672 OpCodeType.Primitive, OperandType.InlineNone,
673 StackBehaviour.Pop1, StackBehaviour.Pushi8);
675 public static readonly OpCode Conv_R4 = new OpCode (
677 Code.Conv_R4, FlowControl.Next,
678 OpCodeType.Primitive, OperandType.InlineNone,
679 StackBehaviour.Pop1, StackBehaviour.Pushr4);
681 public static readonly OpCode Conv_R8 = new OpCode (
683 Code.Conv_R8, FlowControl.Next,
684 OpCodeType.Primitive, OperandType.InlineNone,
685 StackBehaviour.Pop1, StackBehaviour.Pushr8);
687 public static readonly OpCode Conv_U4 = new OpCode (
689 Code.Conv_U4, FlowControl.Next,
690 OpCodeType.Primitive, OperandType.InlineNone,
691 StackBehaviour.Pop1, StackBehaviour.Pushi);
693 public static readonly OpCode Conv_U8 = new OpCode (
695 Code.Conv_U8, FlowControl.Next,
696 OpCodeType.Primitive, OperandType.InlineNone,
697 StackBehaviour.Pop1, StackBehaviour.Pushi8);
699 public static readonly OpCode Callvirt = new OpCode (
701 Code.Callvirt, FlowControl.Call,
702 OpCodeType.Objmodel, OperandType.InlineMethod,
703 StackBehaviour.Varpop, StackBehaviour.Varpush);
705 public static readonly OpCode Cpobj = new OpCode (
707 Code.Cpobj, FlowControl.Next,
708 OpCodeType.Objmodel, OperandType.InlineType,
709 StackBehaviour.Popi_popi, StackBehaviour.Push0);
711 public static readonly OpCode Ldobj = new OpCode (
713 Code.Ldobj, FlowControl.Next,
714 OpCodeType.Objmodel, OperandType.InlineType,
715 StackBehaviour.Popi, StackBehaviour.Push1);
717 public static readonly OpCode Ldstr = new OpCode (
719 Code.Ldstr, FlowControl.Next,
720 OpCodeType.Objmodel, OperandType.InlineString,
721 StackBehaviour.Pop0, StackBehaviour.Pushref);
723 public static readonly OpCode Newobj = new OpCode (
725 Code.Newobj, FlowControl.Call,
726 OpCodeType.Objmodel, OperandType.InlineMethod,
727 StackBehaviour.Varpop, StackBehaviour.Pushref);
729 public static readonly OpCode Castclass = new OpCode (
731 Code.Castclass, FlowControl.Next,
732 OpCodeType.Objmodel, OperandType.InlineType,
733 StackBehaviour.Popref, StackBehaviour.Pushref);
735 public static readonly OpCode Isinst = new OpCode (
737 Code.Isinst, FlowControl.Next,
738 OpCodeType.Objmodel, OperandType.InlineType,
739 StackBehaviour.Popref, StackBehaviour.Pushi);
741 public static readonly OpCode Conv_R_Un = new OpCode (
743 Code.Conv_R_Un, FlowControl.Next,
744 OpCodeType.Primitive, OperandType.InlineNone,
745 StackBehaviour.Pop1, StackBehaviour.Pushr8);
747 public static readonly OpCode Unbox = new OpCode (
749 Code.Unbox, FlowControl.Next,
750 OpCodeType.Primitive, OperandType.InlineType,
751 StackBehaviour.Popref, StackBehaviour.Pushi);
753 public static readonly OpCode Throw = new OpCode (
755 Code.Throw, FlowControl.Throw,
756 OpCodeType.Objmodel, OperandType.InlineNone,
757 StackBehaviour.Popref, StackBehaviour.Push0);
759 public static readonly OpCode Ldfld = new OpCode (
761 Code.Ldfld, FlowControl.Next,
762 OpCodeType.Objmodel, OperandType.InlineField,
763 StackBehaviour.Popref, StackBehaviour.Push1);
765 public static readonly OpCode Ldflda = new OpCode (
767 Code.Ldflda, FlowControl.Next,
768 OpCodeType.Objmodel, OperandType.InlineField,
769 StackBehaviour.Popref, StackBehaviour.Pushi);
771 public static readonly OpCode Stfld = new OpCode (
773 Code.Stfld, FlowControl.Next,
774 OpCodeType.Objmodel, OperandType.InlineField,
775 StackBehaviour.Popref_pop1, StackBehaviour.Push0);
777 public static readonly OpCode Ldsfld = new OpCode (
779 Code.Ldsfld, FlowControl.Next,
780 OpCodeType.Objmodel, OperandType.InlineField,
781 StackBehaviour.Pop0, StackBehaviour.Push1);
783 public static readonly OpCode Ldsflda = new OpCode (
785 Code.Ldsflda, FlowControl.Next,
786 OpCodeType.Objmodel, OperandType.InlineField,
787 StackBehaviour.Pop0, StackBehaviour.Pushi);
789 public static readonly OpCode Stsfld = new OpCode (
791 Code.Stsfld, FlowControl.Next,
792 OpCodeType.Objmodel, OperandType.InlineField,
793 StackBehaviour.Pop1, StackBehaviour.Push0);
795 public static readonly OpCode Stobj = new OpCode (
797 Code.Stobj, FlowControl.Next,
798 OpCodeType.Objmodel, OperandType.InlineType,
799 StackBehaviour.Popi_pop1, StackBehaviour.Push0);
801 public static readonly OpCode Conv_Ovf_I1_Un = new OpCode (
803 Code.Conv_Ovf_I1_Un, FlowControl.Next,
804 OpCodeType.Primitive, OperandType.InlineNone,
805 StackBehaviour.Pop1, StackBehaviour.Pushi);
807 public static readonly OpCode Conv_Ovf_I2_Un = new OpCode (
809 Code.Conv_Ovf_I2_Un, FlowControl.Next,
810 OpCodeType.Primitive, OperandType.InlineNone,
811 StackBehaviour.Pop1, StackBehaviour.Pushi);
813 public static readonly OpCode Conv_Ovf_I4_Un = new OpCode (
815 Code.Conv_Ovf_I4_Un, FlowControl.Next,
816 OpCodeType.Primitive, OperandType.InlineNone,
817 StackBehaviour.Pop1, StackBehaviour.Pushi);
819 public static readonly OpCode Conv_Ovf_I8_Un = new OpCode (
821 Code.Conv_Ovf_I8_Un, FlowControl.Next,
822 OpCodeType.Primitive, OperandType.InlineNone,
823 StackBehaviour.Pop1, StackBehaviour.Pushi8);
825 public static readonly OpCode Conv_Ovf_U1_Un = new OpCode (
827 Code.Conv_Ovf_U1_Un, FlowControl.Next,
828 OpCodeType.Primitive, OperandType.InlineNone,
829 StackBehaviour.Pop1, StackBehaviour.Pushi);
831 public static readonly OpCode Conv_Ovf_U2_Un = new OpCode (
833 Code.Conv_Ovf_U2_Un, FlowControl.Next,
834 OpCodeType.Primitive, OperandType.InlineNone,
835 StackBehaviour.Pop1, StackBehaviour.Pushi);
837 public static readonly OpCode Conv_Ovf_U4_Un = new OpCode (
839 Code.Conv_Ovf_U4_Un, FlowControl.Next,
840 OpCodeType.Primitive, OperandType.InlineNone,
841 StackBehaviour.Pop1, StackBehaviour.Pushi);
843 public static readonly OpCode Conv_Ovf_U8_Un = new OpCode (
845 Code.Conv_Ovf_U8_Un, FlowControl.Next,
846 OpCodeType.Primitive, OperandType.InlineNone,
847 StackBehaviour.Pop1, StackBehaviour.Pushi8);
849 public static readonly OpCode Conv_Ovf_I_Un = new OpCode (
851 Code.Conv_Ovf_I_Un, FlowControl.Next,
852 OpCodeType.Primitive, OperandType.InlineNone,
853 StackBehaviour.Pop1, StackBehaviour.Pushi);
855 public static readonly OpCode Conv_Ovf_U_Un = new OpCode (
857 Code.Conv_Ovf_U_Un, FlowControl.Next,
858 OpCodeType.Primitive, OperandType.InlineNone,
859 StackBehaviour.Pop1, StackBehaviour.Pushi);
861 public static readonly OpCode Box = new OpCode (
863 Code.Box, FlowControl.Next,
864 OpCodeType.Primitive, OperandType.InlineType,
865 StackBehaviour.Pop1, StackBehaviour.Pushref);
867 public static readonly OpCode Newarr = new OpCode (
869 Code.Newarr, FlowControl.Next,
870 OpCodeType.Objmodel, OperandType.InlineType,
871 StackBehaviour.Popi, StackBehaviour.Pushref);
873 public static readonly OpCode Ldlen = new OpCode (
875 Code.Ldlen, FlowControl.Next,
876 OpCodeType.Objmodel, OperandType.InlineNone,
877 StackBehaviour.Popref, StackBehaviour.Pushi);
879 public static readonly OpCode Ldelema = new OpCode (
881 Code.Ldelema, FlowControl.Next,
882 OpCodeType.Objmodel, OperandType.InlineType,
883 StackBehaviour.Popref_popi, StackBehaviour.Pushi);
885 public static readonly OpCode Ldelem_I1 = new OpCode (
887 Code.Ldelem_I1, FlowControl.Next,
888 OpCodeType.Objmodel, OperandType.InlineNone,
889 StackBehaviour.Popref_popi, StackBehaviour.Pushi);
891 public static readonly OpCode Ldelem_U1 = new OpCode (
893 Code.Ldelem_U1, FlowControl.Next,
894 OpCodeType.Objmodel, OperandType.InlineNone,
895 StackBehaviour.Popref_popi, StackBehaviour.Pushi);
897 public static readonly OpCode Ldelem_I2 = new OpCode (
899 Code.Ldelem_I2, FlowControl.Next,
900 OpCodeType.Objmodel, OperandType.InlineNone,
901 StackBehaviour.Popref_popi, StackBehaviour.Pushi);
903 public static readonly OpCode Ldelem_U2 = new OpCode (
905 Code.Ldelem_U2, FlowControl.Next,
906 OpCodeType.Objmodel, OperandType.InlineNone,
907 StackBehaviour.Popref_popi, StackBehaviour.Pushi);
909 public static readonly OpCode Ldelem_I4 = new OpCode (
911 Code.Ldelem_I4, FlowControl.Next,
912 OpCodeType.Objmodel, OperandType.InlineNone,
913 StackBehaviour.Popref_popi, StackBehaviour.Pushi);
915 public static readonly OpCode Ldelem_U4 = new OpCode (
917 Code.Ldelem_U4, FlowControl.Next,
918 OpCodeType.Objmodel, OperandType.InlineNone,
919 StackBehaviour.Popref_popi, StackBehaviour.Pushi);
921 public static readonly OpCode Ldelem_I8 = new OpCode (
923 Code.Ldelem_I8, FlowControl.Next,
924 OpCodeType.Objmodel, OperandType.InlineNone,
925 StackBehaviour.Popref_popi, StackBehaviour.Pushi8);
927 public static readonly OpCode Ldelem_I = new OpCode (
929 Code.Ldelem_I, FlowControl.Next,
930 OpCodeType.Objmodel, OperandType.InlineNone,
931 StackBehaviour.Popref_popi, StackBehaviour.Pushi);
933 public static readonly OpCode Ldelem_R4 = new OpCode (
935 Code.Ldelem_R4, FlowControl.Next,
936 OpCodeType.Objmodel, OperandType.InlineNone,
937 StackBehaviour.Popref_popi, StackBehaviour.Pushr4);
939 public static readonly OpCode Ldelem_R8 = new OpCode (
941 Code.Ldelem_R8, FlowControl.Next,
942 OpCodeType.Objmodel, OperandType.InlineNone,
943 StackBehaviour.Popref_popi, StackBehaviour.Pushr8);
945 public static readonly OpCode Ldelem_Ref = new OpCode (
947 Code.Ldelem_Ref, FlowControl.Next,
948 OpCodeType.Objmodel, OperandType.InlineNone,
949 StackBehaviour.Popref_popi, StackBehaviour.Pushref);
951 public static readonly OpCode Stelem_I = new OpCode (
953 Code.Stelem_I, FlowControl.Next,
954 OpCodeType.Objmodel, OperandType.InlineNone,
955 StackBehaviour.Popref_popi_popi, StackBehaviour.Push0);
957 public static readonly OpCode Stelem_I1 = new OpCode (
959 Code.Stelem_I1, FlowControl.Next,
960 OpCodeType.Objmodel, OperandType.InlineNone,
961 StackBehaviour.Popref_popi_popi, StackBehaviour.Push0);
963 public static readonly OpCode Stelem_I2 = new OpCode (
965 Code.Stelem_I2, FlowControl.Next,
966 OpCodeType.Objmodel, OperandType.InlineNone,
967 StackBehaviour.Popref_popi_popi, StackBehaviour.Push0);
969 public static readonly OpCode Stelem_I4 = new OpCode (
971 Code.Stelem_I4, FlowControl.Next,
972 OpCodeType.Objmodel, OperandType.InlineNone,
973 StackBehaviour.Popref_popi_popi, StackBehaviour.Push0);
975 public static readonly OpCode Stelem_I8 = new OpCode (
977 Code.Stelem_I8, FlowControl.Next,
978 OpCodeType.Objmodel, OperandType.InlineNone,
979 StackBehaviour.Popref_popi_popi8, StackBehaviour.Push0);
981 public static readonly OpCode Stelem_R4 = new OpCode (
983 Code.Stelem_R4, FlowControl.Next,
984 OpCodeType.Objmodel, OperandType.InlineNone,
985 StackBehaviour.Popref_popi_popr4, StackBehaviour.Push0);
987 public static readonly OpCode Stelem_R8 = new OpCode (
989 Code.Stelem_R8, FlowControl.Next,
990 OpCodeType.Objmodel, OperandType.InlineNone,
991 StackBehaviour.Popref_popi_popr8, StackBehaviour.Push0);
993 public static readonly OpCode Stelem_Ref = new OpCode (
995 Code.Stelem_Ref, FlowControl.Next,
996 OpCodeType.Objmodel, OperandType.InlineNone,
997 StackBehaviour.Popref_popi_popref, StackBehaviour.Push0);
999 public static readonly OpCode Ldelem_Any = new OpCode (
1001 Code.Ldelem_Any, FlowControl.Next,
1002 OpCodeType.Objmodel, OperandType.InlineType,
1003 StackBehaviour.Popref_popi, StackBehaviour.Push1);
1005 public static readonly OpCode Stelem_Any = new OpCode (
1007 Code.Stelem_Any, FlowControl.Next,
1008 OpCodeType.Objmodel, OperandType.InlineType,
1009 StackBehaviour.Popref_popi_popref, StackBehaviour.Push0);
1011 public static readonly OpCode Unbox_Any = new OpCode (
1013 Code.Unbox_Any, FlowControl.Next,
1014 OpCodeType.Objmodel, OperandType.InlineType,
1015 StackBehaviour.Popref, StackBehaviour.Push1);
1017 public static readonly OpCode Conv_Ovf_I1 = new OpCode (
1019 Code.Conv_Ovf_I1, FlowControl.Next,
1020 OpCodeType.Primitive, OperandType.InlineNone,
1021 StackBehaviour.Pop1, StackBehaviour.Pushi);
1023 public static readonly OpCode Conv_Ovf_U1 = new OpCode (
1025 Code.Conv_Ovf_U1, FlowControl.Next,
1026 OpCodeType.Primitive, OperandType.InlineNone,
1027 StackBehaviour.Pop1, StackBehaviour.Pushi);
1029 public static readonly OpCode Conv_Ovf_I2 = new OpCode (
1031 Code.Conv_Ovf_I2, FlowControl.Next,
1032 OpCodeType.Primitive, OperandType.InlineNone,
1033 StackBehaviour.Pop1, StackBehaviour.Pushi);
1035 public static readonly OpCode Conv_Ovf_U2 = new OpCode (
1037 Code.Conv_Ovf_U2, FlowControl.Next,
1038 OpCodeType.Primitive, OperandType.InlineNone,
1039 StackBehaviour.Pop1, StackBehaviour.Pushi);
1041 public static readonly OpCode Conv_Ovf_I4 = new OpCode (
1043 Code.Conv_Ovf_I4, FlowControl.Next,
1044 OpCodeType.Primitive, OperandType.InlineNone,
1045 StackBehaviour.Pop1, StackBehaviour.Pushi);
1047 public static readonly OpCode Conv_Ovf_U4 = new OpCode (
1049 Code.Conv_Ovf_U4, FlowControl.Next,
1050 OpCodeType.Primitive, OperandType.InlineNone,
1051 StackBehaviour.Pop1, StackBehaviour.Pushi);
1053 public static readonly OpCode Conv_Ovf_I8 = new OpCode (
1055 Code.Conv_Ovf_I8, FlowControl.Next,
1056 OpCodeType.Primitive, OperandType.InlineNone,
1057 StackBehaviour.Pop1, StackBehaviour.Pushi8);
1059 public static readonly OpCode Conv_Ovf_U8 = new OpCode (
1061 Code.Conv_Ovf_U8, FlowControl.Next,
1062 OpCodeType.Primitive, OperandType.InlineNone,
1063 StackBehaviour.Pop1, StackBehaviour.Pushi8);
1065 public static readonly OpCode Refanyval = new OpCode (
1067 Code.Refanyval, FlowControl.Next,
1068 OpCodeType.Primitive, OperandType.InlineType,
1069 StackBehaviour.Pop1, StackBehaviour.Pushi);
1071 public static readonly OpCode Ckfinite = new OpCode (
1073 Code.Ckfinite, FlowControl.Next,
1074 OpCodeType.Primitive, OperandType.InlineNone,
1075 StackBehaviour.Pop1, StackBehaviour.Pushr8);
1077 public static readonly OpCode Mkrefany = new OpCode (
1079 Code.Mkrefany, FlowControl.Next,
1080 OpCodeType.Primitive, OperandType.InlineType,
1081 StackBehaviour.Popi, StackBehaviour.Push1);
1083 public static readonly OpCode Ldtoken = new OpCode (
1085 Code.Ldtoken, FlowControl.Next,
1086 OpCodeType.Primitive, OperandType.InlineTok,
1087 StackBehaviour.Pop0, StackBehaviour.Pushi);
1089 public static readonly OpCode Conv_U2 = new OpCode (
1091 Code.Conv_U2, FlowControl.Next,
1092 OpCodeType.Primitive, OperandType.InlineNone,
1093 StackBehaviour.Pop1, StackBehaviour.Pushi);
1095 public static readonly OpCode Conv_U1 = new OpCode (
1097 Code.Conv_U1, FlowControl.Next,
1098 OpCodeType.Primitive, OperandType.InlineNone,
1099 StackBehaviour.Pop1, StackBehaviour.Pushi);
1101 public static readonly OpCode Conv_I = new OpCode (
1103 Code.Conv_I, FlowControl.Next,
1104 OpCodeType.Primitive, OperandType.InlineNone,
1105 StackBehaviour.Pop1, StackBehaviour.Pushi);
1107 public static readonly OpCode Conv_Ovf_I = new OpCode (
1109 Code.Conv_Ovf_I, FlowControl.Next,
1110 OpCodeType.Primitive, OperandType.InlineNone,
1111 StackBehaviour.Pop1, StackBehaviour.Pushi);
1113 public static readonly OpCode Conv_Ovf_U = new OpCode (
1115 Code.Conv_Ovf_U, FlowControl.Next,
1116 OpCodeType.Primitive, OperandType.InlineNone,
1117 StackBehaviour.Pop1, StackBehaviour.Pushi);
1119 public static readonly OpCode Add_Ovf = new OpCode (
1121 Code.Add_Ovf, FlowControl.Next,
1122 OpCodeType.Primitive, OperandType.InlineNone,
1123 StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
1125 public static readonly OpCode Add_Ovf_Un = new OpCode (
1127 Code.Add_Ovf_Un, FlowControl.Next,
1128 OpCodeType.Primitive, OperandType.InlineNone,
1129 StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
1131 public static readonly OpCode Mul_Ovf = new OpCode (
1133 Code.Mul_Ovf, FlowControl.Next,
1134 OpCodeType.Primitive, OperandType.InlineNone,
1135 StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
1137 public static readonly OpCode Mul_Ovf_Un = new OpCode (
1139 Code.Mul_Ovf_Un, FlowControl.Next,
1140 OpCodeType.Primitive, OperandType.InlineNone,
1141 StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
1143 public static readonly OpCode Sub_Ovf = new OpCode (
1145 Code.Sub_Ovf, FlowControl.Next,
1146 OpCodeType.Primitive, OperandType.InlineNone,
1147 StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
1149 public static readonly OpCode Sub_Ovf_Un = new OpCode (
1151 Code.Sub_Ovf_Un, FlowControl.Next,
1152 OpCodeType.Primitive, OperandType.InlineNone,
1153 StackBehaviour.Pop1_pop1, StackBehaviour.Push1);
1155 public static readonly OpCode Endfinally = new OpCode (
1157 Code.Endfinally, FlowControl.Return,
1158 OpCodeType.Primitive, OperandType.InlineNone,
1159 StackBehaviour.Pop0, StackBehaviour.Push0);
1161 public static readonly OpCode Leave = new OpCode (
1163 Code.Leave, FlowControl.Branch,
1164 OpCodeType.Primitive, OperandType.InlineBrTarget,
1165 StackBehaviour.PopAll, StackBehaviour.Push0);
1167 public static readonly OpCode Leave_S = new OpCode (
1169 Code.Leave_S, FlowControl.Branch,
1170 OpCodeType.Macro, OperandType.ShortInlineBrTarget,
1171 StackBehaviour.PopAll, StackBehaviour.Push0);
1173 public static readonly OpCode Stind_I = new OpCode (
1175 Code.Stind_I, FlowControl.Next,
1176 OpCodeType.Primitive, OperandType.InlineNone,
1177 StackBehaviour.Popi_popi, StackBehaviour.Push0);
1179 public static readonly OpCode Conv_U = new OpCode (
1181 Code.Conv_U, FlowControl.Next,
1182 OpCodeType.Primitive, OperandType.InlineNone,
1183 StackBehaviour.Pop1, StackBehaviour.Pushi);
1185 public static readonly OpCode Arglist = new OpCode (
1187 Code.Arglist, FlowControl.Next,
1188 OpCodeType.Primitive, OperandType.InlineNone,
1189 StackBehaviour.Pop0, StackBehaviour.Pushi);
1191 public static readonly OpCode Ceq = new OpCode (
1193 Code.Ceq, FlowControl.Next,
1194 OpCodeType.Primitive, OperandType.InlineNone,
1195 StackBehaviour.Pop1_pop1, StackBehaviour.Pushi);
1197 public static readonly OpCode Cgt = new OpCode (
1199 Code.Cgt, FlowControl.Next,
1200 OpCodeType.Primitive, OperandType.InlineNone,
1201 StackBehaviour.Pop1_pop1, StackBehaviour.Pushi);
1203 public static readonly OpCode Cgt_Un = new OpCode (
1205 Code.Cgt_Un, FlowControl.Next,
1206 OpCodeType.Primitive, OperandType.InlineNone,
1207 StackBehaviour.Pop1_pop1, StackBehaviour.Pushi);
1209 public static readonly OpCode Clt = new OpCode (
1211 Code.Clt, FlowControl.Next,
1212 OpCodeType.Primitive, OperandType.InlineNone,
1213 StackBehaviour.Pop1_pop1, StackBehaviour.Pushi);
1215 public static readonly OpCode Clt_Un = new OpCode (
1217 Code.Clt_Un, FlowControl.Next,
1218 OpCodeType.Primitive, OperandType.InlineNone,
1219 StackBehaviour.Pop1_pop1, StackBehaviour.Pushi);
1221 public static readonly OpCode Ldftn = new OpCode (
1223 Code.Ldftn, FlowControl.Next,
1224 OpCodeType.Primitive, OperandType.InlineMethod,
1225 StackBehaviour.Pop0, StackBehaviour.Pushi);
1227 public static readonly OpCode Ldvirtftn = new OpCode (
1229 Code.Ldvirtftn, FlowControl.Next,
1230 OpCodeType.Primitive, OperandType.InlineMethod,
1231 StackBehaviour.Popref, StackBehaviour.Pushi);
1233 public static readonly OpCode Ldarg = new OpCode (
1235 Code.Ldarg, FlowControl.Next,
1236 OpCodeType.Primitive, OperandType.InlineParam,
1237 StackBehaviour.Pop0, StackBehaviour.Push1);
1239 public static readonly OpCode Ldarga = new OpCode (
1241 Code.Ldarga, FlowControl.Next,
1242 OpCodeType.Primitive, OperandType.InlineParam,
1243 StackBehaviour.Pop0, StackBehaviour.Pushi);
1245 public static readonly OpCode Starg = new OpCode (
1247 Code.Starg, FlowControl.Next,
1248 OpCodeType.Primitive, OperandType.InlineParam,
1249 StackBehaviour.Pop1, StackBehaviour.Push0);
1251 public static readonly OpCode Ldloc = new OpCode (
1253 Code.Ldloc, FlowControl.Next,
1254 OpCodeType.Primitive, OperandType.InlineVar,
1255 StackBehaviour.Pop0, StackBehaviour.Push1);
1257 public static readonly OpCode Ldloca = new OpCode (
1259 Code.Ldloca, FlowControl.Next,
1260 OpCodeType.Primitive, OperandType.InlineVar,
1261 StackBehaviour.Pop0, StackBehaviour.Pushi);
1263 public static readonly OpCode Stloc = new OpCode (
1265 Code.Stloc, FlowControl.Next,
1266 OpCodeType.Primitive, OperandType.InlineVar,
1267 StackBehaviour.Pop1, StackBehaviour.Push0);
1269 public static readonly OpCode Localloc = new OpCode (
1271 Code.Localloc, FlowControl.Next,
1272 OpCodeType.Primitive, OperandType.InlineNone,
1273 StackBehaviour.Popi, StackBehaviour.Pushi);
1275 public static readonly OpCode Endfilter = new OpCode (
1277 Code.Endfilter, FlowControl.Return,
1278 OpCodeType.Primitive, OperandType.InlineNone,
1279 StackBehaviour.Popi, StackBehaviour.Push0);
1281 public static readonly OpCode Unaligned = new OpCode (
1283 Code.Unaligned, FlowControl.Meta,
1284 OpCodeType.Prefix, OperandType.ShortInlineI,
1285 StackBehaviour.Pop0, StackBehaviour.Push0);
1287 public static readonly OpCode Volatile = new OpCode (
1289 Code.Volatile, FlowControl.Meta,
1290 OpCodeType.Prefix, OperandType.InlineNone,
1291 StackBehaviour.Pop0, StackBehaviour.Push0);
1293 public static readonly OpCode Tail = new OpCode (
1295 Code.Tail, FlowControl.Meta,
1296 OpCodeType.Prefix, OperandType.InlineNone,
1297 StackBehaviour.Pop0, StackBehaviour.Push0);
1299 public static readonly OpCode Initobj = new OpCode (
1301 Code.Initobj, FlowControl.Next,
1302 OpCodeType.Objmodel, OperandType.InlineType,
1303 StackBehaviour.Popi, StackBehaviour.Push0);
1305 public static readonly OpCode Constrained = new OpCode (
1307 Code.Constrained, FlowControl.Next,
1308 OpCodeType.Prefix, OperandType.InlineType,
1309 StackBehaviour.Pop0, StackBehaviour.Push0);
1311 public static readonly OpCode Cpblk = new OpCode (
1313 Code.Cpblk, FlowControl.Next,
1314 OpCodeType.Primitive, OperandType.InlineNone,
1315 StackBehaviour.Popi_popi_popi, StackBehaviour.Push0);
1317 public static readonly OpCode Initblk = new OpCode (
1319 Code.Initblk, FlowControl.Next,
1320 OpCodeType.Primitive, OperandType.InlineNone,
1321 StackBehaviour.Popi_popi_popi, StackBehaviour.Push0);
1323 public static readonly OpCode No = new OpCode (
1325 Code.No, FlowControl.Next,
1326 OpCodeType.Prefix, OperandType.ShortInlineI,
1327 StackBehaviour.Pop0, StackBehaviour.Push0);
1329 public static readonly OpCode Rethrow = new OpCode (
1331 Code.Rethrow, FlowControl.Throw,
1332 OpCodeType.Objmodel, OperandType.InlineNone,
1333 StackBehaviour.Pop0, StackBehaviour.Push0);
1335 public static readonly OpCode Sizeof = new OpCode (
1337 Code.Sizeof, FlowControl.Next,
1338 OpCodeType.Primitive, OperandType.InlineType,
1339 StackBehaviour.Pop0, StackBehaviour.Pushi);
1341 public static readonly OpCode Refanytype = new OpCode (
1343 Code.Refanytype, FlowControl.Next,
1344 OpCodeType.Primitive, OperandType.InlineNone,
1345 StackBehaviour.Pop1, StackBehaviour.Pushi);
1347 public static readonly OpCode Readonly = new OpCode (
1349 Code.Readonly, FlowControl.Next,
1350 OpCodeType.Prefix, OperandType.InlineNone,
1351 StackBehaviour.Pop0, StackBehaviour.Push0);
1357 public static OpCode GetOpCode (Code code)
1360 case Code.Nop : return OpCodes.Nop;
1361 case Code.Break : return OpCodes.Break;
1362 case Code.Ldarg_0 : return OpCodes.Ldarg_0;
1363 case Code.Ldarg_1 : return OpCodes.Ldarg_1;
1364 case Code.Ldarg_2 : return OpCodes.Ldarg_2;
1365 case Code.Ldarg_3 : return OpCodes.Ldarg_3;
1366 case Code.Ldloc_0 : return OpCodes.Ldloc_0;
1367 case Code.Ldloc_1 : return OpCodes.Ldloc_1;
1368 case Code.Ldloc_2 : return OpCodes.Ldloc_2;
1369 case Code.Ldloc_3 : return OpCodes.Ldloc_3;
1370 case Code.Stloc_0 : return OpCodes.Stloc_0;
1371 case Code.Stloc_1 : return OpCodes.Stloc_1;
1372 case Code.Stloc_2 : return OpCodes.Stloc_2;
1373 case Code.Stloc_3 : return OpCodes.Stloc_3;
1374 case Code.Ldarg_S : return OpCodes.Ldarg_S;
1375 case Code.Ldarga_S : return OpCodes.Ldarga_S;
1376 case Code.Starg_S : return OpCodes.Starg_S;
1377 case Code.Ldloc_S : return OpCodes.Ldloc_S;
1378 case Code.Ldloca_S : return OpCodes.Ldloca_S;
1379 case Code.Stloc_S : return OpCodes.Stloc_S;
1380 case Code.Ldnull : return OpCodes.Ldnull;
1381 case Code.Ldc_I4_M1 : return OpCodes.Ldc_I4_M1;
1382 case Code.Ldc_I4_0 : return OpCodes.Ldc_I4_0;
1383 case Code.Ldc_I4_1 : return OpCodes.Ldc_I4_1;
1384 case Code.Ldc_I4_2 : return OpCodes.Ldc_I4_2;
1385 case Code.Ldc_I4_3 : return OpCodes.Ldc_I4_3;
1386 case Code.Ldc_I4_4 : return OpCodes.Ldc_I4_4;
1387 case Code.Ldc_I4_5 : return OpCodes.Ldc_I4_5;
1388 case Code.Ldc_I4_6 : return OpCodes.Ldc_I4_6;
1389 case Code.Ldc_I4_7 : return OpCodes.Ldc_I4_7;
1390 case Code.Ldc_I4_8 : return OpCodes.Ldc_I4_8;
1391 case Code.Ldc_I4_S : return OpCodes.Ldc_I4_S;
1392 case Code.Ldc_I4 : return OpCodes.Ldc_I4;
1393 case Code.Ldc_I8 : return OpCodes.Ldc_I8;
1394 case Code.Ldc_R4 : return OpCodes.Ldc_R4;
1395 case Code.Ldc_R8 : return OpCodes.Ldc_R8;
1396 case Code.Dup : return OpCodes.Dup;
1397 case Code.Pop : return OpCodes.Pop;
1398 case Code.Jmp : return OpCodes.Jmp;
1399 case Code.Call : return OpCodes.Call;
1400 case Code.Calli : return OpCodes.Calli;
1401 case Code.Ret : return OpCodes.Ret;
1402 case Code.Br_S : return OpCodes.Br_S;
1403 case Code.Brfalse_S : return OpCodes.Brfalse_S;
1404 case Code.Brtrue_S : return OpCodes.Brtrue_S;
1405 case Code.Beq_S : return OpCodes.Beq_S;
1406 case Code.Bge_S : return OpCodes.Bge_S;
1407 case Code.Bgt_S : return OpCodes.Bgt_S;
1408 case Code.Ble_S : return OpCodes.Ble_S;
1409 case Code.Blt_S : return OpCodes.Blt_S;
1410 case Code.Bne_Un_S : return OpCodes.Bne_Un_S;
1411 case Code.Bge_Un_S : return OpCodes.Bge_Un_S;
1412 case Code.Bgt_Un_S : return OpCodes.Bgt_Un_S;
1413 case Code.Ble_Un_S : return OpCodes.Ble_Un_S;
1414 case Code.Blt_Un_S : return OpCodes.Blt_Un_S;
1415 case Code.Br : return OpCodes.Br;
1416 case Code.Brfalse : return OpCodes.Brfalse;
1417 case Code.Brtrue : return OpCodes.Brtrue;
1418 case Code.Beq : return OpCodes.Beq;
1419 case Code.Bge : return OpCodes.Bge;
1420 case Code.Bgt : return OpCodes.Bgt;
1421 case Code.Ble : return OpCodes.Ble;
1422 case Code.Blt : return OpCodes.Blt;
1423 case Code.Bne_Un : return OpCodes.Bne_Un;
1424 case Code.Bge_Un : return OpCodes.Bge_Un;
1425 case Code.Bgt_Un : return OpCodes.Bgt_Un;
1426 case Code.Ble_Un : return OpCodes.Ble_Un;
1427 case Code.Blt_Un : return OpCodes.Blt_Un;
1428 case Code.Switch : return OpCodes.Switch;
1429 case Code.Ldind_I1 : return OpCodes.Ldind_I1;
1430 case Code.Ldind_U1 : return OpCodes.Ldind_U1;
1431 case Code.Ldind_I2 : return OpCodes.Ldind_I2;
1432 case Code.Ldind_U2 : return OpCodes.Ldind_U2;
1433 case Code.Ldind_I4 : return OpCodes.Ldind_I4;
1434 case Code.Ldind_U4 : return OpCodes.Ldind_U4;
1435 case Code.Ldind_I8 : return OpCodes.Ldind_I8;
1436 case Code.Ldind_I : return OpCodes.Ldind_I;
1437 case Code.Ldind_R4 : return OpCodes.Ldind_R4;
1438 case Code.Ldind_R8 : return OpCodes.Ldind_R8;
1439 case Code.Ldind_Ref : return OpCodes.Ldind_Ref;
1440 case Code.Stind_Ref : return OpCodes.Stind_Ref;
1441 case Code.Stind_I1 : return OpCodes.Stind_I1;
1442 case Code.Stind_I2 : return OpCodes.Stind_I2;
1443 case Code.Stind_I4 : return OpCodes.Stind_I4;
1444 case Code.Stind_I8 : return OpCodes.Stind_I8;
1445 case Code.Stind_R4 : return OpCodes.Stind_R4;
1446 case Code.Stind_R8 : return OpCodes.Stind_R8;
1447 case Code.Add : return OpCodes.Add;
1448 case Code.Sub : return OpCodes.Sub;
1449 case Code.Mul : return OpCodes.Mul;
1450 case Code.Div : return OpCodes.Div;
1451 case Code.Div_Un : return OpCodes.Div_Un;
1452 case Code.Rem : return OpCodes.Rem;
1453 case Code.Rem_Un : return OpCodes.Rem_Un;
1454 case Code.And : return OpCodes.And;
1455 case Code.Or : return OpCodes.Or;
1456 case Code.Xor : return OpCodes.Xor;
1457 case Code.Shl : return OpCodes.Shl;
1458 case Code.Shr : return OpCodes.Shr;
1459 case Code.Shr_Un : return OpCodes.Shr_Un;
1460 case Code.Neg : return OpCodes.Neg;
1461 case Code.Not : return OpCodes.Not;
1462 case Code.Conv_I1 : return OpCodes.Conv_I1;
1463 case Code.Conv_I2 : return OpCodes.Conv_I2;
1464 case Code.Conv_I4 : return OpCodes.Conv_I4;
1465 case Code.Conv_I8 : return OpCodes.Conv_I8;
1466 case Code.Conv_R4 : return OpCodes.Conv_R4;
1467 case Code.Conv_R8 : return OpCodes.Conv_R8;
1468 case Code.Conv_U4 : return OpCodes.Conv_U4;
1469 case Code.Conv_U8 : return OpCodes.Conv_U8;
1470 case Code.Callvirt : return OpCodes.Callvirt;
1471 case Code.Cpobj : return OpCodes.Cpobj;
1472 case Code.Ldobj : return OpCodes.Ldobj;
1473 case Code.Ldstr : return OpCodes.Ldstr;
1474 case Code.Newobj : return OpCodes.Newobj;
1475 case Code.Castclass : return OpCodes.Castclass;
1476 case Code.Isinst : return OpCodes.Isinst;
1477 case Code.Conv_R_Un : return OpCodes.Conv_R_Un;
1478 case Code.Unbox : return OpCodes.Unbox;
1479 case Code.Throw : return OpCodes.Throw;
1480 case Code.Ldfld : return OpCodes.Ldfld;
1481 case Code.Ldflda : return OpCodes.Ldflda;
1482 case Code.Stfld : return OpCodes.Stfld;
1483 case Code.Ldsfld : return OpCodes.Ldsfld;
1484 case Code.Ldsflda : return OpCodes.Ldsflda;
1485 case Code.Stsfld : return OpCodes.Stsfld;
1486 case Code.Stobj : return OpCodes.Stobj;
1487 case Code.Conv_Ovf_I1_Un : return OpCodes.Conv_Ovf_I1_Un;
1488 case Code.Conv_Ovf_I2_Un : return OpCodes.Conv_Ovf_I2_Un;
1489 case Code.Conv_Ovf_I4_Un : return OpCodes.Conv_Ovf_I4_Un;
1490 case Code.Conv_Ovf_I8_Un : return OpCodes.Conv_Ovf_I8_Un;
1491 case Code.Conv_Ovf_U1_Un : return OpCodes.Conv_Ovf_U1_Un;
1492 case Code.Conv_Ovf_U2_Un : return OpCodes.Conv_Ovf_U2_Un;
1493 case Code.Conv_Ovf_U4_Un : return OpCodes.Conv_Ovf_U4_Un;
1494 case Code.Conv_Ovf_U8_Un : return OpCodes.Conv_Ovf_U8_Un;
1495 case Code.Conv_Ovf_I_Un : return OpCodes.Conv_Ovf_I_Un;
1496 case Code.Conv_Ovf_U_Un : return OpCodes.Conv_Ovf_U_Un;
1497 case Code.Box : return OpCodes.Box;
1498 case Code.Newarr : return OpCodes.Newarr;
1499 case Code.Ldlen : return OpCodes.Ldlen;
1500 case Code.Ldelema : return OpCodes.Ldelema;
1501 case Code.Ldelem_I1 : return OpCodes.Ldelem_I1;
1502 case Code.Ldelem_U1 : return OpCodes.Ldelem_U1;
1503 case Code.Ldelem_I2 : return OpCodes.Ldelem_I2;
1504 case Code.Ldelem_U2 : return OpCodes.Ldelem_U2;
1505 case Code.Ldelem_I4 : return OpCodes.Ldelem_I4;
1506 case Code.Ldelem_U4 : return OpCodes.Ldelem_U4;
1507 case Code.Ldelem_I8 : return OpCodes.Ldelem_I8;
1508 case Code.Ldelem_I : return OpCodes.Ldelem_I;
1509 case Code.Ldelem_R4 : return OpCodes.Ldelem_R4;
1510 case Code.Ldelem_R8 : return OpCodes.Ldelem_R8;
1511 case Code.Ldelem_Ref : return OpCodes.Ldelem_Ref;
1512 case Code.Stelem_I : return OpCodes.Stelem_I;
1513 case Code.Stelem_I1 : return OpCodes.Stelem_I1;
1514 case Code.Stelem_I2 : return OpCodes.Stelem_I2;
1515 case Code.Stelem_I4 : return OpCodes.Stelem_I4;
1516 case Code.Stelem_I8 : return OpCodes.Stelem_I8;
1517 case Code.Stelem_R4 : return OpCodes.Stelem_R4;
1518 case Code.Stelem_R8 : return OpCodes.Stelem_R8;
1519 case Code.Stelem_Ref : return OpCodes.Stelem_Ref;
1520 case Code.Ldelem_Any : return OpCodes.Ldelem_Any;
1521 case Code.Stelem_Any : return OpCodes.Stelem_Any;
1522 case Code.Unbox_Any : return OpCodes.Unbox_Any;
1523 case Code.Conv_Ovf_I1 : return OpCodes.Conv_Ovf_I1;
1524 case Code.Conv_Ovf_U1 : return OpCodes.Conv_Ovf_U1;
1525 case Code.Conv_Ovf_I2 : return OpCodes.Conv_Ovf_I2;
1526 case Code.Conv_Ovf_U2 : return OpCodes.Conv_Ovf_U2;
1527 case Code.Conv_Ovf_I4 : return OpCodes.Conv_Ovf_I4;
1528 case Code.Conv_Ovf_U4 : return OpCodes.Conv_Ovf_U4;
1529 case Code.Conv_Ovf_I8 : return OpCodes.Conv_Ovf_I8;
1530 case Code.Conv_Ovf_U8 : return OpCodes.Conv_Ovf_U8;
1531 case Code.Refanyval : return OpCodes.Refanyval;
1532 case Code.Ckfinite : return OpCodes.Ckfinite;
1533 case Code.Mkrefany : return OpCodes.Mkrefany;
1534 case Code.Ldtoken : return OpCodes.Ldtoken;
1535 case Code.Conv_U2 : return OpCodes.Conv_U2;
1536 case Code.Conv_U1 : return OpCodes.Conv_U1;
1537 case Code.Conv_I : return OpCodes.Conv_I;
1538 case Code.Conv_Ovf_I : return OpCodes.Conv_Ovf_I;
1539 case Code.Conv_Ovf_U : return OpCodes.Conv_Ovf_U;
1540 case Code.Add_Ovf : return OpCodes.Add_Ovf;
1541 case Code.Add_Ovf_Un : return OpCodes.Add_Ovf_Un;
1542 case Code.Mul_Ovf : return OpCodes.Mul_Ovf;
1543 case Code.Mul_Ovf_Un : return OpCodes.Mul_Ovf_Un;
1544 case Code.Sub_Ovf : return OpCodes.Sub_Ovf;
1545 case Code.Sub_Ovf_Un : return OpCodes.Sub_Ovf_Un;
1546 case Code.Endfinally : return OpCodes.Endfinally;
1547 case Code.Leave : return OpCodes.Leave;
1548 case Code.Leave_S : return OpCodes.Leave_S;
1549 case Code.Stind_I : return OpCodes.Stind_I;
1550 case Code.Conv_U : return OpCodes.Conv_U;
1551 case Code.Arglist : return OpCodes.Arglist;
1552 case Code.Ceq : return OpCodes.Ceq;
1553 case Code.Cgt : return OpCodes.Cgt;
1554 case Code.Cgt_Un : return OpCodes.Cgt_Un;
1555 case Code.Clt : return OpCodes.Clt;
1556 case Code.Clt_Un : return OpCodes.Clt_Un;
1557 case Code.Ldftn : return OpCodes.Ldftn;
1558 case Code.Ldvirtftn : return OpCodes.Ldvirtftn;
1559 case Code.Ldarg : return OpCodes.Ldarg;
1560 case Code.Ldarga : return OpCodes.Ldarga;
1561 case Code.Starg : return OpCodes.Starg;
1562 case Code.Ldloc : return OpCodes.Ldloc;
1563 case Code.Ldloca : return OpCodes.Ldloca;
1564 case Code.Stloc : return OpCodes.Stloc;
1565 case Code.Localloc : return OpCodes.Localloc;
1566 case Code.Endfilter : return OpCodes.Endfilter;
1567 case Code.Unaligned : return OpCodes.Unaligned;
1568 case Code.Volatile : return OpCodes.Volatile;
1569 case Code.Tail : return OpCodes.Tail;
1570 case Code.Initobj : return OpCodes.Initobj;
1571 case Code.Constrained : return OpCodes.Constrained;
1572 case Code.Cpblk : return OpCodes.Cpblk;
1573 case Code.Initblk : return OpCodes.Initblk;
1574 case Code.No : return OpCodes.No;
1575 case Code.Rethrow : return OpCodes.Rethrow;
1576 case Code.Sizeof : return OpCodes.Sizeof;
1577 case Code.Refanytype : return OpCodes.Refanytype;
1578 case Code.Readonly : return OpCodes.Readonly;
1579 default : return OpCodes.Nop;