public OPCODE_DESCRIPTOR( UInt64 _groups, MULTI_MNEMONIC _mnemonic, UInt16 _id, INTERNAL_OPERAND[] _ops, int _props, byte _tested_flags, byte _modified_flags, byte _set_flags, byte _cleared_flags, byte _undefined_flags, byte _arch) { groups = _groups; mnemonic = _mnemonic; id = _id; ops = _ops; props = (UInt16)_props; tested_flags = _tested_flags; modified_flags = _modified_flags; set_flags = _set_flags; cleared_flags = _cleared_flags; undefined_flags = _undefined_flags; arch = _arch; }
static UInt32 parse_operand(ulong origin_offset, ulong offset, INTERNAL_OPERAND iop, INSTRUCTION instr, int op_index, INTERNAL_DATA idata, DISMODE mode) { UInt32 res = 0; OPERAND_SIZE opsize = new OPERAND_SIZE(); if (iop.type != TQ_NULL) { instr.ops[op_index].flags |= OPERAND_FLAG_PRESENT; if (iop.size >= sq_handlers.Count()) { idata.severe_err = ERRS.ERR_INTERNAL; } else { sq_handlers[iop.size](ref opsize, ref instr, idata, mode); } if (iop.size >= tq_handlers.Count()) { idata.severe_err = ERRS.ERR_INTERNAL; } else { res = tq_handlers[iop.type](origin_offset, offset, ref instr, op_index, opsize, idata, mode); } } return res; }