2 // Author: Sergey Chaban (serge@wildwestsoftware.com)
5 using System
.Reflection
.Emit
;
9 public class InstrToken
: ILToken
{
14 public InstrToken (OpCode opcode
)
17 token
= GetInstrType (opcode
);
23 /// <param name="opcode"></param>
24 /// <returns></returns>
25 public static int GetInstrType (OpCode opcode
)
27 OperandType t
= opcode
.OperandType
;
28 int token
= Token
.UNKNOWN
;
32 case OperandType
.InlineBrTarget
:
33 case OperandType
.ShortInlineBrTarget
:
34 token
= Token
.INSTR_BRTARGET
;
37 case OperandType
.InlineField
:
38 token
= Token
.INSTR_FIELD
;
41 case OperandType
.InlineI
:
42 case OperandType
.ShortInlineI
:
43 token
= Token
.INSTR_I
;
46 case OperandType
.InlineI8
:
47 token
= Token
.INSTR_I8
;
50 case OperandType
.InlineMethod
:
51 token
= Token
.INSTR_METHOD
;
54 case OperandType
.InlineNone
:
55 token
= Token
.INSTR_NONE
;
58 case OperandType
.InlinePhi
:
59 token
= Token
.INSTR_PHI
;
62 case OperandType
.InlineR
:
63 case OperandType
.ShortInlineR
:
64 token
= Token
.INSTR_R
;
68 case OperandType.InlineRVA:
69 token = Token.INSTR_RVA;
73 case OperandType
.InlineSig
:
74 token
= Token
.INSTR_SIG
;
77 case OperandType
.InlineString
:
78 token
= Token
.INSTR_STRING
;
81 case OperandType
.InlineSwitch
:
82 token
= Token
.INSTR_SWITCH
;
85 case OperandType
.InlineTok
:
86 token
= Token
.INSTR_TOK
;
89 case OperandType
.InlineType
:
90 token
= Token
.INSTR_TYPE
;
93 case OperandType
.InlineVar
:
94 case OperandType
.ShortInlineVar
:
95 token
= Token
.INSTR_VAR
;