Latest available version: IDA and decompilers v8.4.240320sp1 see all releases
Hex-Rays logo State-of-the-art binary code analysis tools
email icon

Address of an operand (mop_l, mop_v, mop_S, mop_r) More...

#include <hexrays.hpp>

Inheritance diagram for mop_addr_t:
mop_t

Public Member Functions

 mop_addr_t (const mop_addr_t &ra)
 
 mop_addr_t (const mop_t &ra, int isz, int osz)
 
mop_addr_toperator= (const mop_addr_t &rop)
 
int lexcompare (const mop_addr_t &ra) const
 
- Public Member Functions inherited from mop_t
void set_impptr_done ()
 
void set_udt ()
 
void set_undef_val ()
 
void set_lowaddr ()
 
bool is_impptr_done () const
 
bool is_udt () const
 
bool probably_floating () const
 
bool is_undef_val () const
 
bool is_lowaddr () const
 
bool is_ccflags () const
 
bool is_pcval () const
 
bool is_glbaddr_from_fixup () const
 
 mop_t (const mop_t &rop)
 
 mop_t (mreg_t _r, int _s)
 
mop_toperator= (const mop_t &rop)
 
mop_tassign (const mop_t &rop)
 
void zero ()
 
void swap (mop_t &rop)
 
void erase ()
 
void erase_but_keep_size ()
 
void print (qstring *vout, int shins_flags=SHINS_SHORT|SHINS_VALNUM) const
 
const char * dstr () const
 
bool create_from_mlist (mba_t *mba, const mlist_t &lst, sval_t fullsize)
 Create operand from mlist_t. More...
 
bool create_from_ivlset (mba_t *mba, const ivlset_t &ivs, sval_t fullsize)
 Create operand from ivlset_t. More...
 
void create_from_vdloc (mba_t *mba, const vdloc_t &loc, int _size)
 Create operand from vdloc_t. More...
 
void create_from_scattered_vdloc (mba_t *mba, const char *name, tinfo_t type, const vdloc_t &loc)
 Create operand from scattered vdloc_t. More...
 
void create_from_insn (const minsn_t *m)
 Create operand from an instruction. More...
 
void make_number (uint64 _value, int _size, ea_t _ea=BADADDR, int opnum=0)
 Create an integer constant operand. More...
 
bool make_fpnum (const void *bytes, size_t _size)
 Create a floating point constant operand. More...
 
void _make_reg (mreg_t reg)
 Create a register operand without erasing previous data. More...
 
void _make_reg (mreg_t reg, int _size)
 
void make_reg (mreg_t reg)
 Create a register operand. More...
 
void make_reg (mreg_t reg, int _size)
 
void _make_lvar (mba_t *mba, int idx, sval_t off=0)
 Create a local variable operand. More...
 
void _make_gvar (ea_t ea)
 Create a global variable operand without erasing previous data. More...
 
void make_gvar (ea_t ea)
 Create a global variable operand. More...
 
void _make_stkvar (mba_t *mba, sval_t off)
 Create a stack variable operand. More...
 
void make_stkvar (mba_t *mba, sval_t off)
 
void make_reg_pair (int loreg, int hireg, int halfsize)
 Create pair of registers. More...
 
void _make_insn (minsn_t *ins)
 Create a nested instruction without erasing previous data. More...
 
void make_insn (minsn_t *ins)
 Create a nested instruction. More...
 
void _make_blkref (int blknum)
 Create a block reference operand without erasing previous data. More...
 
void make_blkref (int blknum)
 Create a global variable operand. More...
 
void make_helper (const char *name)
 Create a helper operand. More...
 
void _make_strlit (const char *str)
 Create a constant string operand. More...
 
void _make_strlit (qstring *str)
 
void _make_callinfo (mcallinfo_t *fi)
 Create a call info operand without erasing previous data. More...
 
void _make_cases (mcases_t *_cases)
 Create a 'switch cases' operand without erasing previous data. More...
 
void _make_pair (mop_pair_t *_pair)
 Create a pair operand without erasing previous data. More...
 
bool empty () const
 
bool is_reg () const
 Is a register operand? See also get_mreg_name() More...
 
bool is_reg (mreg_t _r) const
 Is the specified register? More...
 
bool is_reg (mreg_t _r, int _size) const
 Is the specified register of the specified size? More...
 
bool is_arglist () const
 Is a list of arguments? More...
 
bool is_cc () const
 Is a condition code? More...
 
bool is_bit_reg () const
 
bool is_kreg () const
 Is a kernel register? More...
 
bool is_mob (int serial) const
 Is a block reference to the specified block? More...
 
bool is_scattered () const
 Is a scattered operand? More...
 
bool is_glbaddr () const
 Is address of a global memory cell? More...
 
bool is_glbaddr (ea_t ea) const
 Is address of the specified global memory cell? More...
 
bool is_stkaddr () const
 Is address of a stack variable? More...
 
bool is_insn () const
 Is a sub-instruction? More...
 
bool is_insn (mcode_t code) const
 Is a sub-instruction with the specified opcode? More...
 
bool has_side_effects (bool include_ldx_and_divs=false) const
 Has any side effects? More...
 
bool may_use_aliased_memory () const
 Is it possible for the operand to use aliased memory? More...
 
bool is01 () const
 Are the possible values of the operand only 0 and 1? This function returns true for 0/1 constants, bit registers, the result of 'set' insns, etc. More...
 
bool is_sign_extended_from (int nbytes) const
 Does the high part of the operand consist of the sign bytes? More...
 
bool is_zero_extended_from (int nbytes) const
 Does the high part of the operand consist of zero bytes? More...
 
bool is_extended_from (int nbytes, bool is_signed) const
 Does the high part of the operand consist of zero or sign bytes? More...
 
bool equal_mops (const mop_t &rop, int eqflags) const
 Compare operands. More...
 
bool operator== (const mop_t &rop) const
 
bool operator!= (const mop_t &rop) const
 
bool operator< (const mop_t &rop) const
 Lexographical operand comparison. More...
 
int lexcompare (const mop_t &rop) const
 
int for_all_ops (mop_visitor_t &mv, const tinfo_t *type=nullptr, bool is_target=false)
 Visit the operand and all its sub-operands. More...
 
int for_all_scattered_submops (scif_visitor_t &sv) const
 Visit all sub-operands of a scattered operand. More...
 
uint64 value (bool is_signed) const
 Retrieve value of a constant integer operand. More...
 
int64 signed_value () const
 
uint64 unsigned_value () const
 
void update_numop_value (uint64 val)
 
bool is_constant (uint64 *out=nullptr, bool is_signed=true) const
 Retrieve value of a constant integer operand. More...
 
bool is_equal_to (uint64 n, bool is_signed=true) const
 
bool is_zero () const
 
bool is_one () const
 
bool is_positive_constant () const
 
bool is_negative_constant () const
 
member_t * get_stkvar (uval_t *p_off) const
 Retrieve the referenced stack variable. More...
 
bool get_stkoff (sval_t *p_off) const
 Get the referenced stack offset. More...
 
const minsn_tget_insn (mcode_t code) const
 Get subinstruction of the operand. More...
 
minsn_tget_insn (mcode_t code)
 
bool make_low_half (int width)
 Make the low part of the operand. More...
 
bool make_high_half (int width)
 Make the high part of the operand. More...
 
bool make_first_half (int width)
 Make the first part of the operand. More...
 
bool make_second_half (int width)
 Make the second part of the operand. More...
 
bool shift_mop (int offset)
 Shift the operand. More...
 
bool change_size (int nsize, side_effect_t sideff=WITH_SIDEFF)
 Change the operand size. More...
 
bool double_size (side_effect_t sideff=WITH_SIDEFF)
 
bool preserve_side_effects (mblock_t *blk, minsn_t *top, bool *moved_calls=nullptr)
 Move subinstructions with side effects out of the operand. More...
 
void apply_ld_mcode (mcode_t mcode, ea_t ea, int newsize)
 Apply a unary opcode to the operand. More...
 
void apply_xdu (ea_t ea, int newsize)
 
void apply_xds (ea_t ea, int newsize)
 

Public Attributes

int insize = NOSIZE
 
int outsize = NOSIZE
 
- Public Attributes inherited from mop_t
mopt_t t
 Operand type. More...
 
uint8 oprops
 Operand properties. More...
 
uint16 valnum
 Value number. More...
 
int size
 Operand size. More...
 
union {
   mreg_t   r
 
   mnumber_t *   nnn
 
   minsn_t *   d
 
   stkvar_ref_t *   s
 
   ea_t   g
 
   int   b
 
   mcallinfo_t *   f
 
   lvar_ref_t *   l
 
   mop_addr_t *   a
 
   char *   helper
 
   char *   cstr
 
   mcases_t *   c
 
   fnumber_t *   fpc
 
   mop_pair_t *   pair
 
   scif_t *   scif
 
}; 
 The following union holds additional details about the operand. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from mop_t
static bool is_bit_reg (mreg_t reg)
 Is a bit register? This includes condition codes and eventually other bit registers. More...
 

Detailed Description

Address of an operand (mop_l, mop_v, mop_S, mop_r)

Definition at line 2980 of file hexrays.hpp.

Constructor & Destructor Documentation

◆ mop_addr_t() [1/3]

mop_addr_t::mop_addr_t ( )

Definition at line 2986 of file hexrays.hpp.

◆ mop_addr_t() [2/3]

mop_addr_t::mop_addr_t ( const mop_addr_t ra)

Definition at line 2987 of file hexrays.hpp.

◆ mop_addr_t() [3/3]

mop_addr_t::mop_addr_t ( const mop_t ra,
int  isz,
int  osz 
)

Definition at line 2989 of file hexrays.hpp.

Member Function Documentation

◆ lexcompare()

int mop_addr_t::lexcompare ( const mop_addr_t ra) const

Definition at line 2999 of file hexrays.hpp.

◆ operator=()

mop_addr_t & mop_addr_t::operator= ( const mop_addr_t rop)

Definition at line 2992 of file hexrays.hpp.

Member Data Documentation

◆ insize

int mop_addr_t::insize = NOSIZE

Definition at line 2983 of file hexrays.hpp.

◆ outsize

int mop_addr_t::outsize = NOSIZE

Definition at line 2984 of file hexrays.hpp.