IDAPython 8.4
Loading...
Searching...
No Matches
mop_t Class Reference

Proxy of C++ mop_t class.

Inheritance diagram for mop_t:
mcallarg_t mop_addr_t

Public Member Functions

"void" set_impptr_done (self, *args)
 set_impptr_done(self)
 
"void" set_udt (self, *args)
 set_udt(self)
 
"void" set_undef_val (self, *args)
 set_undef_val(self)
 
"void" set_lowaddr (self, *args)
 set_lowaddr(self)
 
"bool" is_impptr_done (self, *args)
 is_impptr_done(self) -> bool
 
"bool" is_udt (self, *args)
 is_udt(self) -> bool
 
"bool" probably_floating (self, *args)
 probably_floating(self) -> bool
 
"bool" is_undef_val (self, *args)
 is_undef_val(self) -> bool
 
"bool" is_lowaddr (self, *args)
 is_lowaddr(self) -> bool
 
"bool" is_ccflags (self, *args)
 is_ccflags(self) -> bool
 
"bool" is_pcval (self, *args)
 is_pcval(self) -> bool
 
"bool" is_glbaddr_from_fixup (self, *args)
 is_glbaddr_from_fixup(self) -> bool
 
 __init__ (self, *args)
 init(self) -> mop_t init(self, rop) -> mop_t
 
"mop_t &" assign (self, *args)
 assign(self, rop) -> mop_t
 
"void" zero (self, *args)
 zero(self)
 
"void" swap (self, *args)
 swap(self, rop)
 
"void" erase (self, *args)
 erase(self)
 
"void" erase_but_keep_size (self, *args)
 erase_but_keep_size(self)
 
"char const *" dstr (self, *args)
 dstr(self) -> char const *
 
"bool" create_from_mlist (self, *args)
 create_from_mlist(self, mba, lst, fullsize) -> bool Create operand from mlist_t.
 
"bool" create_from_ivlset (self, *args)
 create_from_ivlset(self, mba, ivs, fullsize) -> bool Create operand from ivlset_t.
 
"void" create_from_vdloc (self, *args)
 create_from_vdloc(self, mba, loc, _size) Create operand from vdloc_t.
 
"void" create_from_scattered_vdloc (self, *args)
 create_from_scattered_vdloc(self, mba, name, type, loc) Create operand from scattered vdloc_t.
 
"void" create_from_insn (self, *args)
 create_from_insn(self, m) Create operand from an instruction.
 
"void" make_number (self, *args)
 make_number(self, _value, _size, _ea=BADADDR, opnum=0) Create an integer constant operand.
 
"bool" make_fpnum (self, *args)
 make_fpnum(self, bytes) -> bool Create a floating point constant operand.
 
"void" make_reg (self, *args)
 make_reg(self, reg)
 
"void" make_gvar (self, *args)
 make_gvar(self, ea) Create a global variable operand.
 
"void" make_stkvar (self, *args)
 make_stkvar(self, mba, off)
 
"void" make_reg_pair (self, *args)
 make_reg_pair(self, loreg, hireg, halfsize) Create pair of registers.
 
"void" make_insn (self, *args)
 make_insn(self, ins) Create a nested instruction.
 
"void" make_blkref (self, *args)
 make_blkref(self, blknum) Create a global variable operand.
 
"void" make_helper (self, *args)
 make_helper(self, name) Create a helper operand.
 
"bool" empty (self, *args)
 empty(self) -> bool
 
"bool" is_reg (self, *args)
 is_reg(self) -> bool Is the specified register of the specified size? is_reg(self, _r) -> bool
 
"bool" is_arglist (self, *args)
 is_arglist(self) -> bool Is a list of arguments?
 
"bool" is_cc (self, *args)
 is_cc(self) -> bool Is a condition code?
 
"bool" is_bit_reg (self, *args)
 is_bit_reg(self, reg) -> bool Is a bit register? This includes condition codes and eventually other bit registers
 
"bool" is_kreg (self, *args)
 is_kreg(self) -> bool Is a kernel register?
 
"bool" is_mob (self, *args)
 is_mob(self, serial) -> bool Is a block reference to the specified block?
 
"bool" is_scattered (self, *args)
 is_scattered(self) -> bool Is a scattered operand?
 
"bool" is_glbaddr (self, *args)
 is_glbaddr(self) -> bool Is address of the specified global memory cell? is_glbaddr(self, ea) -> bool
 
"bool" is_stkaddr (self, *args)
 is_stkaddr(self) -> bool Is address of a stack variable?
 
"bool" is_insn (self, *args)
 is_insn(self) -> bool Is a sub-instruction with the specified opcode? is_insn(self, code) -> bool
 
"bool" has_side_effects (self, *args)
 has_side_effects(self, include_ldx_and_divs=False) -> bool Has any side effects?
 
"bool" may_use_aliased_memory (self, *args)
 may_use_aliased_memory(self) -> bool Is it possible for the operand to use aliased memory?
 
"bool" is01 (self, *args)
 is01(self) -> bool 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.
 
"bool" is_sign_extended_from (self, *args)
 is_sign_extended_from(self, nbytes) -> bool Does the high part of the operand consist of the sign bytes?
 
"bool" is_zero_extended_from (self, *args)
 is_zero_extended_from(self, nbytes) -> bool Does the high part of the operand consist of zero bytes?
 
"bool" is_extended_from (self, *args)
 is_extended_from(self, nbytes, is_signed) -> bool Does the high part of the operand consist of zero or sign bytes?
 
"bool" equal_mops (self, *args)
 equal_mops(self, rop, eqflags) -> bool Compare operands.
 
"bool" __eq__ (self, *args)
 eq(self, rop) -> bool
 
"bool" __ne__ (self, *args)
 ne(self, rop) -> bool
 
"bool" __lt__ (self, *args)
 lt(self, rop) -> bool
 
"int" lexcompare (self, *args)
 lexcompare(self, rop) -> int
 
"int" for_all_ops (self, *args)
 for_all_ops(self, mv, type=None, is_target=False) -> int Visit the operand and all its sub-operands.
 
"int" for_all_scattered_submops (self, *args)
 for_all_scattered_submops(self, sv) -> int Visit all sub-operands of a scattered operand.
 
"uint64" value (self, *args)
 value(self, is_signed) -> uint64 Retrieve value of a constant integer operand.
 
"int64" signed_value (self, *args)
 signed_value(self) -> int64
 
"uint64" unsigned_value (self, *args)
 unsigned_value(self) -> uint64
 
"void" update_numop_value (self, *args)
 update_numop_value(self, val)
 
"bool" is_constant (self, *args)
 is_constant(self, is_signed=True) -> bool Retrieve value of a constant integer operand.
 
"bool" is_equal_to (self, *args)
 is_equal_to(self, n, is_signed=True) -> bool
 
"bool" is_zero (self, *args)
 is_zero(self) -> bool
 
"bool" is_one (self, *args)
 is_one(self) -> bool
 
"bool" is_positive_constant (self, *args)
 is_positive_constant(self) -> bool
 
"bool" is_negative_constant (self, *args)
 is_negative_constant(self) -> bool
 
"member_t *" get_stkvar (self, *args)
 get_stkvar(self, p_off) -> member_t * Retrieve the referenced stack variable.
 
"bool" get_stkoff (self, *args)
 get_stkoff(self, p_off) -> bool Get the referenced stack offset.
 
"minsn_t *" get_insn (self, *args)
 get_insn(self, code) -> minsn_t
 
"bool" make_low_half (self, *args)
 make_low_half(self, width) -> bool Make the low part of the operand.
 
"bool" make_high_half (self, *args)
 make_high_half(self, width) -> bool Make the high part of the operand.
 
"bool" make_first_half (self, *args)
 make_first_half(self, width) -> bool Make the first part of the operand.
 
"bool" make_second_half (self, *args)
 make_second_half(self, width) -> bool Make the second part of the operand.
 
"bool" shift_mop (self, *args)
 shift_mop(self, offset) -> bool Shift the operand.
 
"bool" change_size (self, *args)
 change_size(self, nsize, sideff=WITH_SIDEFF) -> bool Change the operand size.
 
"bool" double_size (self, *args)
 double_size(self, sideff=WITH_SIDEFF) -> bool
 
"bool" preserve_side_effects (self, *args)
 preserve_side_effects(self, blk, top, moved_calls=None) -> bool Move subinstructions with side effects out of the operand.
 
"void" apply_ld_mcode (self, *args)
 apply_ld_mcode(self, mcode, ea, newsize) Apply a unary opcode to the operand.
 
"void" apply_xdu (self, *args)
 apply_xdu(self, ea, newsize)
 
"void" apply_xds (self, *args)
 apply_xds(self, ea, newsize)
 
 replace_by (self, o)
 

Protected Member Functions

"void" _print (self, *args)
 _print(self, shins_flags=0x04|0x02)
 
"void" _make_reg (self, *args)
 _make_reg(self, reg)
 
"void" _make_lvar (self, *args)
 _make_lvar(self, mba, idx, off=0)
 
"void" _make_gvar (self, *args)
 _make_gvar(self, ea)
 
"void" _make_stkvar (self, *args)
 _make_stkvar(self, mba, off)
 
"void" _make_insn (self, *args)
 _make_insn(self, ins)
 
"void" _make_blkref (self, *args)
 _make_blkref(self, blknum)
 
"void" _make_strlit (self, *args)
 _make_strlit(self, str)
 
"void" _make_callinfo (self, *args)
 _make_callinfo(self, fi)
 
"void" _make_cases (self, *args)
 _make_cases(self, _cases)
 
"void" _make_pair (self, *args)
 _make_pair(self, _pair)
 
"void" _register (self, *args)
 _register(self)
 
"void" _deregister (self, *args)
 _deregister(self)
 
"mopt_t" _get_t (self, *args)
 _get_t(self) -> mopt_t
 
"void" _set_t (self, *args)
 _set_t(self, v)
 
 _ensure_no_t (self)
 
"PyObject *" _obj_id (self, *args)
 _obj_id(self) -> PyObject *
 
 _ensure_cond (self, ok, cond_str)
 
 _ensure_no_obj (self, o, attr, attr_is_acquired)
 
 _ensure_ownership_transferrable (self, v)
 
 _acquire_ownership (self, v, acquire)
 
 _maybe_disown_and_deregister (self)
 
 _own_and_register (self)
 
 _meminfo (self)
 
"mnumber_t *" _get_nnn (self, *args)
 _get_nnn(self) -> mnumber_t
 
"void" _set_nnn (self, *args)
 _set_nnn(self, _v)
 
"minsn_t *" _get_d (self, *args)
 _get_d(self) -> minsn_t
 
"void" _set_d (self, *args)
 _set_d(self, _v)
 
"stkvar_ref_t *" _get_s (self, *args)
 _get_s(self) -> stkvar_ref_t
 
"void" _set_s (self, *args)
 _set_s(self, _v)
 
"mcallinfo_t *" _get_f (self, *args)
 _get_f(self) -> mcallinfo_t
 
"void" _set_f (self, *args)
 _set_f(self, _v)
 
"lvar_ref_t *" _get_l (self, *args)
 _get_l(self) -> lvar_ref_t
 
"void" _set_l (self, *args)
 _set_l(self, _v)
 
"mop_addr_t *" _get_a (self, *args)
 _get_a(self) -> mop_addr_t
 
"void" _set_a (self, *args)
 _set_a(self, _v)
 
"mcases_t *" _get_c (self, *args)
 _get_c(self) -> mcases_t
 
"void" _set_c (self, *args)
 _set_c(self, _v)
 
"fnumber_t *" _get_fpc (self, *args)
 _get_fpc(self) -> fnumber_t
 
"void" _set_fpc (self, *args)
 _set_fpc(self, _v)
 
"mop_pair_t *" _get_pair (self, *args)
 _get_pair(self) -> mop_pair_t
 
"void" _set_pair (self, *args)
 _set_pair(self, _v)
 
"scif_t *" _get_scif (self, *args)
 _get_scif(self) -> scif_t
 
"void" _set_scif (self, *args)
 _set_scif(self, _v)
 
"mreg_t" _get_r (self, *args)
 _get_r(self) -> mreg_t
 
"void" _set_r (self, *args)
 _set_r(self, _v)
 
"ea_t" _get_g (self, *args)
 _get_g(self) -> ea_t
 
"void" _set_g (self, *args)
 _set_g(self, _v)
 
"int" _get_b (self, *args)
 _get_b(self) -> int
 
"void" _set_b (self, *args)
 _set_b(self, _v)
 
"char const *" _get_cstr (self, *args)
 _get_cstr(self) -> char const *
 
"void" _set_cstr (self, *args)
 _set_cstr(self, _v)
 
"char const *" _get_helper (self, *args)
 _get_helper(self) -> char const *
 
"void" _set_helper (self, *args)
 _set_helper(self, _v)
 

Properties

bool thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
 
str t = property(_ida_hexrays.mop_t_t_get, _ida_hexrays.mop_t_t_set, doc=)
 
 oprops = property(_ida_hexrays.mop_t_oprops_get, _ida_hexrays.mop_t_oprops_set, doc=)
 
 valnum = property(_ida_hexrays.mop_t_valnum_get, _ida_hexrays.mop_t_valnum_set, doc=)
 
 size = property(_ida_hexrays.mop_t_size_get, _ida_hexrays.mop_t_size_set, doc=)
 
 obj_id = property(_obj_id)
 
 meminfo = property(_meminfo)
 
 nnn
 
 d
 
 s
 
 f
 
 l
 
 a
 
 c
 
 fpc
 
 pair
 
 scif
 
 r
 
 g
 
 b
 
 cstr
 
 helper
 

Constructor & Destructor Documentation

◆ __init__()

__init__ ( self,
* args )
Parameters
ropmop_t const &

init(self, _r, _s) -> mop_t

Parameters
_rmreg_t
_sint

Reimplemented in mcallarg_t, and mop_addr_t.

Member Function Documentation

◆ __eq__()

"bool" __eq__ ( self,
* args )
Parameters
ropmop_t const &

◆ __lt__()

"bool" __lt__ ( self,
* args )
Parameters
ropmop_t const &

◆ __ne__()

"bool" __ne__ ( self,
* args )
Parameters
ropmop_t const &

◆ _acquire_ownership()

_acquire_ownership ( self,
v,
acquire )
protected

◆ _deregister()

"void" _deregister ( self,
* args )
protected

◆ _ensure_cond()

_ensure_cond ( self,
ok,
cond_str )
protected

◆ _ensure_no_obj()

_ensure_no_obj ( self,
o,
attr,
attr_is_acquired )
protected

◆ _ensure_no_t()

_ensure_no_t ( self)
protected

◆ _ensure_ownership_transferrable()

_ensure_ownership_transferrable ( self,
v )
protected

◆ _get_a()

"mop_addr_t *" _get_a ( self,
* args )
protected

◆ _get_b()

"int" _get_b ( self,
* args )
protected

◆ _get_c()

"mcases_t *" _get_c ( self,
* args )
protected

◆ _get_cstr()

"char const *" _get_cstr ( self,
* args )
protected

◆ _get_d()

"minsn_t *" _get_d ( self,
* args )
protected

◆ _get_f()

"mcallinfo_t *" _get_f ( self,
* args )
protected

◆ _get_fpc()

"fnumber_t *" _get_fpc ( self,
* args )
protected

◆ _get_g()

"ea_t" _get_g ( self,
* args )
protected

◆ _get_helper()

"char const *" _get_helper ( self,
* args )
protected

◆ _get_l()

"lvar_ref_t *" _get_l ( self,
* args )
protected

◆ _get_nnn()

"mnumber_t *" _get_nnn ( self,
* args )
protected

◆ _get_pair()

"mop_pair_t *" _get_pair ( self,
* args )
protected

◆ _get_r()

"mreg_t" _get_r ( self,
* args )
protected

◆ _get_s()

"stkvar_ref_t *" _get_s ( self,
* args )
protected

◆ _get_scif()

"scif_t *" _get_scif ( self,
* args )
protected

◆ _get_t()

"mopt_t" _get_t ( self,
* args )
protected

◆ _make_blkref()

"void" _make_blkref ( self,
* args )
protected

Parameters

blknum: int

◆ _make_callinfo()

"void" _make_callinfo ( self,
* args )
protected

Parameters

fi: mcallinfo_t *

◆ _make_cases()

"void" _make_cases ( self,
* args )
protected

Parameters

_cases: mcases_t *

◆ _make_gvar()

"void" _make_gvar ( self,
* args )
protected

Parameters

ea: ea_t

◆ _make_insn()

"void" _make_insn ( self,
* args )
protected

Parameters

ins: minsn_t *

◆ _make_lvar()

"void" _make_lvar ( self,
* args )
protected

Parameters

mba: mba_t * idx: int off: sval_t

◆ _make_pair()

"void" _make_pair ( self,
* args )
protected

Parameters

_pair: mop_pair_t *

◆ _make_reg()

"void" _make_reg ( self,
* args )
protected

Parameters

reg: mreg_t

_make_reg(self, reg, _size)

Parameters

reg: mreg_t _size: int

◆ _make_stkvar()

"void" _make_stkvar ( self,
* args )
protected

Parameters

mba: mba_t * off: sval_t

◆ _make_strlit()

"void" _make_strlit ( self,
* args )
protected

Parameters

str: char const *

◆ _maybe_disown_and_deregister()

_maybe_disown_and_deregister ( self)
protected

◆ _meminfo()

_meminfo ( self)
protected

◆ _obj_id()

"PyObject *" _obj_id ( self,
* args )
protected

◆ _own_and_register()

_own_and_register ( self)
protected

◆ _print()

"void" _print ( self,
* args )
protected

Parameters

shins_flags: int

Reimplemented in mcallarg_t.

◆ _register()

"void" _register ( self,
* args )
protected

◆ _set_a()

"void" _set_a ( self,
* args )
protected

Parameters

_v: mop_addr_t *

◆ _set_b()

"void" _set_b ( self,
* args )
protected

Parameters

_v: int

◆ _set_c()

"void" _set_c ( self,
* args )
protected

Parameters

_v: mcases_t *

◆ _set_cstr()

"void" _set_cstr ( self,
* args )
protected

Parameters

_v: char const *

◆ _set_d()

"void" _set_d ( self,
* args )
protected

Parameters

_v: minsn_t *

◆ _set_f()

"void" _set_f ( self,
* args )
protected

Parameters

_v: mcallinfo_t *

◆ _set_fpc()

"void" _set_fpc ( self,
* args )
protected

Parameters

_v: fnumber_t *

◆ _set_g()

"void" _set_g ( self,
* args )
protected

Parameters

_v: ea_t

◆ _set_helper()

"void" _set_helper ( self,
* args )
protected

Parameters

_v: char const *

◆ _set_l()

"void" _set_l ( self,
* args )
protected

Parameters

_v: lvar_ref_t *

◆ _set_nnn()

"void" _set_nnn ( self,
* args )
protected

Parameters

_v: mnumber_t *

◆ _set_pair()

"void" _set_pair ( self,
* args )
protected

Parameters

_v: mop_pair_t *

◆ _set_r()

"void" _set_r ( self,
* args )
protected

Parameters

_v: mreg_t

◆ _set_s()

"void" _set_s ( self,
* args )
protected

Parameters

_v: stkvar_ref_t *

◆ _set_scif()

"void" _set_scif ( self,
* args )
protected

Parameters

_v: scif_t *

◆ _set_t()

"void" _set_t ( self,
* args )
protected

Parameters

v: mopt_t

◆ apply_ld_mcode()

"void" apply_ld_mcode ( self,
* args )
Parameters
mcode(C++: mcode_t) opcode to apply. it must accept 'l' and 'd' operands but not 'r'.
ea(C++: ea_t) value of minsn_t.ea for the newly created insruction
newsize(C++: int) new operand size Example: apply_ld_mcode(m_low) will convert op => low(op)

◆ apply_xds()

"void" apply_xds ( self,
* args )
Parameters
eaea_t
newsizeint

◆ apply_xdu()

"void" apply_xdu ( self,
* args )
Parameters
eaea_t
newsizeint

◆ assign()

"mop_t &" assign ( self,
* args )
Parameters
ropmop_t const &

◆ change_size()

"bool" change_size ( self,
* args )

Examples: change_size(AL.1, 2) -> AX.2 change_size(qword_00000008.8, 4) -> dword_00000008.4 change_size(xdu.8(op.4), 4) -> op.4 change_size(#0x12345678.4, 1) -> #0x78.1

Parameters
nsize(C++: int) new operand size
sideff(C++: side_effect_t) may modify the database because of the size change?
Returns
: success

◆ create_from_insn()

"void" create_from_insn ( self,
* args )

This function creates a nested instruction that can be used as an operand. Example: if m="add x,y,z", our operand will be (t=mop_d,d=m). The destination operand of 'add' (z) is lost.

Parameters
m(C++: const minsn_t *) instruction to embed into operand. may not be nullptr.

◆ create_from_ivlset()

"bool" create_from_ivlset ( self,
* args )

Example: if IVS contains [glbvar..glbvar+4), our operand will be (t=mop_v, g=&glbvar, size=4)

Parameters
mba(C++: mba_t *) pointer to microcode
ivs(C++: const ivlset_t &) set of memory intervals
fullsize(C++: sval_t) mba->fullsize
Returns
: success

◆ create_from_mlist()

"bool" create_from_mlist ( self,
* args )

Example: if LST contains 4 bits for R0.4, our operand will be (t=mop_r, r=R0, size=4)

Parameters
mba(C++: mba_t *) pointer to microcode
lst(C++: const mlist_t &) list of locations
fullsize(C++: sval_t) mba->fullsize
Returns
: success

◆ create_from_scattered_vdloc()

"void" create_from_scattered_vdloc ( self,
* args )

Example: if LOC is (ALOC_DIST, {EAX.4, EDX.4}) and TYPE is _LARGE_INTEGER, our operand will be (t=mop_sc, scif={EAX.4, EDX.4})

Parameters
mba(C++: mba_t *) pointer to microcode
name(C++: const char *) name of the operand, if available
type(C++: tinfo_t) type of the operand, must be present
loc(C++: const vdloc_t &) a scattered location
Returns
: success

◆ create_from_vdloc()

"void" create_from_vdloc ( self,
* args )

Example: if LOC contains (type=ALOC_REG1, r=R0), our operand will be (t=mop_r, r=R0, size=_SIZE)

Parameters
mba(C++: mba_t *) pointer to microcode
loc(C++: const vdloc_t &) location
_size(C++: int) operand size Note: this function cannot handle scattered locations.
Returns
: success

◆ double_size()

"bool" double_size ( self,
* args )
Parameters
sideffenum side_effect_t

◆ dstr()

"char const *" dstr ( self,
* args )

Reimplemented in mcallarg_t.

◆ empty()

"bool" empty ( self,
* args )

◆ equal_mops()

"bool" equal_mops ( self,
* args )

This is the main comparison function for operands.

Parameters
rop(C++: const mop_t &) operand to compare with
eqflags(C++: int) combination of comparison bits bits

◆ erase()

"void" erase ( self,
* args )

◆ erase_but_keep_size()

"void" erase_but_keep_size ( self,
* args )

◆ for_all_ops()

"int" for_all_ops ( self,
* args )

This function visits the current operand as well.

Parameters
mv(C++: mop_visitor_t &) visitor object
type(C++: const tinfo_t *) operand type
is_target(C++: bool) is a destination operand?

◆ for_all_scattered_submops()

"int" for_all_scattered_submops ( self,
* args )

This function does not visit the current operand, only its sub-operands. All sub-operands are synthetic and are destroyed after the visitor. This function works only with scattered operands.

Parameters
sv(C++: scif_visitor_t &) visitor object

◆ get_insn()

"minsn_t *" get_insn ( self,
* args )
Parameters
codeenum mcode_t

◆ get_stkoff()

"bool" get_stkoff ( self,
* args )

This function can also handle mop_sc if it is entirely mapped into a continuous stack region.

Parameters
p_off(C++: sval_t *) the output buffer
Returns
: success

◆ get_stkvar()

"member_t *" get_stkvar ( self,
* args )
Parameters
p_off(C++: uval_t *) if specified, will hold IDA stkoff after the call.
Returns
: pointer to the stack variable

◆ has_side_effects()

"bool" has_side_effects ( self,
* args )
Parameters
include_ldx_and_divs(C++: bool) consider ldx/div/mod as having side effects?

◆ is01()

"bool" is01 ( self,
* args )

◆ is_arglist()

"bool" is_arglist ( self,
* args )

◆ is_bit_reg()

"bool" is_bit_reg ( self,
* args )
Parameters
reg(C++: mreg_t)

is_bit_reg(self) -> bool

◆ is_cc()

"bool" is_cc ( self,
* args )

◆ is_ccflags()

"bool" is_ccflags ( self,
* args )

◆ is_constant()

"bool" is_constant ( self,
* args )
Parameters
is_signed(C++: bool) should treat the value as signed
Returns
: true if the operand is mop_n

◆ is_equal_to()

"bool" is_equal_to ( self,
* args )
Parameters
nuint64
is_signedbool

◆ is_extended_from()

"bool" is_extended_from ( self,
* args )
Parameters
nbytes(C++: int)
is_signed(C++: bool)

◆ is_glbaddr()

"bool" is_glbaddr ( self,
* args )
Parameters
eaea_t

◆ is_glbaddr_from_fixup()

"bool" is_glbaddr_from_fixup ( self,
* args )

◆ is_impptr_done()

"bool" is_impptr_done ( self,
* args )

◆ is_insn()

"bool" is_insn ( self,
* args )
Parameters
codeenum mcode_t

◆ is_kreg()

"bool" is_kreg ( self,
* args )

◆ is_lowaddr()

"bool" is_lowaddr ( self,
* args )

◆ is_mob()

"bool" is_mob ( self,
* args )
Parameters
serial(C++: int)

◆ is_negative_constant()

"bool" is_negative_constant ( self,
* args )

◆ is_one()

"bool" is_one ( self,
* args )

◆ is_pcval()

"bool" is_pcval ( self,
* args )

◆ is_positive_constant()

"bool" is_positive_constant ( self,
* args )

◆ is_reg()

"bool" is_reg ( self,
* args )
Parameters
_rmreg_t

is_reg(self, _r, _size) -> bool

Parameters
_rmreg_t
_sizeint

◆ is_scattered()

"bool" is_scattered ( self,
* args )

◆ is_sign_extended_from()

"bool" is_sign_extended_from ( self,
* args )
Parameters
nbytes(C++: int) number of bytes that were sign extended. the remaining size- nbytes high bytes must be sign bytes Example: is_sign_extended_from(xds.4(op.1), 1) -> true because the high 3 bytes are certainly sign bits

◆ is_stkaddr()

"bool" is_stkaddr ( self,
* args )

◆ is_udt()

"bool" is_udt ( self,
* args )

◆ is_undef_val()

"bool" is_undef_val ( self,
* args )

◆ is_zero()

"bool" is_zero ( self,
* args )

◆ is_zero_extended_from()

"bool" is_zero_extended_from ( self,
* args )
Parameters
nbytes(C++: int) number of bytes that were zero extended. the remaining size- nbytes high bytes must be zero Example: is_zero_extended_from(xdu.8(op.1), 2) -> true because the high 6 bytes are certainly zero

◆ lexcompare()

"int" lexcompare ( self,
* args )
Parameters
ropmop_t const &

Reimplemented in mop_addr_t.

◆ make_blkref()

"void" make_blkref ( self,
* args )
Parameters
blknum(C++: int)

◆ make_first_half()

"bool" make_first_half ( self,
* args )

This function does not care about the memory endianness

Parameters
width(C++: int) the desired size of the operand part in bytes
Returns
: success

◆ make_fpnum()

"bool" make_fpnum ( self,
* args )
Parameters
bytes(C++: const void *) pointer to the floating point value as used by the current processor (e.g. for x86 it must be in IEEE 754)
Returns
: success

◆ make_gvar()

"void" make_gvar ( self,
* args )
Parameters
ea(C++: ea_t)

◆ make_helper()

"void" make_helper ( self,
* args )

A helper operand usually keeps a built-in function name like "va_start" It is essentially just an arbitrary identifier without any additional info.

Parameters
name(C++: const char *) char const *

◆ make_high_half()

"bool" make_high_half ( self,
* args )

This function takes into account the memory endianness (byte sex)

Parameters
width(C++: int) the desired size of the operand part in bytes
Returns
: success

◆ make_insn()

"void" make_insn ( self,
* args )
Parameters
ins(C++: minsn_t *)

◆ make_low_half()

"bool" make_low_half ( self,
* args )

This function takes into account the memory endianness (byte sex)

Parameters
width(C++: int) the desired size of the operand part in bytes
Returns
: success

◆ make_number()

"void" make_number ( self,
* args )
Parameters
_value(C++: uint64) value to store in the operand
_size(C++: int) size of the value in bytes (1,2,4,8)
_ea(C++: ea_t) address of the processor instruction that made the value
opnum(C++: int) operand number of the processor instruction

◆ make_reg()

"void" make_reg ( self,
* args )
Parameters
regmreg_t

make_reg(self, reg, _size)

Parameters
regmreg_t
_sizeint

◆ make_reg_pair()

"void" make_reg_pair ( self,
* args )
Parameters
loreg(C++: int) register holding the low part of the value
hireg(C++: int) register holding the high part of the value
halfsize(C++: int) the size of each of loreg/hireg

◆ make_second_half()

"bool" make_second_half ( self,
* args )

This function does not care about the memory endianness

Parameters
width(C++: int) the desired size of the operand part in bytes
Returns
: success

◆ make_stkvar()

"void" make_stkvar ( self,
* args )
Parameters
mbamba_t *
offsval_t

◆ may_use_aliased_memory()

"bool" may_use_aliased_memory ( self,
* args )

◆ preserve_side_effects()

"bool" preserve_side_effects ( self,
* args )

If we decide to delete an instruction operand, it is a good idea to call this function. Alternatively we should skip such operands by calling mop_t.has_side_effects() For example, if we transform: jnz x, x, @blk => goto @blk then we must call this function before deleting the X operands.

Parameters
blk(C++: mblock_t *) current block
top(C++: minsn_t *) top level instruction that contains our operand
moved_calls(C++: bool *) pointer to the boolean that will track if all side effects get handled correctly. must be false initially.
Returns
: false failed to preserve a side effect, it is not safe to delete the operand true no side effects or successfully preserved them

◆ probably_floating()

"bool" probably_floating ( self,
* args )

◆ replace_by()

replace_by ( self,
o )

◆ set_impptr_done()

"void" set_impptr_done ( self,
* args )

◆ set_lowaddr()

"void" set_lowaddr ( self,
* args )

◆ set_udt()

"void" set_udt ( self,
* args )

◆ set_undef_val()

"void" set_undef_val ( self,
* args )

◆ shift_mop()

"bool" shift_mop ( self,
* args )

This function shifts only the beginning of the operand. The operand size will be changed. Examples: shift_mop(AH.1, -1) -> AX.2 shift_mop(qword_00000008.8, 4) -> dword_0000000C.4 shift_mop(xdu.8(op.4), 4) -> #0.4 shift_mop(#0x12345678.4, 3) -> #12.1

Parameters
offset(C++: int) shift count (the number of bytes to shift)
Returns
: success

◆ signed_value()

"int64" signed_value ( self,
* args )

◆ swap()

"void" swap ( self,
* args )
Parameters
ropmop_t &

◆ unsigned_value()

"uint64" unsigned_value ( self,
* args )

◆ update_numop_value()

"void" update_numop_value ( self,
* args )
Parameters
valuint64

◆ value()

"uint64" value ( self,
* args )

These functions can be called only for mop_n operands. See is_constant() that can be called on any operand.

Parameters
is_signed(C++: bool)

◆ zero()

"void" zero ( self,
* args )

Property Documentation

◆ a

a
static
Initial value:
= property(
lambda self: self._get_a() if self.t == mop_a else None,
lambda self, v: self._ensure_cond(self.t == mop_a,"self.t == mop_a") \
and self._ensure_no_obj(self._get_a(),"a", True) \
and self._acquire_ownership(v, True) \
and self._set_a(v))

◆ b

b
static
Initial value:
= property(
lambda self: self._get_b() if self.t == mop_b else None,
lambda self, v: self._ensure_cond(self.t == mop_b,"self.t == mop_b") and self._set_b(v))

◆ c

c
static
Initial value:
= property(
lambda self: self._get_c() if self.t == mop_c else None,
lambda self, v: self._ensure_cond(self.t == mop_c,"self.t == mop_c") \
and self._ensure_no_obj(self._get_c(),"c", True) \
and self._acquire_ownership(v, True) \
and self._set_c(v))

◆ cstr

cstr
static
Initial value:
= property(
lambda self: self._get_cstr() if self.t == mop_str else None,
lambda self, v: self._ensure_cond(self.t == mop_str,"self.t == mop_str") \
and self._ensure_no_obj(self._get_cstr(),"cstr", False) \
and self._acquire_ownership(v, False) \
and self._set_cstr(v))

◆ d

d
static
Initial value:
= property(
lambda self: self._get_d() if self.t == mop_d else None,
lambda self, v: self._ensure_cond(self.t == mop_d,"self.t == mop_d") \
and self._ensure_no_obj(self._get_d(),"d", True) \
and self._acquire_ownership(v, True) \
and self._set_d(v))

◆ f

f
static
Initial value:
= property(
lambda self: self._get_f() if self.t == mop_f else None,
lambda self, v: self._ensure_cond(self.t == mop_f,"self.t == mop_f") \
and self._ensure_no_obj(self._get_f(),"f", True) \
and self._acquire_ownership(v, True) \
and self._set_f(v))

◆ fpc

fpc
static
Initial value:
= property(
lambda self: self._get_fpc() if self.t == mop_fn else None,
lambda self, v: self._ensure_cond(self.t == mop_fn,"self.t == mop_fn") \
and self._ensure_no_obj(self._get_fpc(),"fpc", True) \
and self._acquire_ownership(v, True) \
and self._set_fpc(v))

◆ g

g
static
Initial value:
= property(
lambda self: self._get_g() if self.t == mop_v else None,
lambda self, v: self._ensure_cond(self.t == mop_v,"self.t == mop_v") and self._set_g(v))

◆ helper

helper
static
Initial value:
= property(
lambda self: self._get_helper() if self.t == mop_h else None,
lambda self, v: self._ensure_cond(self.t == mop_h,"self.t == mop_h") \
and self._ensure_no_obj(self._get_helper(),"helper", False) \
and self._acquire_ownership(v, False) \
and self._set_helper(v))

◆ l

l
static
Initial value:
= property(
lambda self: self._get_l() if self.t == mop_l else None,
lambda self, v: self._ensure_cond(self.t == mop_l,"self.t == mop_l") \
and self._ensure_no_obj(self._get_l(),"l", True) \
and self._acquire_ownership(v, True) \
and self._set_l(v))

◆ meminfo

meminfo = property(_meminfo)
static

◆ nnn

nnn
static
Initial value:
= property(
lambda self: self._get_nnn() if self.t == mop_n else None,
lambda self, v: self._ensure_cond(self.t == mop_n,"self.t == mop_n") \
and self._ensure_no_obj(self._get_nnn(),"nnn", True) \
and self._acquire_ownership(v, True) \
and self._set_nnn(v))

◆ obj_id

obj_id = property(_obj_id)
static

◆ oprops

oprops = property(_ida_hexrays.mop_t_oprops_get, _ida_hexrays.mop_t_oprops_set, doc=)
static

◆ pair

pair
static
Initial value:
= property(
lambda self: self._get_pair() if self.t == mop_p else None,
lambda self, v: self._ensure_cond(self.t == mop_p,"self.t == mop_p") \
and self._ensure_no_obj(self._get_pair(),"pair", True) \
and self._acquire_ownership(v, True) \
and self._set_pair(v))

◆ r

r
static
Initial value:
= property(
lambda self: self._get_r() if self.t == mop_r else None,
lambda self, v: self._ensure_cond(self.t == mop_r,"self.t == mop_r") and self._set_r(v))

◆ s

s
static
Initial value:
= property(
lambda self: self._get_s() if self.t == mop_S else None,
lambda self, v: self._ensure_cond(self.t == mop_S,"self.t == mop_S") \
and self._ensure_no_obj(self._get_s(),"s", True) \
and self._acquire_ownership(v, True) \
and self._set_s(v))

◆ scif

scif
static
Initial value:
= property(
lambda self: self._get_scif() if self.t == mop_sc else None,
lambda self, v: self._ensure_cond(self.t == mop_sc,"self.t == mop_sc") \
and self._ensure_no_obj(self._get_scif(),"scif", True) \
and self._acquire_ownership(v, True) \
and self._set_scif(v))

◆ size

size = property(_ida_hexrays.mop_t_size_get, _ida_hexrays.mop_t_size_set, doc=)
static

◆ t

str t = property(_ida_hexrays.mop_t_t_get, _ida_hexrays.mop_t_t_set, doc=)
static

◆ thisown

bool thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag")
static

◆ valnum

valnum = property(_ida_hexrays.mop_t_valnum_get, _ida_hexrays.mop_t_valnum_set, doc=)
static

The documentation for this class was generated from the following file: