ts-capstone
Version:
This module provides bindings for the Capstone disassembly framework.
934 lines (915 loc) • 18.2 kB
text/typescript
export interface cs_mips_op {
type: MIPS; // operand type
reg?: MIPS; // register id for REG operand
imm?: number; // immediate value for IMM operand
mem?: {
// base/index/scale/disp value for MEM operand
base: MIPS; // base register
disp: number; // displacement/offset value
};
}
export enum MIPS {
// Operand type for instruction's operands
OP_INVALID = 0, // cs.OP_INVALID (Uninitialized).
OP_REG, // cs.OP_REG (Register operand).
OP_IMM, // cs.OP_IMM (Immediate operand).
OP_MEM, // cs.OP_MEM (Memory operand).
// MIPS registers
REG_INVALID = 0,
// General purpose registers
REG_PC = 1,
REG_0 = 2,
REG_1 = 3,
REG_2 = 4,
REG_3 = 5,
REG_4 = 6,
REG_5 = 7,
REG_6 = 8,
REG_7 = 9,
REG_8 = 10,
REG_9 = 11,
REG_10 = 12,
REG_11 = 13,
REG_12 = 14,
REG_13 = 15,
REG_14 = 16,
REG_15 = 17,
REG_16 = 18,
REG_17 = 19,
REG_18 = 20,
REG_19 = 21,
REG_20 = 22,
REG_21 = 23,
REG_22 = 24,
REG_23 = 25,
REG_24 = 26,
REG_25 = 27,
REG_26 = 28,
REG_27 = 29,
REG_28 = 30,
REG_29 = 31,
REG_30 = 32,
REG_31 = 33,
// DSP registers
REG_DSPCCOND = 34,
REG_DSPCARRY = 35,
REG_DSPEFI = 36,
REG_DSPOUTFLAG = 37,
REG_DSPOUTFLAG16_19 = 38,
REG_DSPOUTFLAG20 = 39,
REG_DSPOUTFLAG21 = 40,
REG_DSPOUTFLAG22 = 41,
REG_DSPOUTFLAG23 = 42,
REG_DSPPOS = 43,
REG_DSPSCOUNT = 44,
// ACC registers
REG_AC0 = 45,
REG_AC1 = 46,
REG_AC2 = 47,
REG_AC3 = 48,
// COP registers
REG_CC0 = 49,
REG_CC1 = 50,
REG_CC2 = 51,
REG_CC3 = 52,
REG_CC4 = 53,
REG_CC5 = 54,
REG_CC6 = 55,
REG_CC7 = 56,
// FPU registers
REG_F0 = 57,
REG_F1 = 58,
REG_F2 = 59,
REG_F3 = 60,
REG_F4 = 61,
REG_F5 = 62,
REG_F6 = 63,
REG_F7 = 64,
REG_F8 = 65,
REG_F9 = 66,
REG_F10 = 67,
REG_F11 = 68,
REG_F12 = 69,
REG_F13 = 70,
REG_F14 = 71,
REG_F15 = 72,
REG_F16 = 73,
REG_F17 = 74,
REG_F18 = 75,
REG_F19 = 76,
REG_F20 = 77,
REG_F21 = 78,
REG_F22 = 79,
REG_F23 = 80,
REG_F24 = 81,
REG_F25 = 82,
REG_F26 = 83,
REG_F27 = 84,
REG_F28 = 85,
REG_F29 = 86,
REG_F30 = 87,
REG_F31 = 88,
REG_FCC0 = 89,
REG_FCC1 = 90,
REG_FCC2 = 91,
REG_FCC3 = 92,
REG_FCC4 = 93,
REG_FCC5 = 94,
REG_FCC6 = 95,
REG_FCC7 = 96,
// AFPR128
REG_W0 = 97,
REG_W1 = 98,
REG_W2 = 99,
REG_W3 = 100,
REG_W4 = 101,
REG_W5 = 102,
REG_W6 = 103,
REG_W7 = 104,
REG_W8 = 105,
REG_W9 = 106,
REG_W10 = 107,
REG_W11 = 108,
REG_W12 = 109,
REG_W13 = 110,
REG_W14 = 111,
REG_W15 = 112,
REG_W16 = 113,
REG_W17 = 114,
REG_W18 = 115,
REG_W19 = 116,
REG_W20 = 117,
REG_W21 = 118,
REG_W22 = 119,
REG_W23 = 120,
REG_W24 = 121,
REG_W25 = 122,
REG_W26 = 123,
REG_W27 = 124,
REG_W28 = 125,
REG_W29 = 126,
REG_W30 = 127,
REG_W31 = 128,
REG_HI = 129,
REG_LO = 130,
REG_P0 = 131,
REG_P1 = 132,
REG_P2 = 133,
REG_MPL0 = 134,
REG_MPL1 = 135,
REG_MPL2 = 136,
REG_ENDING = 137, // mark the end of the list or registers
// alias registers
REG_ZERO = MIPS.REG_0,
REG_AT = MIPS.REG_1,
REG_V0 = MIPS.REG_2,
REG_V1 = MIPS.REG_3,
REG_A0 = MIPS.REG_4,
REG_A1 = MIPS.REG_5,
REG_A2 = MIPS.REG_6,
REG_A3 = MIPS.REG_7,
REG_T0 = MIPS.REG_8,
REG_T1 = MIPS.REG_9,
REG_T2 = MIPS.REG_10,
REG_T3 = MIPS.REG_11,
REG_T4 = MIPS.REG_12,
REG_T5 = MIPS.REG_13,
REG_T6 = MIPS.REG_14,
REG_T7 = MIPS.REG_15,
REG_S0 = MIPS.REG_16,
REG_S1 = MIPS.REG_17,
REG_S2 = MIPS.REG_18,
REG_S3 = MIPS.REG_19,
REG_S4 = MIPS.REG_20,
REG_S5 = MIPS.REG_21,
REG_S6 = MIPS.REG_22,
REG_S7 = MIPS.REG_23,
REG_T8 = MIPS.REG_24,
REG_T9 = MIPS.REG_25,
REG_K0 = MIPS.REG_26,
REG_K1 = MIPS.REG_27,
REG_GP = MIPS.REG_28,
REG_SP = MIPS.REG_29,
REG_FP = MIPS.REG_30,
REG_S8 = MIPS.REG_30,
REG_RA = MIPS.REG_31,
REG_HI0 = MIPS.REG_AC0,
REG_HI1 = MIPS.REG_AC1,
REG_HI2 = MIPS.REG_AC2,
REG_HI3 = MIPS.REG_AC3,
REG_LO0 = MIPS.REG_HI0,
REG_LO1 = MIPS.REG_HI1,
REG_LO2 = MIPS.REG_HI2,
REG_LO3 = MIPS.REG_HI3,
// MIPS instruction
INS_INVALID = 0,
INS_ABSQ_S = 1,
INS_ADD = 2,
INS_ADDIUPC = 3,
INS_ADDIUR1SP = 4,
INS_ADDIUR2 = 5,
INS_ADDIUS5 = 6,
INS_ADDIUSP = 7,
INS_ADDQH = 8,
INS_ADDQH_R = 9,
INS_ADDQ = 10,
INS_ADDQ_S = 11,
INS_ADDSC = 12,
INS_ADDS_A = 13,
INS_ADDS_S = 14,
INS_ADDS_U = 15,
INS_ADDU16 = 16,
INS_ADDUH = 17,
INS_ADDUH_R = 18,
INS_ADDU = 19,
INS_ADDU_S = 20,
INS_ADDVI = 21,
INS_ADDV = 22,
INS_ADDWC = 23,
INS_ADD_A = 24,
INS_ADDI = 25,
INS_ADDIU = 26,
INS_ALIGN = 27,
INS_ALUIPC = 28,
INS_AND = 29,
INS_AND16 = 30,
INS_ANDI16 = 31,
INS_ANDI = 32,
INS_APPEND = 33,
INS_ASUB_S = 34,
INS_ASUB_U = 35,
INS_AUI = 36,
INS_AUIPC = 37,
INS_AVER_S = 38,
INS_AVER_U = 39,
INS_AVE_S = 40,
INS_AVE_U = 41,
INS_B16 = 42,
INS_BADDU = 43,
INS_BAL = 44,
INS_BALC = 45,
INS_BALIGN = 46,
INS_BBIT0 = 47,
INS_BBIT032 = 48,
INS_BBIT1 = 49,
INS_BBIT132 = 50,
INS_BC = 51,
INS_BC0F = 52,
INS_BC0FL = 53,
INS_BC0T = 54,
INS_BC0TL = 55,
INS_BC1EQZ = 56,
INS_BC1F = 57,
INS_BC1FL = 58,
INS_BC1NEZ = 59,
INS_BC1T = 60,
INS_BC1TL = 61,
INS_BC2EQZ = 62,
INS_BC2F = 63,
INS_BC2FL = 64,
INS_BC2NEZ = 65,
INS_BC2T = 66,
INS_BC2TL = 67,
INS_BC3F = 68,
INS_BC3FL = 69,
INS_BC3T = 70,
INS_BC3TL = 71,
INS_BCLRI = 72,
INS_BCLR = 73,
INS_BEQ = 74,
INS_BEQC = 75,
INS_BEQL = 76,
INS_BEQZ16 = 77,
INS_BEQZALC = 78,
INS_BEQZC = 79,
INS_BGEC = 80,
INS_BGEUC = 81,
INS_BGEZ = 82,
INS_BGEZAL = 83,
INS_BGEZALC = 84,
INS_BGEZALL = 85,
INS_BGEZALS = 86,
INS_BGEZC = 87,
INS_BGEZL = 88,
INS_BGTZ = 89,
INS_BGTZALC = 90,
INS_BGTZC = 91,
INS_BGTZL = 92,
INS_BINSLI = 93,
INS_BINSL = 94,
INS_BINSRI = 95,
INS_BINSR = 96,
INS_BITREV = 97,
INS_BITSWAP = 98,
INS_BLEZ = 99,
INS_BLEZALC = 100,
INS_BLEZC = 101,
INS_BLEZL = 102,
INS_BLTC = 103,
INS_BLTUC = 104,
INS_BLTZ = 105,
INS_BLTZAL = 106,
INS_BLTZALC = 107,
INS_BLTZALL = 108,
INS_BLTZALS = 109,
INS_BLTZC = 110,
INS_BLTZL = 111,
INS_BMNZI = 112,
INS_BMNZ = 113,
INS_BMZI = 114,
INS_BMZ = 115,
INS_BNE = 116,
INS_BNEC = 117,
INS_BNEGI = 118,
INS_BNEG = 119,
INS_BNEL = 120,
INS_BNEZ16 = 121,
INS_BNEZALC = 122,
INS_BNEZC = 123,
INS_BNVC = 124,
INS_BNZ = 125,
INS_BOVC = 126,
INS_BPOSGE32 = 127,
INS_BREAK = 128,
INS_BREAK16 = 129,
INS_BSELI = 130,
INS_BSEL = 131,
INS_BSETI = 132,
INS_BSET = 133,
INS_BZ = 134,
INS_BEQZ = 135,
INS_B = 136,
INS_BNEZ = 137,
INS_BTEQZ = 138,
INS_BTNEZ = 139,
INS_CACHE = 140,
INS_CEIL = 141,
INS_CEQI = 142,
INS_CEQ = 143,
INS_CFC1 = 144,
INS_CFCMSA = 145,
INS_CINS = 146,
INS_CINS32 = 147,
INS_CLASS = 148,
INS_CLEI_S = 149,
INS_CLEI_U = 150,
INS_CLE_S = 151,
INS_CLE_U = 152,
INS_CLO = 153,
INS_CLTI_S = 154,
INS_CLTI_U = 155,
INS_CLT_S = 156,
INS_CLT_U = 157,
INS_CLZ = 158,
INS_CMPGDU = 159,
INS_CMPGU = 160,
INS_CMPU = 161,
INS_CMP = 162,
INS_COPY_S = 163,
INS_COPY_U = 164,
INS_CTC1 = 165,
INS_CTCMSA = 166,
INS_CVT = 167,
INS_C = 168,
INS_CMPI = 169,
INS_DADD = 170,
INS_DADDI = 171,
INS_DADDIU = 172,
INS_DADDU = 173,
INS_DAHI = 174,
INS_DALIGN = 175,
INS_DATI = 176,
INS_DAUI = 177,
INS_DBITSWAP = 178,
INS_DCLO = 179,
INS_DCLZ = 180,
INS_DDIV = 181,
INS_DDIVU = 182,
INS_DERET = 183,
INS_DEXT = 184,
INS_DEXTM = 185,
INS_DEXTU = 186,
INS_DI = 187,
INS_DINS = 188,
INS_DINSM = 189,
INS_DINSU = 190,
INS_DIV = 191,
INS_DIVU = 192,
INS_DIV_S = 193,
INS_DIV_U = 194,
INS_DLSA = 195,
INS_DMFC0 = 196,
INS_DMFC1 = 197,
INS_DMFC2 = 198,
INS_DMOD = 199,
INS_DMODU = 200,
INS_DMTC0 = 201,
INS_DMTC1 = 202,
INS_DMTC2 = 203,
INS_DMUH = 204,
INS_DMUHU = 205,
INS_DMUL = 206,
INS_DMULT = 207,
INS_DMULTU = 208,
INS_DMULU = 209,
INS_DOTP_S = 210,
INS_DOTP_U = 211,
INS_DPADD_S = 212,
INS_DPADD_U = 213,
INS_DPAQX_SA = 214,
INS_DPAQX_S = 215,
INS_DPAQ_SA = 216,
INS_DPAQ_S = 217,
INS_DPAU = 218,
INS_DPAX = 219,
INS_DPA = 220,
INS_DPOP = 221,
INS_DPSQX_SA = 222,
INS_DPSQX_S = 223,
INS_DPSQ_SA = 224,
INS_DPSQ_S = 225,
INS_DPSUB_S = 226,
INS_DPSUB_U = 227,
INS_DPSU = 228,
INS_DPSX = 229,
INS_DPS = 230,
INS_DROTR = 231,
INS_DROTR32 = 232,
INS_DROTRV = 233,
INS_DSBH = 234,
INS_DSHD = 235,
INS_DSLL = 236,
INS_DSLL32 = 237,
INS_DSLLV = 238,
INS_DSRA = 239,
INS_DSRA32 = 240,
INS_DSRAV = 241,
INS_DSRL = 242,
INS_DSRL32 = 243,
INS_DSRLV = 244,
INS_DSUB = 245,
INS_DSUBU = 246,
INS_EHB = 247,
INS_EI = 248,
INS_ERET = 249,
INS_EXT = 250,
INS_EXTP = 251,
INS_EXTPDP = 252,
INS_EXTPDPV = 253,
INS_EXTPV = 254,
INS_EXTRV_RS = 255,
INS_EXTRV_R = 256,
INS_EXTRV_S = 257,
INS_EXTRV = 258,
INS_EXTR_RS = 259,
INS_EXTR_R = 260,
INS_EXTR_S = 261,
INS_EXTR = 262,
INS_EXTS = 263,
INS_EXTS32 = 264,
INS_ABS = 265,
INS_FADD = 266,
INS_FCAF = 267,
INS_FCEQ = 268,
INS_FCLASS = 269,
INS_FCLE = 270,
INS_FCLT = 271,
INS_FCNE = 272,
INS_FCOR = 273,
INS_FCUEQ = 274,
INS_FCULE = 275,
INS_FCULT = 276,
INS_FCUNE = 277,
INS_FCUN = 278,
INS_FDIV = 279,
INS_FEXDO = 280,
INS_FEXP2 = 281,
INS_FEXUPL = 282,
INS_FEXUPR = 283,
INS_FFINT_S = 284,
INS_FFINT_U = 285,
INS_FFQL = 286,
INS_FFQR = 287,
INS_FILL = 288,
INS_FLOG2 = 289,
INS_FLOOR = 290,
INS_FMADD = 291,
INS_FMAX_A = 292,
INS_FMAX = 293,
INS_FMIN_A = 294,
INS_FMIN = 295,
INS_MOV = 296,
INS_FMSUB = 297,
INS_FMUL = 298,
INS_MUL = 299,
INS_NEG = 300,
INS_FRCP = 301,
INS_FRINT = 302,
INS_FRSQRT = 303,
INS_FSAF = 304,
INS_FSEQ = 305,
INS_FSLE = 306,
INS_FSLT = 307,
INS_FSNE = 308,
INS_FSOR = 309,
INS_FSQRT = 310,
INS_SQRT = 311,
INS_FSUB = 312,
INS_SUB = 313,
INS_FSUEQ = 314,
INS_FSULE = 315,
INS_FSULT = 316,
INS_FSUNE = 317,
INS_FSUN = 318,
INS_FTINT_S = 319,
INS_FTINT_U = 320,
INS_FTQ = 321,
INS_FTRUNC_S = 322,
INS_FTRUNC_U = 323,
INS_HADD_S = 324,
INS_HADD_U = 325,
INS_HSUB_S = 326,
INS_HSUB_U = 327,
INS_ILVEV = 328,
INS_ILVL = 329,
INS_ILVOD = 330,
INS_ILVR = 331,
INS_INS = 332,
INS_INSERT = 333,
INS_INSV = 334,
INS_INSVE = 335,
INS_J = 336,
INS_JAL = 337,
INS_JALR = 338,
INS_JALRS16 = 339,
INS_JALRS = 340,
INS_JALS = 341,
INS_JALX = 342,
INS_JIALC = 343,
INS_JIC = 344,
INS_JR = 345,
INS_JR16 = 346,
INS_JRADDIUSP = 347,
INS_JRC = 348,
INS_JALRC = 349,
INS_LB = 350,
INS_LBU16 = 351,
INS_LBUX = 352,
INS_LBU = 353,
INS_LD = 354,
INS_LDC1 = 355,
INS_LDC2 = 356,
INS_LDC3 = 357,
INS_LDI = 358,
INS_LDL = 359,
INS_LDPC = 360,
INS_LDR = 361,
INS_LDXC1 = 362,
INS_LH = 363,
INS_LHU16 = 364,
INS_LHX = 365,
INS_LHU = 366,
INS_LI16 = 367,
INS_LL = 368,
INS_LLD = 369,
INS_LSA = 370,
INS_LUXC1 = 371,
INS_LUI = 372,
INS_LW = 373,
INS_LW16 = 374,
INS_LWC1 = 375,
INS_LWC2 = 376,
INS_LWC3 = 377,
INS_LWL = 378,
INS_LWM16 = 379,
INS_LWM32 = 380,
INS_LWPC = 381,
INS_LWP = 382,
INS_LWR = 383,
INS_LWUPC = 384,
INS_LWU = 385,
INS_LWX = 386,
INS_LWXC1 = 387,
INS_LWXS = 388,
INS_LI = 389,
INS_MADD = 390,
INS_MADDF = 391,
INS_MADDR_Q = 392,
INS_MADDU = 393,
INS_MADDV = 394,
INS_MADD_Q = 395,
INS_MAQ_SA = 396,
INS_MAQ_S = 397,
INS_MAXA = 398,
INS_MAXI_S = 399,
INS_MAXI_U = 400,
INS_MAX_A = 401,
INS_MAX = 402,
INS_MAX_S = 403,
INS_MAX_U = 404,
INS_MFC0 = 405,
INS_MFC1 = 406,
INS_MFC2 = 407,
INS_MFHC1 = 408,
INS_MFHI = 409,
INS_MFLO = 410,
INS_MINA = 411,
INS_MINI_S = 412,
INS_MINI_U = 413,
INS_MIN_A = 414,
INS_MIN = 415,
INS_MIN_S = 416,
INS_MIN_U = 417,
INS_MOD = 418,
INS_MODSUB = 419,
INS_MODU = 420,
INS_MOD_S = 421,
INS_MOD_U = 422,
INS_MOVE = 423,
INS_MOVEP = 424,
INS_MOVF = 425,
INS_MOVN = 426,
INS_MOVT = 427,
INS_MOVZ = 428,
INS_MSUB = 429,
INS_MSUBF = 430,
INS_MSUBR_Q = 431,
INS_MSUBU = 432,
INS_MSUBV = 433,
INS_MSUB_Q = 434,
INS_MTC0 = 435,
INS_MTC1 = 436,
INS_MTC2 = 437,
INS_MTHC1 = 438,
INS_MTHI = 439,
INS_MTHLIP = 440,
INS_MTLO = 441,
INS_MTM0 = 442,
INS_MTM1 = 443,
INS_MTM2 = 444,
INS_MTP0 = 445,
INS_MTP1 = 446,
INS_MTP2 = 447,
INS_MUH = 448,
INS_MUHU = 449,
INS_MULEQ_S = 450,
INS_MULEU_S = 451,
INS_MULQ_RS = 452,
INS_MULQ_S = 453,
INS_MULR_Q = 454,
INS_MULSAQ_S = 455,
INS_MULSA = 456,
INS_MULT = 457,
INS_MULTU = 458,
INS_MULU = 459,
INS_MULV = 460,
INS_MUL_Q = 461,
INS_MUL_S = 462,
INS_NLOC = 463,
INS_NLZC = 464,
INS_NMADD = 465,
INS_NMSUB = 466,
INS_NOR = 467,
INS_NORI = 468,
INS_NOT16 = 469,
INS_NOT = 470,
INS_OR = 471,
INS_OR16 = 472,
INS_ORI = 473,
INS_PACKRL = 474,
INS_PAUSE = 475,
INS_PCKEV = 476,
INS_PCKOD = 477,
INS_PCNT = 478,
INS_PICK = 479,
INS_POP = 480,
INS_PRECEQU = 481,
INS_PRECEQ = 482,
INS_PRECEU = 483,
INS_PRECRQU_S = 484,
INS_PRECRQ = 485,
INS_PRECRQ_RS = 486,
INS_PRECR = 487,
INS_PRECR_SRA = 488,
INS_PRECR_SRA_R = 489,
INS_PREF = 490,
INS_PREPEND = 491,
INS_RADDU = 492,
INS_RDDSP = 493,
INS_RDHWR = 494,
INS_REPLV = 495,
INS_REPL = 496,
INS_RINT = 497,
INS_ROTR = 498,
INS_ROTRV = 499,
INS_ROUND = 500,
INS_SAT_S = 501,
INS_SAT_U = 502,
INS_SB = 503,
INS_SB16 = 504,
INS_SC = 505,
INS_SCD = 506,
INS_SD = 507,
INS_SDBBP = 508,
INS_SDBBP16 = 509,
INS_SDC1 = 510,
INS_SDC2 = 511,
INS_SDC3 = 512,
INS_SDL = 513,
INS_SDR = 514,
INS_SDXC1 = 515,
INS_SEB = 516,
INS_SEH = 517,
INS_SELEQZ = 518,
INS_SELNEZ = 519,
INS_SEL = 520,
INS_SEQ = 521,
INS_SEQI = 522,
INS_SH = 523,
INS_SH16 = 524,
INS_SHF = 525,
INS_SHILO = 526,
INS_SHILOV = 527,
INS_SHLLV = 528,
INS_SHLLV_S = 529,
INS_SHLL = 530,
INS_SHLL_S = 531,
INS_SHRAV = 532,
INS_SHRAV_R = 533,
INS_SHRA = 534,
INS_SHRA_R = 535,
INS_SHRLV = 536,
INS_SHRL = 537,
INS_SLDI = 538,
INS_SLD = 539,
INS_SLL = 540,
INS_SLL16 = 541,
INS_SLLI = 542,
INS_SLLV = 543,
INS_SLT = 544,
INS_SLTI = 545,
INS_SLTIU = 546,
INS_SLTU = 547,
INS_SNE = 548,
INS_SNEI = 549,
INS_SPLATI = 550,
INS_SPLAT = 551,
INS_SRA = 552,
INS_SRAI = 553,
INS_SRARI = 554,
INS_SRAR = 555,
INS_SRAV = 556,
INS_SRL = 557,
INS_SRL16 = 558,
INS_SRLI = 559,
INS_SRLRI = 560,
INS_SRLR = 561,
INS_SRLV = 562,
INS_SSNOP = 563,
INS_ST = 564,
INS_SUBQH = 565,
INS_SUBQH_R = 566,
INS_SUBQ = 567,
INS_SUBQ_S = 568,
INS_SUBSUS_U = 569,
INS_SUBSUU_S = 570,
INS_SUBS_S = 571,
INS_SUBS_U = 572,
INS_SUBU16 = 573,
INS_SUBUH = 574,
INS_SUBUH_R = 575,
INS_SUBU = 576,
INS_SUBU_S = 577,
INS_SUBVI = 578,
INS_SUBV = 579,
INS_SUXC1 = 580,
INS_SW = 581,
INS_SW16 = 582,
INS_SWC1 = 583,
INS_SWC2 = 584,
INS_SWC3 = 585,
INS_SWL = 586,
INS_SWM16 = 587,
INS_SWM32 = 588,
INS_SWP = 589,
INS_SWR = 590,
INS_SWXC1 = 591,
INS_SYNC = 592,
INS_SYNCI = 593,
INS_SYSCALL = 594,
INS_TEQ = 595,
INS_TEQI = 596,
INS_TGE = 597,
INS_TGEI = 598,
INS_TGEIU = 599,
INS_TGEU = 600,
INS_TLBP = 601,
INS_TLBR = 602,
INS_TLBWI = 603,
INS_TLBWR = 604,
INS_TLT = 605,
INS_TLTI = 606,
INS_TLTIU = 607,
INS_TLTU = 608,
INS_TNE = 609,
INS_TNEI = 610,
INS_TRUNC = 611,
INS_V3MULU = 612,
INS_VMM0 = 613,
INS_VMULU = 614,
INS_VSHF = 615,
INS_WAIT = 616,
INS_WRDSP = 617,
INS_WSBH = 618,
INS_XOR = 619,
INS_XOR16 = 620,
INS_XORI = 621,
// some alias instructions
INS_NOP = 622,
INS_NEGU = 623,
// special instructions
INS_JALR_HB = 624, // jump and link with Hazard Barrier
INS_JR_HB = 625, // jump register with Hazard Barrier
INS_ENDING = 626,
// Group of MIPS instructions
MIPS_GRP_INVALID = 0, ///< = CS_GRP_INVALID
// Generic groups
// all jump instructions (conditional+direct+indirect jumps)
GRP_JUMP = 1, // cs.GRP_JUMP
// all call instructions
GRP_CALL = 2, // cs.GRP_CALL
// all return instructions
GRP_RET = 3, // cs.GRP_RET
// all interrupt instructions (int+syscall)
GRP_INT = 4, // cs.GRP_INT
// all interrupt return instructions
GRP_IRET = 5, // cs.GRP_IRET
// all privileged instructions
GRP_PRIVILEGE = 6, // cs.GRP_PRIVILEGE
// all relative branching instructions
GRP_BRANCH_RELATIVE = 7, // cs.GRP_BRANCH_RELATIVE
// Architecture-specific groups
GRP_BITCOUNT = 128,
GRP_DSP = 129,
GRP_DSPR2 = 130,
GRP_FPIDX = 131,
GRP_MSA = 132,
GRP_MIPS32R2 = 133,
GRP_MIPS64 = 134,
GRP_MIPS64R2 = 135,
GRP_SEINREG = 136,
GRP_STDENC = 137,
GRP_SWAP = 138,
GRP_MICROMIPS = 139,
GRP_MIPS16MODE = 140,
GRP_FP64BIT = 141,
GRP_NONANSFPMATH = 142,
GRP_NOTFP64BIT = 143,
GRP_NOTINMICROMIPS = 144,
GRP_NOTNACL = 145,
GRP_NOTMIPS32R6 = 146,
GRP_NOTMIPS64R6 = 147,
GRP_CNMIPS = 148,
GRP_MIPS32 = 149,
GRP_MIPS32R6 = 150,
GRP_MIPS64R6 = 151,
GRP_MIPS2 = 152,
GRP_MIPS3 = 153,
GRP_MIPS3_32 = 154,
GRP_MIPS3_32R2 = 155,
GRP_MIPS4_32 = 156,
GRP_MIPS4_32R2 = 157,
GRP_MIPS5_32R2 = 158,
GRP_GP32BIT = 159,
GRP_GP64BIT = 160,
GRP_ENDING = 161,
}
export class cs_mips {
public op_count: number; // Number of operands of this instruction, or 0 when instruction has no operand.
public operands: cs_mips_op[]; // operands for this instruction.
constructor(arch_info_ptr: number, Memory: any) {
this.operands = [];
this.op_count = Memory.read(arch_info_ptr, 'ubyte');
for (let i = 0; i < this.op_count; i++) {
const op: cs_mips_op = {} as cs_mips_op;
const op_ptr: number = arch_info_ptr + 8 + i * 24;
op.type = Memory.read(op_ptr + 0, 'i32');
switch (op.type) {
case MIPS.OP_REG:
op.reg = Memory.read(op_ptr + 8, 'i32');
break;
case MIPS.OP_IMM:
op.imm = Memory.read(op_ptr + 8, 'long');
break;
case MIPS.OP_MEM:
op.mem = {
base: Memory.read(op_ptr + 8, 'i32'),
disp: Memory.read(op_ptr + 12, 'long'),
};
break;
}
this.operands[i] = op;
}
return this;
}
}