mop_addr_t Class Reference
Address of an operand (mop_l, mop_v, mop_S, mop_r) More...
#include <hexrays.hpp>
Inheritance diagram for mop_addr_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_t & | operator= (const mop_addr_t &rop) |
int | lexcompare (const mop_addr_t &ra) const |
![]() | |
void | set_impptr_done (void) |
void | set_udt (void) |
void | set_undef_val (void) |
void | set_lowaddr (void) |
bool | is_impptr_done (void) const |
bool | is_udt (void) const |
bool | probably_floating (void) const |
bool | is_undef_val (void) const |
bool | is_lowaddr (void) const |
bool | is_ccflags (void) const |
bool | is_pcval (void) const |
bool | is_glbaddr_from_fixup () const |
mop_t (const mop_t &rop) | |
mop_t (mreg_t _r, int _s) | |
mop_t & | operator= (const mop_t &rop) |
mop_t & | assign (const mop_t &rop) |
void | zero () |
void | swap (mop_t &rop) |
void | erase (void) |
void | erase_but_keep_size (void) |
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 (void) const |
bool | is_reg (void) 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 (void) const |
Is a list of arguments? More... | |
bool | is_cc (void) const |
Is a condition code? More... | |
bool | is_bit_reg (void) const |
bool | is_kreg (void) const |
Is a kernel register? More... | |
bool | is_mob (int serial) const |
Is a block reference to the specified block? More... | |
bool | is_scattered (void) 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 (void) 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 (void) const |
Is it possible for the operand to use aliased memory? More... | |
bool | is01 (void) 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 (void) const |
uint64 | unsigned_value (void) 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 (void) const |
bool | is_one (void) const |
bool | is_positive_constant (void) const |
bool | is_negative_constant (void) 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_t * | get_insn (mcode_t code) const |
Get subinstruction of the operand. More... | |
minsn_t * | get_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 |
int | outsize |
![]() | |
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 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 2976 of file hexrays.hpp.
Constructor & Destructor Documentation
◆ mop_addr_t() [1/3]
mop_addr_t::mop_addr_t | ( | ) |
Definition at line 2982 of file hexrays.hpp.
◆ mop_addr_t() [2/3]
mop_addr_t::mop_addr_t | ( | const mop_addr_t & | ra | ) |
Definition at line 2983 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 2985 of file hexrays.hpp.
Member Function Documentation
◆ lexcompare()
int mop_addr_t::lexcompare | ( | const mop_addr_t & | ra | ) | const |
Definition at line 2995 of file hexrays.hpp.
◆ operator=()
mop_addr_t & mop_addr_t::operator= | ( | const mop_addr_t & | rop | ) |
Definition at line 2988 of file hexrays.hpp.
Member Data Documentation
◆ insize
int mop_addr_t::insize |
Definition at line 2979 of file hexrays.hpp.
◆ outsize
int mop_addr_t::outsize |
Definition at line 2980 of file hexrays.hpp.