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