673 lines
9.1 KiB
C++
673 lines
9.1 KiB
C++
#pragma once
|
|||
|
|
|
||
|
|
#include "../CommonDef.h"
|
||
|
|
|
||
|
|
namespace hybridclr
|
||
|
|
{
|
||
|
|
namespace metadata
|
||
|
|
{
|
||
|
|
enum class OpcodeValue : uint8_t
|
||
|
|
{
|
||
|
|
//!!!{{OPCODE_VALUE
|
||
|
|
NOP = 0,
|
||
|
|
BREAK = 1,
|
||
|
|
LDARG_0 = 2,
|
||
|
|
LDARG_1 = 3,
|
||
|
|
LDARG_2 = 4,
|
||
|
|
LDARG_3 = 5,
|
||
|
|
LDLOC_0 = 6,
|
||
|
|
LDLOC_1 = 7,
|
||
|
|
LDLOC_2 = 8,
|
||
|
|
LDLOC_3 = 9,
|
||
|
|
STLOC_0 = 10,
|
||
|
|
STLOC_1 = 11,
|
||
|
|
STLOC_2 = 12,
|
||
|
|
STLOC_3 = 13,
|
||
|
|
LDARG_S = 14,
|
||
|
|
LDARGA_S = 15,
|
||
|
|
STARG_S = 16,
|
||
|
|
LDLOC_S = 17,
|
||
|
|
LDLOCA_S = 18,
|
||
|
|
STLOC_S = 19,
|
||
|
|
LDNULL = 20,
|
||
|
|
LDC_I4_M1 = 21,
|
||
|
|
LDC_I4_0 = 22,
|
||
|
|
LDC_I4_1 = 23,
|
||
|
|
LDC_I4_2 = 24,
|
||
|
|
LDC_I4_3 = 25,
|
||
|
|
LDC_I4_4 = 26,
|
||
|
|
LDC_I4_5 = 27,
|
||
|
|
LDC_I4_6 = 28,
|
||
|
|
LDC_I4_7 = 29,
|
||
|
|
LDC_I4_8 = 30,
|
||
|
|
LDC_I4_S = 31,
|
||
|
|
LDC_I4 = 32,
|
||
|
|
LDC_I8 = 33,
|
||
|
|
LDC_R4 = 34,
|
||
|
|
LDC_R8 = 35,
|
||
|
|
UNUSED99 = 36,
|
||
|
|
DUP = 37,
|
||
|
|
POP = 38,
|
||
|
|
JMP = 39,
|
||
|
|
CALL = 40,
|
||
|
|
CALLI = 41,
|
||
|
|
RET = 42,
|
||
|
|
BR_S = 43,
|
||
|
|
BRFALSE_S = 44,
|
||
|
|
BRTRUE_S = 45,
|
||
|
|
BEQ_S = 46,
|
||
|
|
BGE_S = 47,
|
||
|
|
BGT_S = 48,
|
||
|
|
BLE_S = 49,
|
||
|
|
BLT_S = 50,
|
||
|
|
BNE_UN_S = 51,
|
||
|
|
BGE_UN_S = 52,
|
||
|
|
BGT_UN_S = 53,
|
||
|
|
BLE_UN_S = 54,
|
||
|
|
BLT_UN_S = 55,
|
||
|
|
BR = 56,
|
||
|
|
BRFALSE = 57,
|
||
|
|
BRTRUE = 58,
|
||
|
|
BEQ = 59,
|
||
|
|
BGE = 60,
|
||
|
|
BGT = 61,
|
||
|
|
BLE = 62,
|
||
|
|
BLT = 63,
|
||
|
|
BNE_UN = 64,
|
||
|
|
BGE_UN = 65,
|
||
|
|
BGT_UN = 66,
|
||
|
|
BLE_UN = 67,
|
||
|
|
BLT_UN = 68,
|
||
|
|
SWITCH = 69,
|
||
|
|
LDIND_I1 = 70,
|
||
|
|
LDIND_U1 = 71,
|
||
|
|
LDIND_I2 = 72,
|
||
|
|
LDIND_U2 = 73,
|
||
|
|
LDIND_I4 = 74,
|
||
|
|
LDIND_U4 = 75,
|
||
|
|
LDIND_I8 = 76,
|
||
|
|
LDIND_I = 77,
|
||
|
|
LDIND_R4 = 78,
|
||
|
|
LDIND_R8 = 79,
|
||
|
|
LDIND_REF = 80,
|
||
|
|
STIND_REF = 81,
|
||
|
|
STIND_I1 = 82,
|
||
|
|
STIND_I2 = 83,
|
||
|
|
STIND_I4 = 84,
|
||
|
|
STIND_I8 = 85,
|
||
|
|
STIND_R4 = 86,
|
||
|
|
STIND_R8 = 87,
|
||
|
|
ADD = 88,
|
||
|
|
SUB = 89,
|
||
|
|
MUL = 90,
|
||
|
|
DIV = 91,
|
||
|
|
DIV_UN = 92,
|
||
|
|
REM = 93,
|
||
|
|
REM_UN = 94,
|
||
|
|
AND = 95,
|
||
|
|
OR = 96,
|
||
|
|
XOR = 97,
|
||
|
|
SHL = 98,
|
||
|
|
SHR = 99,
|
||
|
|
SHR_UN = 100,
|
||
|
|
NEG = 101,
|
||
|
|
NOT = 102,
|
||
|
|
CONV_I1 = 103,
|
||
|
|
CONV_I2 = 104,
|
||
|
|
CONV_I4 = 105,
|
||
|
|
CONV_I8 = 106,
|
||
|
|
CONV_R4 = 107,
|
||
|
|
CONV_R8 = 108,
|
||
|
|
CONV_U4 = 109,
|
||
|
|
CONV_U8 = 110,
|
||
|
|
CALLVIRT = 111,
|
||
|
|
CPOBJ = 112,
|
||
|
|
LDOBJ = 113,
|
||
|
|
LDSTR = 114,
|
||
|
|
NEWOBJ = 115,
|
||
|
|
CASTCLASS = 116,
|
||
|
|
ISINST = 117,
|
||
|
|
CONV_R_UN = 118,
|
||
|
|
UNUSED58 = 119,
|
||
|
|
UNUSED1 = 120,
|
||
|
|
UNBOX = 121,
|
||
|
|
THROW = 122,
|
||
|
|
LDFLD = 123,
|
||
|
|
LDFLDA = 124,
|
||
|
|
STFLD = 125,
|
||
|
|
LDSFLD = 126,
|
||
|
|
LDSFLDA = 127,
|
||
|
|
STSFLD = 128,
|
||
|
|
STOBJ = 129,
|
||
|
|
CONV_OVF_I1_UN = 130,
|
||
|
|
CONV_OVF_I2_UN = 131,
|
||
|
|
CONV_OVF_I4_UN = 132,
|
||
|
|
CONV_OVF_I8_UN = 133,
|
||
|
|
CONV_OVF_U1_UN = 134,
|
||
|
|
CONV_OVF_U2_UN = 135,
|
||
|
|
CONV_OVF_U4_UN = 136,
|
||
|
|
CONV_OVF_U8_UN = 137,
|
||
|
|
CONV_OVF_I_UN = 138,
|
||
|
|
CONV_OVF_U_UN = 139,
|
||
|
|
BOX = 140,
|
||
|
|
NEWARR = 141,
|
||
|
|
LDLEN = 142,
|
||
|
|
LDELEMA = 143,
|
||
|
|
LDELEM_I1 = 144,
|
||
|
|
LDELEM_U1 = 145,
|
||
|
|
LDELEM_I2 = 146,
|
||
|
|
LDELEM_U2 = 147,
|
||
|
|
LDELEM_I4 = 148,
|
||
|
|
LDELEM_U4 = 149,
|
||
|
|
LDELEM_I8 = 150,
|
||
|
|
LDELEM_I = 151,
|
||
|
|
LDELEM_R4 = 152,
|
||
|
|
LDELEM_R8 = 153,
|
||
|
|
LDELEM_REF = 154,
|
||
|
|
STELEM_I = 155,
|
||
|
|
STELEM_I1 = 156,
|
||
|
|
STELEM_I2 = 157,
|
||
|
|
STELEM_I4 = 158,
|
||
|
|
STELEM_I8 = 159,
|
||
|
|
STELEM_R4 = 160,
|
||
|
|
STELEM_R8 = 161,
|
||
|
|
STELEM_REF = 162,
|
||
|
|
LDELEM = 163,
|
||
|
|
STELEM = 164,
|
||
|
|
UNBOX_ANY = 165,
|
||
|
|
UNUSED5 = 166,
|
||
|
|
UNUSED6 = 167,
|
||
|
|
UNUSED7 = 168,
|
||
|
|
UNUSED8 = 169,
|
||
|
|
UNUSED9 = 170,
|
||
|
|
UNUSED10 = 171,
|
||
|
|
UNUSED11 = 172,
|
||
|
|
UNUSED12 = 173,
|
||
|
|
UNUSED13 = 174,
|
||
|
|
UNUSED14 = 175,
|
||
|
|
UNUSED15 = 176,
|
||
|
|
UNUSED16 = 177,
|
||
|
|
UNUSED17 = 178,
|
||
|
|
CONV_OVF_I1 = 179,
|
||
|
|
CONV_OVF_U1 = 180,
|
||
|
|
CONV_OVF_I2 = 181,
|
||
|
|
CONV_OVF_U2 = 182,
|
||
|
|
CONV_OVF_I4 = 183,
|
||
|
|
CONV_OVF_U4 = 184,
|
||
|
|
CONV_OVF_I8 = 185,
|
||
|
|
CONV_OVF_U8 = 186,
|
||
|
|
UNUSED50 = 187,
|
||
|
|
UNUSED18 = 188,
|
||
|
|
UNUSED19 = 189,
|
||
|
|
UNUSED20 = 190,
|
||
|
|
UNUSED21 = 191,
|
||
|
|
UNUSED22 = 192,
|
||
|
|
UNUSED23 = 193,
|
||
|
|
REFANYVAL = 194,
|
||
|
|
CKFINITE = 195,
|
||
|
|
UNUSED24 = 196,
|
||
|
|
UNUSED25 = 197,
|
||
|
|
MKREFANY = 198,
|
||
|
|
UNUSED59 = 199,
|
||
|
|
UNUSED60 = 200,
|
||
|
|
UNUSED61 = 201,
|
||
|
|
UNUSED62 = 202,
|
||
|
|
UNUSED63 = 203,
|
||
|
|
UNUSED64 = 204,
|
||
|
|
UNUSED65 = 205,
|
||
|
|
UNUSED66 = 206,
|
||
|
|
UNUSED67 = 207,
|
||
|
|
LDTOKEN = 208,
|
||
|
|
CONV_U2 = 209,
|
||
|
|
CONV_U1 = 210,
|
||
|
|
CONV_I = 211,
|
||
|
|
CONV_OVF_I = 212,
|
||
|
|
CONV_OVF_U = 213,
|
||
|
|
ADD_OVF = 214,
|
||
|
|
ADD_OVF_UN = 215,
|
||
|
|
MUL_OVF = 216,
|
||
|
|
MUL_OVF_UN = 217,
|
||
|
|
SUB_OVF = 218,
|
||
|
|
SUB_OVF_UN = 219,
|
||
|
|
ENDFINALLY = 220,
|
||
|
|
LEAVE = 221,
|
||
|
|
LEAVE_S = 222,
|
||
|
|
STIND_I = 223,
|
||
|
|
CONV_U = 224,
|
||
|
|
UNUSED26 = 225,
|
||
|
|
UNUSED27 = 226,
|
||
|
|
UNUSED28 = 227,
|
||
|
|
UNUSED29 = 228,
|
||
|
|
UNUSED30 = 229,
|
||
|
|
UNUSED31 = 230,
|
||
|
|
UNUSED32 = 231,
|
||
|
|
UNUSED33 = 232,
|
||
|
|
UNUSED34 = 233,
|
||
|
|
UNUSED35 = 234,
|
||
|
|
UNUSED36 = 235,
|
||
|
|
UNUSED37 = 236,
|
||
|
|
UNUSED38 = 237,
|
||
|
|
UNUSED39 = 238,
|
||
|
|
UNUSED40 = 239,
|
||
|
|
UNUSED41 = 240,
|
||
|
|
UNUSED42 = 241,
|
||
|
|
UNUSED43 = 242,
|
||
|
|
UNUSED44 = 243,
|
||
|
|
UNUSED45 = 244,
|
||
|
|
UNUSED46 = 245,
|
||
|
|
UNUSED47 = 246,
|
||
|
|
UNUSED48 = 247,
|
||
|
|
PREFIX7 = 248,
|
||
|
|
PREFIX6 = 249,
|
||
|
|
PREFIX5 = 250,
|
||
|
|
PREFIX4 = 251,
|
||
|
|
PREFIX3 = 252,
|
||
|
|
PREFIX2 = 253,
|
||
|
|
PREFIX1 = 254,
|
||
|
|
PREFIXREF = 255,
|
||
|
|
ARGLIST = 0,
|
||
|
|
CEQ = 1,
|
||
|
|
CGT = 2,
|
||
|
|
CGT_UN = 3,
|
||
|
|
CLT = 4,
|
||
|
|
CLT_UN = 5,
|
||
|
|
LDFTN = 6,
|
||
|
|
LDVIRTFTN = 7,
|
||
|
|
UNUSED56 = 8,
|
||
|
|
LDARG = 9,
|
||
|
|
LDARGA = 10,
|
||
|
|
STARG = 11,
|
||
|
|
LDLOC = 12,
|
||
|
|
LDLOCA = 13,
|
||
|
|
STLOC = 14,
|
||
|
|
LOCALLOC = 15,
|
||
|
|
UNUSED57 = 16,
|
||
|
|
ENDFILTER = 17,
|
||
|
|
UNALIGNED_ = 18,
|
||
|
|
VOLATILE_ = 19,
|
||
|
|
TAIL_ = 20,
|
||
|
|
INITOBJ = 21,
|
||
|
|
CONSTRAINED_ = 22,
|
||
|
|
CPBLK = 23,
|
||
|
|
INITBLK = 24,
|
||
|
|
NO_ = 25,
|
||
|
|
RETHROW = 26,
|
||
|
|
UNUSED = 27,
|
||
|
|
SIZEOF = 28,
|
||
|
|
REFANYTYPE = 29,
|
||
|
|
READONLY_ = 30,
|
||
|
|
UNUSED53 = 31,
|
||
|
|
UNUSED54 = 32,
|
||
|
|
UNUSED55 = 33,
|
||
|
|
UNUSED70 = 34,
|
||
|
|
ILLEGAL = 0,
|
||
|
|
ENDMAC = 0,
|
||
|
|
|
||
|
|
//!!!}}OPCODE_VALUE
|
||
|
|
};
|
||
|
|
|
||
|
|
enum class OpcodeEnum
|
||
|
|
{
|
||
|
|
//!!!{{OPCODE_ENUM
|
||
|
|
NOP,
|
||
|
|
BREAK,
|
||
|
|
LDARG_0,
|
||
|
|
LDARG_1,
|
||
|
|
LDARG_2,
|
||
|
|
LDARG_3,
|
||
|
|
LDLOC_0,
|
||
|
|
LDLOC_1,
|
||
|
|
LDLOC_2,
|
||
|
|
LDLOC_3,
|
||
|
|
STLOC_0,
|
||
|
|
STLOC_1,
|
||
|
|
STLOC_2,
|
||
|
|
STLOC_3,
|
||
|
|
LDARG_S,
|
||
|
|
LDARGA_S,
|
||
|
|
STARG_S,
|
||
|
|
LDLOC_S,
|
||
|
|
LDLOCA_S,
|
||
|
|
STLOC_S,
|
||
|
|
LDNULL,
|
||
|
|
LDC_I4_M1,
|
||
|
|
LDC_I4_0,
|
||
|
|
LDC_I4_1,
|
||
|
|
LDC_I4_2,
|
||
|
|
LDC_I4_3,
|
||
|
|
LDC_I4_4,
|
||
|
|
LDC_I4_5,
|
||
|
|
LDC_I4_6,
|
||
|
|
LDC_I4_7,
|
||
|
|
LDC_I4_8,
|
||
|
|
LDC_I4_S,
|
||
|
|
LDC_I4,
|
||
|
|
LDC_I8,
|
||
|
|
LDC_R4,
|
||
|
|
LDC_R8,
|
||
|
|
UNUSED99,
|
||
|
|
DUP,
|
||
|
|
POP,
|
||
|
|
JMP,
|
||
|
|
CALL,
|
||
|
|
CALLI,
|
||
|
|
RET,
|
||
|
|
BR_S,
|
||
|
|
BRFALSE_S,
|
||
|
|
BRTRUE_S,
|
||
|
|
BEQ_S,
|
||
|
|
BGE_S,
|
||
|
|
BGT_S,
|
||
|
|
BLE_S,
|
||
|
|
BLT_S,
|
||
|
|
BNE_UN_S,
|
||
|
|
BGE_UN_S,
|
||
|
|
BGT_UN_S,
|
||
|
|
BLE_UN_S,
|
||
|
|
BLT_UN_S,
|
||
|
|
BR,
|
||
|
|
BRFALSE,
|
||
|
|
BRTRUE,
|
||
|
|
BEQ,
|
||
|
|
BGE,
|
||
|
|
BGT,
|
||
|
|
BLE,
|
||
|
|
BLT,
|
||
|
|
BNE_UN,
|
||
|
|
BGE_UN,
|
||
|
|
BGT_UN,
|
||
|
|
BLE_UN,
|
||
|
|
BLT_UN,
|
||
|
|
SWITCH,
|
||
|
|
LDIND_I1,
|
||
|
|
LDIND_U1,
|
||
|
|
LDIND_I2,
|
||
|
|
LDIND_U2,
|
||
|
|
LDIND_I4,
|
||
|
|
LDIND_U4,
|
||
|
|
LDIND_I8,
|
||
|
|
LDIND_I,
|
||
|
|
LDIND_R4,
|
||
|
|
LDIND_R8,
|
||
|
|
LDIND_REF,
|
||
|
|
STIND_REF,
|
||
|
|
STIND_I1,
|
||
|
|
STIND_I2,
|
||
|
|
STIND_I4,
|
||
|
|
STIND_I8,
|
||
|
|
STIND_R4,
|
||
|
|
STIND_R8,
|
||
|
|
ADD,
|
||
|
|
SUB,
|
||
|
|
MUL,
|
||
|
|
DIV,
|
||
|
|
DIV_UN,
|
||
|
|
REM,
|
||
|
|
REM_UN,
|
||
|
|
AND,
|
||
|
|
OR,
|
||
|
|
XOR,
|
||
|
|
SHL,
|
||
|
|
SHR,
|
||
|
|
SHR_UN,
|
||
|
|
NEG,
|
||
|
|
NOT,
|
||
|
|
CONV_I1,
|
||
|
|
CONV_I2,
|
||
|
|
CONV_I4,
|
||
|
|
CONV_I8,
|
||
|
|
CONV_R4,
|
||
|
|
CONV_R8,
|
||
|
|
CONV_U4,
|
||
|
|
CONV_U8,
|
||
|
|
CALLVIRT,
|
||
|
|
CPOBJ,
|
||
|
|
LDOBJ,
|
||
|
|
LDSTR,
|
||
|
|
NEWOBJ,
|
||
|
|
CASTCLASS,
|
||
|
|
ISINST,
|
||
|
|
CONV_R_UN,
|
||
|
|
UNUSED58,
|
||
|
|
UNUSED1,
|
||
|
|
UNBOX,
|
||
|
|
THROW,
|
||
|
|
LDFLD,
|
||
|
|
LDFLDA,
|
||
|
|
STFLD,
|
||
|
|
LDSFLD,
|
||
|
|
LDSFLDA,
|
||
|
|
STSFLD,
|
||
|
|
STOBJ,
|
||
|
|
CONV_OVF_I1_UN,
|
||
|
|
CONV_OVF_I2_UN,
|
||
|
|
CONV_OVF_I4_UN,
|
||
|
|
CONV_OVF_I8_UN,
|
||
|
|
CONV_OVF_U1_UN,
|
||
|
|
CONV_OVF_U2_UN,
|
||
|
|
CONV_OVF_U4_UN,
|
||
|
|
CONV_OVF_U8_UN,
|
||
|
|
CONV_OVF_I_UN,
|
||
|
|
CONV_OVF_U_UN,
|
||
|
|
BOX,
|
||
|
|
NEWARR,
|
||
|
|
LDLEN,
|
||
|
|
LDELEMA,
|
||
|
|
LDELEM_I1,
|
||
|
|
LDELEM_U1,
|
||
|
|
LDELEM_I2,
|
||
|
|
LDELEM_U2,
|
||
|
|
LDELEM_I4,
|
||
|
|
LDELEM_U4,
|
||
|
|
LDELEM_I8,
|
||
|
|
LDELEM_I,
|
||
|
|
LDELEM_R4,
|
||
|
|
LDELEM_R8,
|
||
|
|
LDELEM_REF,
|
||
|
|
STELEM_I,
|
||
|
|
STELEM_I1,
|
||
|
|
STELEM_I2,
|
||
|
|
STELEM_I4,
|
||
|
|
STELEM_I8,
|
||
|
|
STELEM_R4,
|
||
|
|
STELEM_R8,
|
||
|
|
STELEM_REF,
|
||
|
|
LDELEM,
|
||
|
|
STELEM,
|
||
|
|
UNBOX_ANY,
|
||
|
|
UNUSED5,
|
||
|
|
UNUSED6,
|
||
|
|
UNUSED7,
|
||
|
|
UNUSED8,
|
||
|
|
UNUSED9,
|
||
|
|
UNUSED10,
|
||
|
|
UNUSED11,
|
||
|
|
UNUSED12,
|
||
|
|
UNUSED13,
|
||
|
|
UNUSED14,
|
||
|
|
UNUSED15,
|
||
|
|
UNUSED16,
|
||
|
|
UNUSED17,
|
||
|
|
CONV_OVF_I1,
|
||
|
|
CONV_OVF_U1,
|
||
|
|
CONV_OVF_I2,
|
||
|
|
CONV_OVF_U2,
|
||
|
|
CONV_OVF_I4,
|
||
|
|
CONV_OVF_U4,
|
||
|
|
CONV_OVF_I8,
|
||
|
|
CONV_OVF_U8,
|
||
|
|
UNUSED50,
|
||
|
|
UNUSED18,
|
||
|
|
UNUSED19,
|
||
|
|
UNUSED20,
|
||
|
|
UNUSED21,
|
||
|
|
UNUSED22,
|
||
|
|
UNUSED23,
|
||
|
|
REFANYVAL,
|
||
|
|
CKFINITE,
|
||
|
|
UNUSED24,
|
||
|
|
UNUSED25,
|
||
|
|
MKREFANY,
|
||
|
|
UNUSED59,
|
||
|
|
UNUSED60,
|
||
|
|
UNUSED61,
|
||
|
|
UNUSED62,
|
||
|
|
UNUSED63,
|
||
|
|
UNUSED64,
|
||
|
|
UNUSED65,
|
||
|
|
UNUSED66,
|
||
|
|
UNUSED67,
|
||
|
|
LDTOKEN,
|
||
|
|
CONV_U2,
|
||
|
|
CONV_U1,
|
||
|
|
CONV_I,
|
||
|
|
CONV_OVF_I,
|
||
|
|
CONV_OVF_U,
|
||
|
|
ADD_OVF,
|
||
|
|
ADD_OVF_UN,
|
||
|
|
MUL_OVF,
|
||
|
|
MUL_OVF_UN,
|
||
|
|
SUB_OVF,
|
||
|
|
SUB_OVF_UN,
|
||
|
|
ENDFINALLY,
|
||
|
|
LEAVE,
|
||
|
|
LEAVE_S,
|
||
|
|
STIND_I,
|
||
|
|
CONV_U,
|
||
|
|
UNUSED26,
|
||
|
|
UNUSED27,
|
||
|
|
UNUSED28,
|
||
|
|
UNUSED29,
|
||
|
|
UNUSED30,
|
||
|
|
UNUSED31,
|
||
|
|
UNUSED32,
|
||
|
|
UNUSED33,
|
||
|
|
UNUSED34,
|
||
|
|
UNUSED35,
|
||
|
|
UNUSED36,
|
||
|
|
UNUSED37,
|
||
|
|
UNUSED38,
|
||
|
|
UNUSED39,
|
||
|
|
UNUSED40,
|
||
|
|
UNUSED41,
|
||
|
|
UNUSED42,
|
||
|
|
UNUSED43,
|
||
|
|
UNUSED44,
|
||
|
|
UNUSED45,
|
||
|
|
UNUSED46,
|
||
|
|
UNUSED47,
|
||
|
|
UNUSED48,
|
||
|
|
PREFIX7,
|
||
|
|
PREFIX6,
|
||
|
|
PREFIX5,
|
||
|
|
PREFIX4,
|
||
|
|
PREFIX3,
|
||
|
|
PREFIX2,
|
||
|
|
PREFIX1,
|
||
|
|
PREFIXREF,
|
||
|
|
ARGLIST,
|
||
|
|
CEQ,
|
||
|
|
CGT,
|
||
|
|
CGT_UN,
|
||
|
|
CLT,
|
||
|
|
CLT_UN,
|
||
|
|
LDFTN,
|
||
|
|
LDVIRTFTN,
|
||
|
|
UNUSED56,
|
||
|
|
LDARG,
|
||
|
|
LDARGA,
|
||
|
|
STARG,
|
||
|
|
LDLOC,
|
||
|
|
LDLOCA,
|
||
|
|
STLOC,
|
||
|
|
LOCALLOC,
|
||
|
|
UNUSED57,
|
||
|
|
ENDFILTER,
|
||
|
|
UNALIGNED_,
|
||
|
|
VOLATILE_,
|
||
|
|
TAIL_,
|
||
|
|
INITOBJ,
|
||
|
|
CONSTRAINED_,
|
||
|
|
CPBLK,
|
||
|
|
INITBLK,
|
||
|
|
NO_,
|
||
|
|
RETHROW,
|
||
|
|
UNUSED,
|
||
|
|
SIZEOF,
|
||
|
|
REFANYTYPE,
|
||
|
|
READONLY_,
|
||
|
|
UNUSED53,
|
||
|
|
UNUSED54,
|
||
|
|
UNUSED55,
|
||
|
|
UNUSED70,
|
||
|
|
ILLEGAL,
|
||
|
|
ENDMAC,
|
||
|
|
|
||
|
|
//!!!}}OPCODE_ENUM
|
||
|
|
__Count,
|
||
|
|
};
|
||
|
|
|
||
|
|
|
||
|
|
enum class FlowType
|
||
|
|
{
|
||
|
|
Next,
|
||
|
|
Branch,
|
||
|
|
CondBranch,
|
||
|
|
Call,
|
||
|
|
Return,
|
||
|
|
Meta,
|
||
|
|
Throw,
|
||
|
|
Break,
|
||
|
|
};
|
||
|
|
|
||
|
|
enum class ArgType
|
||
|
|
{
|
||
|
|
None,
|
||
|
|
Data,
|
||
|
|
StaticBranch,
|
||
|
|
BranchTarget,
|
||
|
|
Switch,
|
||
|
|
};
|
||
|
|
|
||
|
|
enum class InputType
|
||
|
|
{
|
||
|
|
None,
|
||
|
|
};
|
||
|
|
|
||
|
|
enum class OutputType
|
||
|
|
{
|
||
|
|
None,
|
||
|
|
};
|
||
|
|
|
||
|
|
enum class OpCodeKind
|
||
|
|
{
|
||
|
|
Primitive,
|
||
|
|
ObjModel,
|
||
|
|
Macro,
|
||
|
|
Prefix,
|
||
|
|
Nternal,
|
||
|
|
};
|
||
|
|
|
||
|
|
struct OpCodeInfo
|
||
|
|
{
|
||
|
|
OpcodeEnum id;
|
||
|
|
const char name[16];
|
||
|
|
InputType intput[3];
|
||
|
|
OutputType output;
|
||
|
|
ArgType inlineType;
|
||
|
|
int32_t inlineParam;
|
||
|
|
uint8_t flag;
|
||
|
|
OpcodeValue baseOpValue;
|
||
|
|
FlowType flow;
|
||
|
|
int32_t constValue;
|
||
|
|
};
|
||
|
|
|
||
|
|
extern OpCodeInfo g_opcodeInfos[(int)OpcodeEnum::__Count];
|
||
|
|
|
||
|
|
const OpCodeInfo* DecodeOpCodeInfo(const byte*& ip, const byte* end);
|
||
|
|
|
||
|
|
uint32_t GetOpCodeSize(const byte*& ip, const OpCodeInfo* opCodeInfo);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|