Ejemplo n.º 1
0
         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;
         }
Ejemplo n.º 2
0
        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;
        }