1 | // Licensed to the .NET Foundation under one or more agreements. |
2 | // The .NET Foundation licenses this file to you under the MIT license. |
3 | // See the LICENSE file in the project root for more information. |
4 | |
5 | #ifndef __openum_h__ |
6 | #define __openum_h__ |
7 | |
8 | |
9 | typedef enum opcode_t |
10 | { |
11 | #define OPDEF(c,s,pop,push,args,type,l,s1,s2,ctrl) c, |
12 | #include "opcode.def" |
13 | #undef OPDEF |
14 | CEE_COUNT, /* number of instructions and macros pre-defined */ |
15 | } OPCODE; |
16 | |
17 | |
18 | typedef enum opcode_format_t |
19 | { |
20 | InlineNone = 0, // no inline args |
21 | InlineVar = 1, // local variable (U2 (U1 if Short on)) |
22 | InlineI = 2, // an signed integer (I4 (I1 if Short on)) |
23 | InlineR = 3, // a real number (R8 (R4 if Short on)) |
24 | InlineBrTarget = 4, // branch target (I4 (I1 if Short on)) |
25 | InlineI8 = 5, |
26 | InlineMethod = 6, // method token (U4) |
27 | InlineField = 7, // field token (U4) |
28 | InlineType = 8, // type token (U4) |
29 | InlineString = 9, // string TOKEN (U4) |
30 | InlineSig = 10, // signature tok (U4) |
31 | InlineRVA = 11, // ldptr token (U4) |
32 | InlineTok = 12, // a meta-data token of unknown type (U4) |
33 | InlineSwitch = 13, // count (U4), pcrel1 (U4) .... pcrelN (U4) |
34 | InlinePhi = 14, // count (U1), var1 (U2) ... varN (U2) |
35 | |
36 | // WATCH OUT we are close to the limit here, if you add |
37 | // more enumerations you need to change ShortIline definition below |
38 | |
39 | // The extended enumeration also encodes the size in the IL stream |
40 | ShortInline = 16, // if this bit is set, the format is the 'short' format |
41 | PrimaryMask = (ShortInline-1), // mask these off to get primary enumeration above |
42 | ShortInlineVar = (ShortInline + InlineVar), |
43 | ShortInlineI = (ShortInline + InlineI), |
44 | ShortInlineR = (ShortInline + InlineR), |
45 | ShortInlineBrTarget = (ShortInline + InlineBrTarget), |
46 | InlineOpcode = (ShortInline + InlineNone), // This is only used internally. It means the 'opcode' is two byte instead of 1 |
47 | } OPCODE_FORMAT; |
48 | |
49 | #endif /* __openum_h__ */ |
50 | |
51 | |
52 | |