HexRays SDK header file. More...
Go to the source code of this file.
Classes | |
class | valrng_t |
struct | operand_locator_t |
Operand locator. More... | |
struct | number_format_t |
Number representation. More... | |
struct | vd_printer_t |
Base helper class to convert binary data structures into text. More... | |
struct | vc_printer_t |
Helper class to convert cfunc_t into text. More... | |
struct | file_printer_t |
Helper class to convert binary data structures into text and put into a file. More... | |
struct | qstring_printer_t |
Helper class to convert cfunc_t into a text string. More... | |
class | vdloc_t |
struct | lvar_locator_t |
Local variable locator. More... | |
class | lvar_t |
Definition of a local variable (register or stack) #var #lvar. More... | |
struct | lvars_t |
Vector of local variables. More... | |
struct | lvar_saved_info_t |
Saved user settings for local variables: name, type, comment. More... | |
struct | lvar_uservec_t |
All user-defined information about local variables. More... | |
struct | user_lvar_modifier_t |
Helper class to modify saved local variable settings. More... | |
struct | udcall_t |
User-defined function calls. More... | |
struct | microcode_filter_t |
Generic microcode generator class. More... | |
class | udc_filter_t |
Abstract class: User-defined call generator derived classes should implement method 'match'. More... | |
class | bitset_t |
Bit set class. See https://en.wikipedia.org/wiki/Bit_array. More... | |
class | bitset_t::iterator |
struct | ivl_tpl< T > |
struct | ivl_t |
struct | ivl_with_name_t |
class | ivlset_tpl< Ivl, T > |
struct | ivlset_t |
class | rlist_t |
struct | mlist_t |
struct | optinsn_t |
User defined callback to optimize individual microcode instructions. More... | |
struct | optblock_t |
User defined callback to optimize microcode blocks. More... | |
class | simple_graph_t |
struct | op_parent_info_t |
The context info used by visitors. More... | |
struct | minsn_visitor_t |
Micro instruction visitor. More... | |
struct | mop_visitor_t |
Micro operand visitor. More... | |
struct | scif_visitor_t |
Scattered mop: visit each of the scattered locations as a separate mop. More... | |
struct | mlist_mop_visitor_t |
struct | lvar_ref_t |
Reference to a local variable. Used by mop_l. More... | |
struct | stkvar_ref_t |
Reference to a stack variable. Used for mop_S. More... | |
struct | scif_t |
Scattered operand info. Used for mop_sc. More... | |
struct | mnumber_t |
An integer constant. More... | |
struct | fnumber_t |
Floating point constant. More... | |
class | mop_t |
A microinstruction operand. More... | |
class | mop_pair_t |
Pair of operands. More... | |
class | mop_addr_t |
Address of an operand (mop_l, mop_v, mop_S, mop_r) More... | |
class | mcallarg_t |
A call argument. More... | |
class | mcallinfo_t |
Information about a call. More... | |
class | mcases_t |
List of switch cases and targets. More... | |
struct | voff_t |
Value offset (microregister number or stack offset) More... | |
struct | vivl_t |
Value interval (register or stack range) More... | |
class | chain_t |
ud (use->def) and du (def->use) chain. More... | |
class | block_chains_t |
Chains of one block. More... | |
struct | chain_visitor_t |
Chain visitor class. More... | |
class | graph_chains_t |
class | minsn_t |
Microinstruction class #insn. More... | |
class | mblock_t |
Microcode of one basic block. More... | |
struct | hexwarn_t |
Warning instances. More... | |
struct | mba_ranges_t |
Ranges to decompile. Either a function or an explicit vector of ranges. More... | |
struct | range_item_iterator_t |
Item iterator of arbitrary rangevec items. More... | |
struct | mba_item_iterator_t |
Item iterator for mba_ranges_t. More... | |
struct | range_chunk_iterator_t |
Chunk iterator of arbitrary rangevec items. More... | |
struct | mba_range_iterator_t |
Chunk iterator for mba_ranges_t. More... | |
class | mba_t |
Micro block array (internal representation of the decompiled code). More... | |
class | chain_keeper_t |
Convenience class to release graph chains automatically. More... | |
class | mbl_graph_t |
Control flow graph of microcode. More... | |
struct | cdg_insn_iterator_t |
class | codegen_t |
Helper class to generate the initial microcode. More... | |
struct | hexrays_failure_t |
Exception object: decompiler failure information. More... | |
struct | vd_failure_t |
Exception object: decompiler exception. More... | |
struct | vd_interr_t |
Exception object: decompiler internal error. More... | |
struct | gco_info_t |
Result of get_current_operand() More... | |
struct | cnumber_t |
An immediate number. More... | |
struct | var_ref_t |
Reference to a local variable. More... | |
struct | ctree_visitor_t |
A generic helper class that is used for ctree traversal. More... | |
struct | ctree_parentee_t |
A helper ctree traversal class that maintains parent information. More... | |
struct | cfunc_parentee_t |
Class to traverse the whole function. More... | |
struct | treeloc_t |
Ctree location. Used to denote comment locations. More... | |
struct | citem_cmt_t |
Ctree item comment. More... | |
struct | citem_locator_t |
Generic ctree item locator. More... | |
struct | bit_bound_t |
struct | citem_t |
Basic ctree item. More... | |
struct | cexpr_t |
Ctree item: expression. More... | |
struct | ceinsn_t |
Statement with an expression. More... | |
struct | cif_t |
If statement. More... | |
struct | cloop_t |
Base class for loop statements. More... | |
struct | cfor_t |
For-loop. More... | |
struct | cwhile_t |
While-loop. More... | |
struct | cdo_t |
Do-loop. More... | |
struct | creturn_t |
Return statement. More... | |
struct | cgoto_t |
Goto statement. More... | |
struct | casm_t |
asm statement More... | |
struct | cinsn_t |
Ctree item: statement. More... | |
struct | cblock_t |
Compound statement (curly braces) More... | |
struct | carg_t |
Function argument. More... | |
struct | carglist_t |
Function argument list. More... | |
struct | ccase_t |
Switch case. Usually cinsn_t is a block. More... | |
struct | ccases_t |
Vector of switch cases. More... | |
struct | cswitch_t |
Switch statement. More... | |
struct | ctree_anchor_t |
Invisible COLOR_ADDR tags in the output text are used to refer to ctree items and variables. More... | |
struct | ctree_item_t |
Cursor item. More... | |
struct | cfunc_t |
Decompiled function. Decompilation result is kept here. More... | |
struct | ctext_position_t |
Cursor position in the output text (pseudocode). More... | |
struct | history_item_t |
Navigation history item. More... | |
struct | vdui_t |
Information about the pseudocode window. More... | |
struct | ui_stroff_op_t |
Select UDT for the operands using "Select offsets" widget. More... | |
struct | ui_stroff_applicator_t |
Callback to apply the selection. More... | |
struct | user_numforms_iterator_t |
Iterator class for user_numforms_t. More... | |
struct | lvar_mapping_iterator_t |
struct | udcall_map_iterator_t |
struct | user_cmts_iterator_t |
Iterator class for user_cmts_t. More... | |
struct | user_iflags_iterator_t |
struct | user_unions_iterator_t |
struct | user_labels_iterator_t |
Iterator class for user_labels_t. More... | |
struct | eamap_iterator_t |
struct | boundaries_iterator_t |
struct | block_chains_iterator_t |
Macros | |
#define | hexapi |
Public functions are marked with this keyword. More... | |
#define | MAX_SUPPORTED_STACK_SIZE 0x100000 |
#define | HEXRAYS_PLACEMENT_DELETE void operator delete(void *, void *) {} |
#define | HEXRAYS_MEMORY_ALLOCATION_FUNCS() |
#define | VLR_TYPE 0x0F |
#define | VLR_NONE 0x00 |
#define | VLR_ALL 0x01 |
#define | VLR_IVLS 0x02 |
#define | VLR_RANGE 0x03 |
#define | VLR_SRANGE 0x04 |
#define | VLR_BITS 0x05 |
#define | VLR_SECT 0x06 |
#define | VLR_UNION 0x07 |
#define | VLR_UNK 0x08 |
#define | m_max 0x49 |
#define | NF_FIXED 0x01 |
number format has been defined by the user More... | |
#define | NF_NEGDONE 0x02 |
temporary internal bit: negation has been performed More... | |
#define | NF_BINVDONE 0x04 |
temporary internal bit: inverting bits is done More... | |
#define | NF_NEGATE 0x08 |
The user asked to negate the constant. More... | |
#define | NF_BITNOT 0x10 |
The user asked to invert bits of the constant. More... | |
#define | NF_VALID 0x20 |
internal bit: stroff or enum is valid for enums: this bit is set immediately for stroffs: this bit is set at the end of decompilation More... | |
#define | CVAR_USED 0x00000001 |
is used in the code? More... | |
#define | CVAR_TYPE 0x00000002 |
the type is defined? More... | |
#define | CVAR_NAME 0x00000004 |
has nice name? More... | |
#define | CVAR_MREG 0x00000008 |
corresponding mregs were replaced? More... | |
#define | CVAR_NOWD 0x00000010 |
width is unknown More... | |
#define | CVAR_UNAME 0x00000020 |
user-defined name More... | |
#define | CVAR_UTYPE 0x00000040 |
user-defined type More... | |
#define | CVAR_RESULT 0x00000080 |
function result variable More... | |
#define | CVAR_ARG 0x00000100 |
function argument More... | |
#define | CVAR_FAKE 0x00000200 |
fake variable (return var or va_list) More... | |
#define | CVAR_OVER 0x00000400 |
overlapping variable More... | |
#define | CVAR_FLOAT 0x00000800 |
used in a fpu insn More... | |
#define | CVAR_SPOILED 0x00001000 |
internal flag, do not use: spoiled var More... | |
#define | CVAR_MAPDST 0x00002000 |
other variables are mapped to this var More... | |
#define | CVAR_PARTIAL 0x00004000 |
variable type is partialy defined More... | |
#define | CVAR_THISARG 0x00008000 |
'this' argument of c++ member functions More... | |
#define | CVAR_SPLIT 0x00010000 |
variable was created by an explicit request otherwise we could reuse an existing var More... | |
#define | CVAR_REGNAME 0x00020000 |
has a register name (like _RAX): if lvar is used by an m_ext instruction More... | |
#define | CVAR_NOPTR 0x00040000 |
variable cannot be a pointer (user choice) More... | |
#define | CVAR_DUMMY 0x00080000 |
dummy argument (added to fill a hole in the argument list) More... | |
#define | CVAR_NOTARG 0x00100000 |
variable cannot be an input argument More... | |
#define | CVAR_AUTOMAP 0x00200000 |
variable was automatically mapped More... | |
#define | CVAR_BYREF 0x00400000 |
the address of the variable was taken More... | |
#define | CVAR_INASM 0x00800000 |
variable is used in instructions translated into __asm {...} More... | |
#define | CVAR_UNUSED 0x01000000 |
user-defined __unused attribute meaningful only if: is_arg_var() && !mba->final_type More... | |
#define | CVAR_SHARED 0x02000000 |
variable is mapped to several chains More... | |
#define | SVW_INT 0x00 |
#define | SVW_FLOAT 0x01 |
#define | SVW_SOFT 0x02 |
#define | LVINF_KEEP 0x0001 |
preserve saved user settings regardless of vars for example, if a var loses all its user-defined attributes or even gets destroyed, keep its lvar_saved_info_t. More... | |
#define | LVINF_SPLIT 0x0002 |
split allocation of a new variable. More... | |
#define | LVINF_NOPTR 0x0004 |
variable type should not be a pointer More... | |
#define | LVINF_NOMAP 0x0008 |
forbid automatic mapping of the variable More... | |
#define | LVINF_UNUSED 0x0010 |
unused argument, corresponds to CVAR_UNUSED More... | |
#define | ULV_PRECISE_DEFEA 0x0001 |
Use precise defea's for lvar locations. More... | |
#define | MLI_NAME 0x01 |
apply lvar name More... | |
#define | MLI_TYPE 0x02 |
apply lvar type More... | |
#define | MLI_CMT 0x04 |
apply lvar comment More... | |
#define | MLI_SET_FLAGS 0x08 |
set LVINF_... bits More... | |
#define | MLI_CLR_FLAGS 0x10 |
clear LVINF_... bits More... | |
#define | ALLMEM ivl_t::allmem |
#define | SHINS_NUMADDR 0x01 |
display definition addresses for numbers More... | |
#define | SHINS_VALNUM 0x02 |
display value numbers More... | |
#define | SHINS_SHORT 0x04 |
do not display use-def chains and other attrs More... | |
#define | SHINS_LDXEA 0x08 |
display address of ldx expressions (not used) More... | |
#define | OPROP_IMPDONE 0x01 |
imported operand (a pointer) has been dereferenced More... | |
#define | OPROP_UDT 0x02 |
a struct or union More... | |
#define | OPROP_FLOAT 0x04 |
possibly floating value More... | |
#define | OPROP_CCFLAGS 0x08 |
mop_n: a pc-relative value mop_a: an address obtained from a relocation else: value of a condition code register (like mr_cc) More... | |
#define | OPROP_UDEFVAL 0x10 |
uses undefined value More... | |
#define | OPROP_LOWADDR 0x20 |
a low address offset More... | |
#define | FUNC_NAME_MEMCPY "memcpy" |
#define | FUNC_NAME_WMEMCPY "wmemcpy" |
#define | FUNC_NAME_MEMSET "memset" |
#define | FUNC_NAME_WMEMSET "wmemset" |
#define | FUNC_NAME_MEMSET32 "memset32" |
#define | FUNC_NAME_MEMSET64 "memset64" |
#define | FUNC_NAME_STRCPY "strcpy" |
#define | FUNC_NAME_WCSCPY "wcscpy" |
#define | FUNC_NAME_STRLEN "strlen" |
#define | FUNC_NAME_WCSLEN "wcslen" |
#define | FUNC_NAME_STRCAT "strcat" |
#define | FUNC_NAME_WCSCAT "wcscat" |
#define | FUNC_NAME_TAIL "tail" |
#define | FUNC_NAME_VA_ARG "va_arg" |
#define | FUNC_NAME_EMPTY "$empty" |
#define | FUNC_NAME_PRESENT "$present" |
#define | FUNC_NAME_CONTAINING_RECORD "CONTAINING_RECORD" |
#define | FUNC_NAME_MORESTACK "runtime_morestack" |
#define | MAX_FUNC_ARGS 64 |
#define | FCI_PROP 0x001 |
call has been propagated More... | |
#define | FCI_DEAD 0x002 |
some return registers were determined dead More... | |
#define | FCI_FINAL 0x004 |
call type is final, should not be changed More... | |
#define | FCI_NORET 0x008 |
call does not return More... | |
#define | FCI_PURE 0x010 |
pure function More... | |
#define | FCI_NOSIDE 0x020 |
call does not have side effects More... | |
#define | FCI_SPLOK 0x040 |
spoiled/visible_memory lists have been optimized. More... | |
#define | FCI_HASCALL 0x080 |
A function is an synthetic helper combined from several instructions and at least one of them was a call to a real functions. More... | |
#define | FCI_HASFMT 0x100 |
A variadic function with recognized printf- or scanf-style format string. More... | |
#define | FCI_EXPLOCS 0x400 |
all arglocs are specified explicitly More... | |
#define | CHF_INITED 0x01 |
is chain initialized? (valid only after lvar allocation) More... | |
#define | CHF_REPLACED 0x02 |
chain operands have been replaced? More... | |
#define | CHF_OVER 0x04 |
overlapped chain More... | |
#define | CHF_FAKE 0x08 |
fake chain created by widen_chains() More... | |
#define | CHF_PASSTHRU 0x10 |
pass-thru chain, must use the input variable to the block More... | |
#define | CHF_TERM 0x20 |
terminating chain; the variable does not survive across the block More... | |
#define | SIZEOF_BLOCK_CHAINS 56 |
#define | GCA_EMPTY 0x01 |
include empty chains More... | |
#define | GCA_SPEC 0x02 |
include chains for special registers More... | |
#define | GCA_ALLOC 0x04 |
enumerate only allocated chains More... | |
#define | GCA_NALLOC 0x08 |
enumerate only non-allocated chains More... | |
#define | GCA_OFIRST 0x10 |
consider only chains of the first block More... | |
#define | GCA_OLAST 0x20 |
consider only chains of the last block More... | |
#define | IPROP_OPTIONAL 0x0001 |
optional instruction More... | |
#define | IPROP_PERSIST 0x0002 |
persistent insn; they are not destroyed More... | |
#define | IPROP_WILDMATCH 0x0004 |
match multiple insns More... | |
#define | IPROP_CLNPOP 0x0008 |
the purpose of the instruction is to clean stack (e.g. More... | |
#define | IPROP_FPINSN 0x0010 |
floating point insn More... | |
#define | IPROP_FARCALL 0x0020 |
call of a far function using push cs/call sequence More... | |
#define | IPROP_TAILCALL 0x0040 |
tail call More... | |
#define | IPROP_ASSERT 0x0080 |
assertion: usually mov #val, op. More... | |
#define | IPROP_SPLIT 0x0700 |
the instruction has been split: More... | |
#define | IPROP_SPLIT1 0x0100 |
into 1 byte More... | |
#define | IPROP_SPLIT2 0x0200 |
into 2 bytes More... | |
#define | IPROP_SPLIT4 0x0300 |
into 4 bytes More... | |
#define | IPROP_SPLIT8 0x0400 |
into 8 bytes More... | |
#define | IPROP_COMBINED 0x0800 |
insn has been modified because of a partial reference More... | |
#define | IPROP_EXTSTX 0x1000 |
this is m_ext propagated into m_stx More... | |
#define | IPROP_IGNLOWSRC 0x2000 |
low part of the instruction source operand has been created artificially (this bit is used only for 'and x, 80...') More... | |
#define | IPROP_INV_JX 0x4000 |
inverted conditional jump More... | |
#define | IPROP_WAS_NORET 0x8000 |
was noret icall More... | |
#define | IPROP_MULTI_MOV 0x10000 |
the minsn was generated as part of insn that moves multiple registers (example: STM on ARM may transfer multiple registers) More... | |
#define | IPROP_DONT_PROP 0x20000 |
may not propagate More... | |
#define | IPROP_DONT_COMB 0x40000 |
may not combine this instruction with others More... | |
#define | IPROP_MBARRIER 0x80000 |
this instruction acts as a memory barrier (instructions accessing memory may not be reordered past it) More... | |
#define | IPROP_UNMERGED 0x100000 |
'goto' instruction was transformed info 'call' More... | |
#define | OPTI_ADDREXPRS 0x0001 |
optimize all address expressions (&x+N; &x-&y) More... | |
#define | OPTI_MINSTKREF 0x0002 |
may update minstkref More... | |
#define | OPTI_COMBINSNS 0x0004 |
may combine insns (only for optimize_insn) More... | |
#define | OPTI_NO_LDXOPT 0x0008 |
the function is called after the propagation attempt, we do not optimize low/high(ldx) in this case More... | |
#define | EQ_IGNSIZE 0x0001 |
ignore source operand sizes More... | |
#define | EQ_IGNCODE 0x0002 |
ignore instruction opcodes More... | |
#define | EQ_CMPDEST 0x0004 |
compare instruction destinations More... | |
#define | EQ_OPTINSN 0x0008 |
optimize mop_d operands More... | |
#define | NORET_IGNORE_WAS_NORET_ICALL 0x01 |
#define | NORET_FORBID_ANALYSIS 0x02 |
#define | MAXRANGE bitrange_t(0, USHRT_MAX) |
#define | MBL_PRIV 0x0001 |
private block - no instructions except the specified are accepted (used in patterns) More... | |
#define | MBL_NONFAKE 0x0000 |
regular block More... | |
#define | MBL_FAKE 0x0002 |
fake block More... | |
#define | MBL_GOTO 0x0004 |
this block is a goto target More... | |
#define | MBL_TCAL 0x0008 |
aritifical call block for tail calls More... | |
#define | MBL_PUSH 0x0010 |
needs "convert push/pop instructions" More... | |
#define | MBL_DMT64 0x0020 |
needs "demote 64bits" More... | |
#define | MBL_COMB 0x0040 |
needs "combine" pass More... | |
#define | MBL_PROP 0x0080 |
needs 'propagation' pass More... | |
#define | MBL_DEAD 0x0100 |
needs "eliminate deads" pass More... | |
#define | MBL_LIST 0x0200 |
use/def lists are ready (not dirty) More... | |
#define | MBL_INCONST 0x0400 |
inconsistent lists: we are building them More... | |
#define | MBL_CALL 0x0800 |
call information has been built More... | |
#define | MBL_BACKPROP 0x1000 |
performed backprop_cc More... | |
#define | MBL_NORET 0x2000 |
dead end block: doesn't return execution control More... | |
#define | MBL_DSLOT 0x4000 |
block for delay slot More... | |
#define | MBL_VALRANGES 0x8000 |
should optimize using value ranges More... | |
#define | MBL_KEEP 0x10000 |
do not remove even if unreachable More... | |
#define | FD_BACKWARD 0x0000 |
search direction More... | |
#define | FD_FORWARD 0x0001 |
search direction More... | |
#define | FD_USE 0x0000 |
look for use More... | |
#define | FD_DEF 0x0002 |
look for definition More... | |
#define | FD_DIRTY 0x0004 |
ignore possible implicit definitions by function calls and indirect memory access More... | |
#define | VR_AT_START 0x0000 |
get value ranges before the instruction or at the block start (if M is nullptr) More... | |
#define | VR_AT_END 0x0001 |
get value ranges after the instruction or at the block end, just after the last instruction (if M is nullptr) More... | |
#define | VR_EXACT 0x0002 |
find exact match. More... | |
#define | MBA_PRCDEFS 0x00000001 |
use precise defeas for chain-allocated lvars More... | |
#define | MBA_NOFUNC 0x00000002 |
function is not present, addresses might be wrong More... | |
#define | MBA_PATTERN 0x00000004 |
microcode pattern, callinfo is present More... | |
#define | MBA_LOADED 0x00000008 |
loaded gdl, no instructions (debugging) More... | |
#define | MBA_RETFP 0x00000010 |
function returns floating point value More... | |
#define | MBA_SPLINFO 0x00000020 |
(final_type ? idb_spoiled : spoiled_regs) is valid More... | |
#define | MBA_PASSREGS 0x00000040 |
has mcallinfo_t::pass_regs More... | |
#define | MBA_THUNK 0x00000080 |
thunk function More... | |
#define | MBA_CMNSTK 0x00000100 |
stkvars+stkargs should be considered as one area More... | |
#define | MBA_PREOPT 0x00000200 |
preoptimization stage complete More... | |
#define | MBA_CMBBLK 0x00000400 |
request to combine blocks More... | |
#define | MBA_ASRTOK 0x00000800 |
assertions have been generated More... | |
#define | MBA_CALLS 0x00001000 |
callinfo has been built More... | |
#define | MBA_ASRPROP 0x00002000 |
assertion have been propagated More... | |
#define | MBA_SAVRST 0x00004000 |
save-restore analysis has been performed More... | |
#define | MBA_RETREF 0x00008000 |
return type has been refined More... | |
#define | MBA_GLBOPT 0x00010000 |
microcode has been optimized globally More... | |
#define | MBA_LVARS0 0x00040000 |
lvar pre-allocation has been performed More... | |
#define | MBA_LVARS1 0x00080000 |
lvar real allocation has been performed More... | |
#define | MBA_DELPAIRS 0x00100000 |
pairs have been deleted once More... | |
#define | MBA_CHVARS 0x00200000 |
can verify chain varnums More... | |
#define | MBA_SHORT 0x00400000 |
use short display More... | |
#define | MBA_COLGDL 0x00800000 |
display graph after each reduction More... | |
#define | MBA_INSGDL 0x01000000 |
display instruction in graphs More... | |
#define | MBA_NICE 0x02000000 |
apply transformations to c code More... | |
#define | MBA_REFINE 0x04000000 |
may refine return value size More... | |
#define | MBA_WINGR32 0x10000000 |
use wingraph32 More... | |
#define | MBA_NUMADDR 0x20000000 |
display definition addresses for numbers More... | |
#define | MBA_VALNUM 0x40000000 |
display value numbers More... | |
#define | MBA_INITIAL_FLAGS |
#define | MBA2_LVARNAMES_OK 0x00000001 |
may verify lvar_names? More... | |
#define | MBA2_LVARS_RENAMED 0x00000002 |
accept empty names now? More... | |
#define | MBA2_OVER_CHAINS 0x00000004 |
has overlapped chains? More... | |
#define | MBA2_VALRNG_DONE 0x00000008 |
calculated valranges? More... | |
#define | MBA2_IS_CTR 0x00000010 |
is constructor? More... | |
#define | MBA2_IS_DTR 0x00000020 |
is destructor? More... | |
#define | MBA2_ARGIDX_OK 0x00000040 |
may verify input argument list? More... | |
#define | MBA2_NO_DUP_CALLS 0x00000080 |
forbid multiple calls with the same ea More... | |
#define | MBA2_NO_DUP_LVARS 0x00000100 |
forbid multiple lvars with the same ea More... | |
#define | MBA2_UNDEF_RETVAR 0x00000200 |
return value is undefined More... | |
#define | MBA2_ARGIDX_SORTED 0x00000400 |
args finally sorted according to ABI (e.g. More... | |
#define | MBA2_CODE16_BIT 0x00000800 |
the code16 bit removed More... | |
#define | MBA2_STACK_RETVAL 0x00001000 |
the return value is on the stack More... | |
#define | MBA2_HAS_OUTLINES 0x00002000 |
calls to outlined code have been inlined More... | |
#define | MBA2_NO_FRAME 0x00004000 |
do not use function frame info (only snippet mode) More... | |
#define | MBA2_PROP_COMPLEX 0x00008000 |
allow propagation of more complex variable definitions More... | |
#define | MBA2_DONT_VERIFY 0x80000000 |
Do not verify microcode. More... | |
#define | MBA2_INITIAL_FLAGS (MBA2_LVARNAMES_OK|MBA2_LVARS_RENAMED) |
#define | MBA2_ALL_FLAGS 0x0001FFFF |
#define | NALT_VD 2 |
this index is not used by ida More... | |
#define | LOCOPT_ALL 0x0001 |
redo optimization for all blocks. More... | |
#define | LOCOPT_REFINE 0x0002 |
refine return type, ok to fail More... | |
#define | LOCOPT_REFINE2 0x0004 |
refine return type, try harder More... | |
#define | ACFL_LOCOPT 0x01 |
perform local propagation (requires ACFL_BLKOPT) More... | |
#define | ACFL_BLKOPT 0x02 |
perform interblock transformations More... | |
#define | ACFL_GLBPROP 0x04 |
perform global propagation More... | |
#define | ACFL_GLBDEL 0x08 |
perform dead code eliminition More... | |
#define | ACFL_GUESS 0x10 |
may guess calling conventions More... | |
#define | CPBLK_FAST 0x0000 |
do not update minbstkref and minbargref More... | |
#define | CPBLK_MINREF 0x0001 |
update minbstkref and minbargref More... | |
#define | CPBLK_OPTJMP 0x0002 |
del the jump insn at the end of the block if it becomes useless More... | |
#define | OPF_REUSE 0x00 |
reuse existing window More... | |
#define | OPF_NEW_WINDOW 0x01 |
open new window More... | |
#define | OPF_REUSE_ACTIVE 0x02 |
reuse existing window, only if the currently active widget is a pseudocode view More... | |
#define | OPF_NO_WAIT 0x08 |
do not display waitbox if decompilation happens More... | |
#define | OPF_WINDOW_MGMT_MASK 0x07 |
#define | VDRUN_NEWFILE 0x00000000 |
Create a new file or overwrite existing file. More... | |
#define | VDRUN_APPEND 0x00000001 |
Create a new file or append to existing file. More... | |
#define | VDRUN_ONLYNEW 0x00000002 |
Fail if output file already exists. More... | |
#define | VDRUN_SILENT 0x00000004 |
Silent decompilation. More... | |
#define | VDRUN_SENDIDB 0x00000008 |
Send problematic databases to hex-rays.com. More... | |
#define | VDRUN_MAYSTOP 0x00000010 |
The user can cancel decompilation. More... | |
#define | VDRUN_CMDLINE 0x00000020 |
Called from ida's command line. More... | |
#define | VDRUN_STATS 0x00000040 |
Print statistics into vd_stats.txt. More... | |
#define | VDRUN_LUMINA 0x00000080 |
Use lumina server. More... | |
#define | GCO_STK 0x0000 |
a stack variable More... | |
#define | GCO_REG 0x0001 |
is register? otherwise a stack variable More... | |
#define | GCO_USE 0x0002 |
is source operand? More... | |
#define | GCO_DEF 0x0004 |
is destination operand? More... | |
#define | CV_FAST 0x0000 |
do not maintain parent information More... | |
#define | CV_PRUNE 0x0001 |
this bit is set by visit...() to prune the walk More... | |
#define | CV_PARENTS 0x0002 |
maintain parent information More... | |
#define | CV_POST 0x0004 |
call the leave...() functions More... | |
#define | CV_RESTART 0x0008 |
restart enumeration at the top expr (apply_to_exprs) More... | |
#define | CV_INSNS 0x0010 |
visit only statements, prune all expressions do not use before the final ctree maturity because expressions may contain statements at intermediate stages (see cot_insn). More... | |
#define | EXFL_CPADONE 0x0001 |
pointer arithmetic correction done More... | |
#define | EXFL_LVALUE 0x0002 |
expression is lvalue even if it doesn't look like it More... | |
#define | EXFL_FPOP 0x0004 |
floating point operation More... | |
#define | EXFL_ALONE 0x0008 |
standalone helper More... | |
#define | EXFL_CSTR 0x0010 |
string literal More... | |
#define | EXFL_PARTIAL 0x0020 |
type of the expression is considered partial More... | |
#define | EXFL_UNDEF 0x0040 |
expression uses undefined value More... | |
#define | EXFL_JUMPOUT 0x0080 |
jump out-of-function More... | |
#define | EXFL_VFTABLE 0x0100 |
is ptr to vftable (used for cot_memptr, cot_memref) More... | |
#define | EXFL_ALL 0x01FF |
all currently defined bits More... | |
#define | CFL_FINAL 0x0001 |
call type is final, should not be changed More... | |
#define | CFL_HELPER 0x0002 |
created from a decompiler helper function More... | |
#define | CFL_NORET 0x0004 |
call does not return More... | |
#define | ANCHOR_INDEX 0x1FFFFFFF |
#define | ANCHOR_MASK 0xC0000000 |
#define | ANCHOR_CITEM 0x00000000 |
c-tree item More... | |
#define | ANCHOR_LVAR 0x40000000 |
declaration of local variable More... | |
#define | ANCHOR_ITP 0x80000000 |
item type preciser More... | |
#define | ANCHOR_BLKCMT 0x20000000 |
block comment (for ctree items) More... | |
#define | GLN_CURRENT 0x01 |
get label of the current item More... | |
#define | GLN_GOTO_TARGET 0x02 |
get goto target More... | |
#define | GLN_ALL 0x03 |
get both More... | |
#define | INS_EPILOG ((cinsn_t *)1) |
#define | CIT_COLLAPSED 0x0001 |
display ctree item in collapsed form More... | |
#define | CFS_BOUNDS 0x0001 |
'eamap' and 'boundaries' are ready More... | |
#define | CFS_TEXT 0x0002 |
'sv' is ready (and hdrlines) More... | |
#define | CFS_LVARS_HIDDEN 0x0004 |
local variable definitions are collapsed More... | |
#define | CFS_LOCKED 0x0008 |
cfunc is temporarily locked More... | |
#define | DECOMP_NO_WAIT 0x0001 |
do not display waitbox More... | |
#define | DECOMP_NO_CACHE 0x0002 |
do not use decompilation cache (snippets are never cached) More... | |
#define | DECOMP_NO_FRAME 0x0004 |
do not use function frame info (only snippet mode) More... | |
#define | DECOMP_WARNINGS 0x0008 |
display warnings in the output window More... | |
#define | DECOMP_ALL_BLKS 0x0010 |
generate microcode for unreachable blocks More... | |
#define | DECOMP_NO_HIDE 0x0020 |
do not close display waitbox. see close_hexrays_waitboxes() More... | |
#define | DECOMP_NO_XREFS 0x0040 |
Obsolete. Use DECOMP_GXREFS_NOUPD. More... | |
#define | DECOMP_GXREFS_DEFLT 0x0000 |
the default behavior: do not update the global xrefs cache upon decompile() call, but when the pseudocode text is generated (e.g., through cfunc_t.get_pseudocode()) More... | |
#define | DECOMP_GXREFS_NOUPD 0x0040 |
do not update the global xrefs cache More... | |
#define | DECOMP_GXREFS_FORCE 0x0080 |
update the global xrefs cache immediately More... | |
#define | DECOMP_VOID_MBA 0x0100 |
return empty mba object (to be used with gen_microcode) More... | |
#define | VDUI_VISIBLE 0x0001 |
is visible? More... | |
#define | VDUI_VALID 0x0002 |
is valid? More... | |
Typedefs | |
typedef std::set< voff_t > | voff_set_t |
typedef int | mreg_t |
Micro register. More... | |
typedef std::set< ea_t > | easet_t |
typedef std::set< minsn_t * > | minsn_ptr_set_t |
typedef std::set< qstring > | strings_t |
typedef qvector< minsn_t * > | minsnptrs_t |
typedef qvector< mop_t * > | mopptrs_t |
typedef qvector< mop_t > | mopvec_t |
typedef qvector< uint64 > | uint64vec_t |
typedef qvector< mreg_t > | mregvec_t |
typedef qrefcnt_t< cfunc_t > | cfuncptr_t |
typedef uint64 | uvlr_t |
typedef int64 | svlr_t |
typedef int | maymust_t |
typedef std::map< operand_locator_t, number_format_t > | user_numforms_t |
typedef qvector< lvar_saved_info_t > | lvar_saved_infos_t |
typedef std::map< lvar_locator_t, lvar_locator_t > | lvar_mapping_t |
Local variable mapping (is used to merge variables) More... | |
typedef std::map< ea_t, udcall_t > | udcall_map_t |
typedef size_t | mbitmap_t |
typedef qvector< bitset_t > | array_of_bitsets |
typedef ivl_tpl< uval_t > | uval_ivl_t |
typedef ivlset_tpl< ivl_t, uval_t > | uval_ivl_ivlset_t |
Set of address intervals. More... | |
typedef qvector< ivlset_t > | array_of_ivlsets |
typedef qvector< mlist_t > | mlistvec_t |
typedef uint8 | mopt_t |
Instruction operand types. More... | |
typedef qvector< mcallarg_t > | mcallargs_t |
typedef qvector< block_chains_t > | block_chains_vec_t |
Graph chains. More... | |
typedef qvector< hexwarn_t > | hexwarns_t |
using | mbl_array_t = mba_t |
typedef qvector< citem_t * > | ctree_items_t |
Vector of parents. More... | |
typedef ctree_items_t | parents_t |
typedef std::map< treeloc_t, citem_cmt_t > | user_cmts_t |
typedef std::map< citem_locator_t, int32 > | user_iflags_t |
typedef std::map< ea_t, intvec_t > | user_unions_t |
typedef qvector< cinsn_t * > | cinsnptrvec_t |
Vector of pointers to statements. More... | |
typedef qlist< cinsn_t > | cinsn_list_t |
typedef std::map< int, qstring > | user_labels_t |
typedef std::map< ea_t, cinsnptrvec_t > | eamap_t |
typedef std::map< cinsn_t *, rangeset_t > | boundaries_t |
typedef qvector< cfuncptr_t > | cfuncptrs_t |
typedef void * | hexdsp_t(int code,...) |
Hex-Rays decompiler dispatcher. More... | |
typedef ssize_t | hexrays_cb_t(void *ud, hexrays_event_t event, va_list va) |
Handler of decompiler events. More... | |
typedef qstack< history_item_t > | history_t |
Navigation history. More... | |
typedef int | cmt_type_t |
Comment types. More... | |
typedef qvector< ui_stroff_op_t > | ui_stroff_ops_t |
typedef size_t | iterator_word |
Enumerations | |
enum | { MAX_VLR_SIZE = sizeof(uvlr_t) } |
enum | cmpop_t { CMP_NZ , CMP_Z , CMP_AE , CMP_B , CMP_A , CMP_BE , CMP_GT , CMP_GE , CMP_LT , CMP_LE } |
enum | merror_t { MERR_OK = 0 , MERR_BLOCK = 1 , MERR_INTERR = -1 , MERR_INSN = -2 , MERR_MEM = -3 , MERR_BADBLK = -4 , MERR_BADSP = -5 , MERR_PROLOG = -6 , MERR_SWITCH = -7 , MERR_EXCEPTION = -8 , MERR_HUGESTACK = -9 , MERR_LVARS = -10 , MERR_BITNESS = -11 , MERR_BADCALL = -12 , MERR_BADFRAME = -13 , MERR_UNKTYPE = -14 , MERR_BADIDB = -15 , MERR_SIZEOF = -16 , MERR_REDO = -17 , MERR_CANCELED = -18 , MERR_RECDEPTH = -19 , MERR_OVERLAP = -20 , MERR_PARTINIT = -21 , MERR_COMPLEX = -22 , MERR_LICENSE = -23 , MERR_ONLY32 = -24 , MERR_ONLY64 = -25 , MERR_BUSY = -26 , MERR_FARPTR = -27 , MERR_EXTERN = -28 , MERR_FUNCSIZE = -29 , MERR_BADRANGES = -30 , MERR_BADARCH = -31 , MERR_DSLOT = -32 , MERR_STOP = -33 , MERR_CLOUD = -34 , MERR_MAX_ERR = 34 , MERR_LOOP = -35 } |
enum | mcode_t { m_nop = 0x00 , m_stx = 0x01 , m_ldx = 0x02 , m_ldc = 0x03 , m_mov = 0x04 , m_neg = 0x05 , m_lnot = 0x06 , m_bnot = 0x07 , m_xds = 0x08 , m_xdu = 0x09 , m_low = 0x0A , m_high = 0x0B , m_add = 0x0C , m_sub = 0x0D , m_mul = 0x0E , m_udiv = 0x0F , m_sdiv = 0x10 , m_umod = 0x11 , m_smod = 0x12 , m_or = 0x13 , m_and = 0x14 , m_xor = 0x15 , m_shl = 0x16 , m_shr = 0x17 , m_sar = 0x18 , m_cfadd = 0x19 , m_ofadd = 0x1A , m_cfshl = 0x1B , m_cfshr = 0x1C , m_sets = 0x1D , m_seto = 0x1E , m_setp = 0x1F , m_setnz = 0x20 , m_setz = 0x21 , m_setae = 0x22 , m_setb = 0x23 , m_seta = 0x24 , m_setbe = 0x25 , m_setg = 0x26 , m_setge = 0x27 , m_setl = 0x28 , m_setle = 0x29 , m_jcnd = 0x2A , m_jnz = 0x2B , m_jz = 0x2C , m_jae = 0x2D , m_jb = 0x2E , m_ja = 0x2F , m_jbe = 0x30 , m_jg = 0x31 , m_jge = 0x32 , m_jl = 0x33 , m_jle = 0x34 , m_jtbl = 0x35 , m_ijmp = 0x36 , m_goto = 0x37 , m_call = 0x38 , m_icall = 0x39 , m_ret = 0x3A , m_push = 0x3B , m_pop = 0x3C , m_und = 0x3D , m_ext = 0x3E , m_f2i = 0x3F , m_f2u = 0x40 , m_i2f = 0x41 , m_u2f = 0x42 , m_f2f = 0x43 , m_fneg = 0x44 , m_fadd = 0x45 , m_fsub = 0x46 , m_fmul = 0x47 , m_fdiv = 0x48 } |
enum | type_source_t { GUESSED_NONE , GUESSED_WEAK , GUESSED_FUNC , GUESSED_DATA , TS_NOELL = 0x8000000 , TS_SHRINK = 0x4000000 , TS_DONTREF = 0x2000000 , TS_MASK = 0xE000000 } |
Type source (where the type information comes from) More... | |
enum | side_effect_t { NO_SIDEFF , WITH_SIDEFF , ONLY_SIDEFF , ANY_REGSIZE = 0x80 , ANY_FPSIZE = 0x100 } |
How to handle side effect of change_size() Sometimes we need to create a temporary operand and change its size in order to check some hypothesis. More... | |
enum | funcrole_t { ROLE_UNK , ROLE_EMPTY , ROLE_MEMSET , ROLE_MEMSET32 , ROLE_MEMSET64 , ROLE_MEMCPY , ROLE_STRCPY , ROLE_STRLEN , ROLE_STRCAT , ROLE_TAIL , ROLE_BUG , ROLE_ALLOCA , ROLE_BSWAP , ROLE_PRESENT , ROLE_CONTAINING_RECORD , ROLE_FASTFAIL , ROLE_READFLAGS , ROLE_IS_MUL_OK , ROLE_SATURATED_MUL , ROLE_BITTEST , ROLE_BITTESTANDSET , ROLE_BITTESTANDRESET , ROLE_BITTESTANDCOMPLEMENT , ROLE_VA_ARG , ROLE_VA_COPY , ROLE_VA_START , ROLE_VA_END , ROLE_ROL , ROLE_ROR , ROLE_CFSUB3 , ROLE_OFSUB3 , ROLE_ABS , ROLE_3WAYCMP0 , ROLE_3WAYCMP1 , ROLE_WMEMCPY , ROLE_WMEMSET , ROLE_WCSCPY , ROLE_WCSLEN , ROLE_WCSCAT , ROLE_SSE_CMP4 , ROLE_SSE_CMP8 } |
Function roles. More... | |
enum | mblock_type_t { BLT_NONE = 0 , BLT_STOP = 1 , BLT_0WAY = 2 , BLT_1WAY = 3 , BLT_2WAY = 4 , BLT_NWAY = 5 , BLT_XTRN = 6 } |
Basic block types. More... | |
enum | warnid_t { WARN_VARARG_REGS , WARN_ILL_PURGED , WARN_ILL_FUNCTYPE , WARN_VARARG_TCAL , WARN_VARARG_NOSTK , WARN_VARARG_MANY , WARN_ADDR_OUTARGS , WARN_DEP_UNK_CALLS , WARN_ILL_ELLIPSIS , WARN_GUESSED_TYPE , WARN_EXP_LINVAR , WARN_WIDEN_CHAINS , WARN_BAD_PURGED , WARN_CBUILD_LOOPS , WARN_NO_SAVE_REST , WARN_ODD_INPUT_REG , WARN_ODD_ADDR_USE , WARN_MUST_RET_FP , WARN_ILL_FPU_STACK , WARN_SELFREF_PROP , WARN_WOULD_OVERLAP , WARN_ARRAY_INARG , WARN_MAX_ARGS , WARN_BAD_FIELD_TYPE , WARN_WRITE_CONST , WARN_BAD_RETVAR , WARN_FRAG_LVAR , WARN_HUGE_STKOFF , WARN_UNINITED_REG , WARN_FIXED_MACRO , WARN_WRONG_VA_OFF , WARN_CR_NOFIELD , WARN_CR_BADOFF , WARN_BAD_STROFF , WARN_BAD_VARSIZE , WARN_UNSUPP_REG , WARN_UNALIGNED_ARG , WARN_BAD_STD_TYPE , WARN_BAD_CALL_SP , WARN_MISSED_SWITCH , WARN_BAD_SP , WARN_BAD_STKPNT , WARN_UNDEF_LVAR , WARN_JUMPOUT , WARN_BAD_VALRNG , WARN_BAD_SHADOW , WARN_OPT_VALRNG , WARN_RET_LOCREF , WARN_BAD_MAPDST , WARN_BAD_INSN , WARN_ODD_ABI , WARN_UNBALANCED_STACK , WARN_OPT_VALRNG2 , WARN_OPT_VALRNG3 , WARN_OPT_USELESS_JCND , WARN_MAX } |
Warning ids. More... | |
enum | mba_maturity_t { MMAT_ZERO , MMAT_GENERATED , MMAT_PREOPTIMIZED , MMAT_LOCOPT , MMAT_CALLS , MMAT_GLBOPT1 , MMAT_GLBOPT2 , MMAT_GLBOPT3 , MMAT_LVARS } |
Microcode maturity levels. More... | |
enum | memreg_index_t { MMIDX_GLBLOW , MMIDX_LVARS , MMIDX_RETADDR , MMIDX_SHADOW , MMIDX_ARGS , MMIDX_GLBHIGH } |
< memory region types More... | |
enum | gctype_t { GC_REGS_AND_STKVARS , GC_ASR , GC_XDSU , GC_END , GC_DIRTY_ALL = (1 << (2*GC_END))-1 } |
Kind of use-def and def-use chains. More... | |
enum | ctype_t { cot_empty = 0 , cot_comma = 1 , cot_asg = 2 , cot_asgbor = 3 , cot_asgxor = 4 , cot_asgband = 5 , cot_asgadd = 6 , cot_asgsub = 7 , cot_asgmul = 8 , cot_asgsshr = 9 , cot_asgushr = 10 , cot_asgshl = 11 , cot_asgsdiv = 12 , cot_asgudiv = 13 , cot_asgsmod = 14 , cot_asgumod = 15 , cot_tern = 16 , cot_lor = 17 , cot_land = 18 , cot_bor = 19 , cot_xor = 20 , cot_band = 21 , cot_eq = 22 , cot_ne = 23 , cot_sge = 24 , cot_uge = 25 , cot_sle = 26 , cot_ule = 27 , cot_sgt = 28 , cot_ugt = 29 , cot_slt = 30 , cot_ult = 31 , cot_sshr = 32 , cot_ushr = 33 , cot_shl = 34 , cot_add = 35 , cot_sub = 36 , cot_mul = 37 , cot_sdiv = 38 , cot_udiv = 39 , cot_smod = 40 , cot_umod = 41 , cot_fadd = 42 , cot_fsub = 43 , cot_fmul = 44 , cot_fdiv = 45 , cot_fneg = 46 , cot_neg = 47 , cot_cast = 48 , cot_lnot = 49 , cot_bnot = 50 , cot_ptr = 51 , cot_ref = 52 , cot_postinc = 53 , cot_postdec = 54 , cot_preinc = 55 , cot_predec = 56 , cot_call = 57 , cot_idx = 58 , cot_memref = 59 , cot_memptr = 60 , cot_num = 61 , cot_fnum = 62 , cot_str = 63 , cot_obj = 64 , cot_var = 65 , cot_insn = 66 , cot_sizeof = 67 , cot_helper = 68 , cot_type = 69 , cot_last = cot_type , cit_empty = 70 , cit_block = 71 , cit_expr = 72 , cit_if = 73 , cit_for = 74 , cit_while = 75 , cit_do = 76 , cit_switch = 77 , cit_break = 78 , cit_continue = 79 , cit_return = 80 , cit_goto = 81 , cit_asm = 82 , cit_end } |
Ctree item code. More... | |
enum | ctree_maturity_t { CMAT_ZERO , CMAT_BUILT , CMAT_TRANS1 , CMAT_NICE , CMAT_TRANS2 , CMAT_CPA , CMAT_TRANS3 , CMAT_CASTED , CMAT_FINAL } |
Ctree maturity level. More... | |
enum | item_preciser_t { ITP_EMPTY , ITP_ARG1 , ITP_ARG64 = ITP_ARG1+63 , ITP_BRACE1 , ITP_INNER_LAST = ITP_BRACE1 , ITP_ASM , ITP_ELSE , ITP_DO , ITP_SEMI , ITP_CURLY1 , ITP_CURLY2 , ITP_BRACE2 , ITP_COLON , ITP_BLOCK1 , ITP_BLOCK2 , ITP_CASE = 0x40000000 , ITP_SIGN = 0x20000000 } |
Comment item preciser. More... | |
enum | cmt_retrieval_type_t { RETRIEVE_ONCE , RETRIEVE_ALWAYS } |
Comment retrieval type. More... | |
enum | use_curly_t { CALC_CURLY_BRACES , NO_CURLY_BRACES , USE_CURLY_BRACES } |
Should curly braces be printed? More... | |
enum | cursor_item_type_t { VDI_NONE , VDI_EXPR , VDI_LVAR , VDI_FUNC , VDI_TAIL } |
Type of the cursor item. More... | |
enum | allow_unused_labels_t { FORBID_UNUSED_LABELS = 0 , ALLOW_UNUSED_LABELS = 1 } |
Unused label disposition. More... | |
enum | input_device_t { USE_KEYBOARD = 0 , USE_MOUSE = 1 } |
Type of the input device. More... | |
enum | hexcall_t { hx_user_numforms_begin , hx_user_numforms_end , hx_user_numforms_next , hx_user_numforms_prev , hx_user_numforms_first , hx_user_numforms_second , hx_user_numforms_find , hx_user_numforms_insert , hx_user_numforms_erase , hx_user_numforms_clear , hx_user_numforms_size , hx_user_numforms_free , hx_user_numforms_new , hx_lvar_mapping_begin , hx_lvar_mapping_end , hx_lvar_mapping_next , hx_lvar_mapping_prev , hx_lvar_mapping_first , hx_lvar_mapping_second , hx_lvar_mapping_find , hx_lvar_mapping_insert , hx_lvar_mapping_erase , hx_lvar_mapping_clear , hx_lvar_mapping_size , hx_lvar_mapping_free , hx_lvar_mapping_new , hx_udcall_map_begin , hx_udcall_map_end , hx_udcall_map_next , hx_udcall_map_prev , hx_udcall_map_first , hx_udcall_map_second , hx_udcall_map_find , hx_udcall_map_insert , hx_udcall_map_erase , hx_udcall_map_clear , hx_udcall_map_size , hx_udcall_map_free , hx_udcall_map_new , hx_user_cmts_begin , hx_user_cmts_end , hx_user_cmts_next , hx_user_cmts_prev , hx_user_cmts_first , hx_user_cmts_second , hx_user_cmts_find , hx_user_cmts_insert , hx_user_cmts_erase , hx_user_cmts_clear , hx_user_cmts_size , hx_user_cmts_free , hx_user_cmts_new , hx_user_iflags_begin , hx_user_iflags_end , hx_user_iflags_next , hx_user_iflags_prev , hx_user_iflags_first , hx_user_iflags_second , hx_user_iflags_find , hx_user_iflags_insert , hx_user_iflags_erase , hx_user_iflags_clear , hx_user_iflags_size , hx_user_iflags_free , hx_user_iflags_new , hx_user_unions_begin , hx_user_unions_end , hx_user_unions_next , hx_user_unions_prev , hx_user_unions_first , hx_user_unions_second , hx_user_unions_find , hx_user_unions_insert , hx_user_unions_erase , hx_user_unions_clear , hx_user_unions_size , hx_user_unions_free , hx_user_unions_new , hx_user_labels_begin , hx_user_labels_end , hx_user_labels_next , hx_user_labels_prev , hx_user_labels_first , hx_user_labels_second , hx_user_labels_find , hx_user_labels_insert , hx_user_labels_erase , hx_user_labels_clear , hx_user_labels_size , hx_user_labels_free , hx_user_labels_new , hx_eamap_begin , hx_eamap_end , hx_eamap_next , hx_eamap_prev , hx_eamap_first , hx_eamap_second , hx_eamap_find , hx_eamap_insert , hx_eamap_erase , hx_eamap_clear , hx_eamap_size , hx_eamap_free , hx_eamap_new , hx_boundaries_begin , hx_boundaries_end , hx_boundaries_next , hx_boundaries_prev , hx_boundaries_first , hx_boundaries_second , hx_boundaries_find , hx_boundaries_insert , hx_boundaries_erase , hx_boundaries_clear , hx_boundaries_size , hx_boundaries_free , hx_boundaries_new , hx_block_chains_begin , hx_block_chains_end , hx_block_chains_next , hx_block_chains_prev , hx_block_chains_get , hx_block_chains_find , hx_block_chains_insert , hx_block_chains_erase , hx_block_chains_clear , hx_block_chains_size , hx_block_chains_free , hx_block_chains_new , hx_valrng_t_clear , hx_valrng_t_copy , hx_valrng_t_assign , hx_valrng_t_compare , hx_valrng_t_set_eq , hx_valrng_t_set_cmp , hx_valrng_t_reduce_size , hx_valrng_t_intersect_with , hx_valrng_t_unite_with , hx_valrng_t_inverse , hx_valrng_t_has , hx_valrng_t_print , hx_valrng_t_dstr , hx_valrng_t_cvt_to_single_value , hx_valrng_t_cvt_to_cmp , hx_get_merror_desc , hx_reg2mreg , hx_mreg2reg , hx_install_optinsn_handler , hx_remove_optinsn_handler , hx_install_optblock_handler , hx_remove_optblock_handler , hx_must_mcode_close_block , hx_is_mcode_propagatable , hx_negate_mcode_relation , hx_swap_mcode_relation , hx_get_signed_mcode , hx_get_unsigned_mcode , hx_mcode_modifies_d , hx_operand_locator_t_compare , hx_vd_printer_t_print , hx_file_printer_t_print , hx_qstring_printer_t_print , hx_dstr , hx_is_type_correct , hx_is_small_udt , hx_is_nonbool_type , hx_is_bool_type , hx_partial_type_num , hx_get_float_type , hx_get_int_type_by_width_and_sign , hx_get_unk_type , hx_dummy_ptrtype , hx_get_member_type , hx_make_pointer , hx_create_typedef , hx_get_type , hx_set_type , hx_vdloc_t_dstr , hx_vdloc_t_compare , hx_vdloc_t_is_aliasable , hx_print_vdloc , hx_arglocs_overlap , hx_lvar_locator_t_compare , hx_lvar_locator_t_dstr , hx_lvar_t_dstr , hx_lvar_t_is_promoted_arg , hx_lvar_t_accepts_type , hx_lvar_t_set_lvar_type , hx_lvar_t_set_width , hx_lvar_t_append_list_ , hx_lvars_t_find_stkvar , hx_lvars_t_find , hx_lvars_t_find_lvar , hx_restore_user_lvar_settings , hx_save_user_lvar_settings , hx_modify_user_lvars , hx_restore_user_defined_calls , hx_save_user_defined_calls , hx_parse_user_call , hx_convert_to_user_call , hx_install_microcode_filter , hx_udc_filter_t_init , hx_udc_filter_t_apply , hx_bitset_t_bitset_t , hx_bitset_t_copy , hx_bitset_t_add , hx_bitset_t_add_ , hx_bitset_t_add__ , hx_bitset_t_sub , hx_bitset_t_sub_ , hx_bitset_t_sub__ , hx_bitset_t_cut_at , hx_bitset_t_shift_down , hx_bitset_t_has , hx_bitset_t_has_all , hx_bitset_t_has_any , hx_bitset_t_dstr , hx_bitset_t_empty , hx_bitset_t_count , hx_bitset_t_count_ , hx_bitset_t_last , hx_bitset_t_fill_with_ones , hx_bitset_t_has_common , hx_bitset_t_intersect , hx_bitset_t_is_subset_of , hx_bitset_t_compare , hx_bitset_t_goup , hx_ivl_t_dstr , hx_ivl_t_compare , hx_ivlset_t_add , hx_ivlset_t_add_ , hx_ivlset_t_addmasked , hx_ivlset_t_sub , hx_ivlset_t_sub_ , hx_ivlset_t_has_common , hx_ivlset_t_print , hx_ivlset_t_dstr , hx_ivlset_t_count , hx_ivlset_t_has_common_ , hx_ivlset_t_contains , hx_ivlset_t_includes , hx_ivlset_t_intersect , hx_ivlset_t_compare , hx_get_mreg_name , hx_rlist_t_print , hx_rlist_t_dstr , hx_mlist_t_addmem , hx_mlist_t_print , hx_mlist_t_dstr , hx_mlist_t_compare , hx_lvar_ref_t_compare , hx_lvar_ref_t_var , hx_stkvar_ref_t_compare , hx_stkvar_ref_t_get_stkvar , hx_fnumber_t_print , hx_fnumber_t_dstr , hx_mop_t_copy , hx_mop_t_assign , hx_mop_t_swap , hx_mop_t_erase , hx_mop_t_print , hx_mop_t_dstr , hx_mop_t_create_from_mlist , hx_mop_t_create_from_ivlset , hx_mop_t_create_from_vdloc , hx_mop_t_create_from_scattered_vdloc , hx_mop_t_create_from_insn , hx_mop_t_make_number , hx_mop_t_make_fpnum , hx_mop_t_make_reg_pair , hx_mop_t_make_helper , hx_mop_t_is_bit_reg , hx_mop_t_may_use_aliased_memory , hx_mop_t_is01 , hx_mop_t_is_sign_extended_from , hx_mop_t_is_zero_extended_from , hx_mop_t_equal_mops , hx_mop_t_lexcompare , hx_mop_t_for_all_ops , hx_mop_t_for_all_scattered_submops , hx_mop_t_is_constant , hx_mop_t_get_stkoff , hx_mop_t_make_low_half , hx_mop_t_make_high_half , hx_mop_t_make_first_half , hx_mop_t_make_second_half , hx_mop_t_shift_mop , hx_mop_t_change_size , hx_mop_t_preserve_side_effects , hx_mop_t_apply_ld_mcode , hx_mcallarg_t_print , hx_mcallarg_t_dstr , hx_mcallarg_t_set_regarg , hx_mcallinfo_t_lexcompare , hx_mcallinfo_t_set_type , hx_mcallinfo_t_get_type , hx_mcallinfo_t_print , hx_mcallinfo_t_dstr , hx_mcases_t_compare , hx_mcases_t_print , hx_mcases_t_dstr , hx_vivl_t_extend_to_cover , hx_vivl_t_intersect , hx_vivl_t_print , hx_vivl_t_dstr , hx_chain_t_print , hx_chain_t_dstr , hx_chain_t_append_list_ , hx_block_chains_t_get_chain , hx_block_chains_t_print , hx_block_chains_t_dstr , hx_graph_chains_t_for_all_chains , hx_graph_chains_t_release , hx_minsn_t_init , hx_minsn_t_copy , hx_minsn_t_swap , hx_minsn_t_print , hx_minsn_t_dstr , hx_minsn_t_setaddr , hx_minsn_t_optimize_subtree , hx_minsn_t_for_all_ops , hx_minsn_t_for_all_insns , hx_minsn_t__make_nop , hx_minsn_t_equal_insns , hx_minsn_t_lexcompare , hx_minsn_t_is_noret_call , hx_minsn_t_is_helper , hx_minsn_t_find_call , hx_minsn_t_has_side_effects , hx_minsn_t_find_opcode , hx_minsn_t_find_ins_op , hx_minsn_t_find_num_op , hx_minsn_t_modifies_d , hx_minsn_t_is_between , hx_minsn_t_may_use_aliased_memory , hx_getf_reginsn , hx_getb_reginsn , hx_mblock_t_init , hx_mblock_t_print , hx_mblock_t_dump , hx_mblock_t_vdump_block , hx_mblock_t_insert_into_block , hx_mblock_t_remove_from_block , hx_mblock_t_for_all_insns , hx_mblock_t_for_all_ops , hx_mblock_t_for_all_uses , hx_mblock_t_optimize_insn , hx_mblock_t_optimize_block , hx_mblock_t_build_lists , hx_mblock_t_append_use_list , hx_mblock_t_append_def_list , hx_mblock_t_build_use_list , hx_mblock_t_build_def_list , hx_mblock_t_find_first_use , hx_mblock_t_find_redefinition , hx_mblock_t_is_rhs_redefined , hx_mblock_t_find_access , hx_mblock_t_get_valranges , hx_mba_t_idaloc2vd , hx_mba_t_vd2idaloc , hx_mba_t_term , hx_mba_t_optimize_local , hx_mba_t_build_graph , hx_mba_t_get_graph , hx_mba_t_analyze_calls , hx_mba_t_optimize_global , hx_mba_t_alloc_lvars , hx_mba_t_dump , hx_mba_t_vdump_mba , hx_mba_t_print , hx_mba_t_verify , hx_mba_t_mark_chains_dirty , hx_mba_t_insert_block , hx_mba_t_remove_block , hx_mba_t_remove_empty_and_unreachable_blocks , hx_mba_t_combine_blocks , hx_mba_t_for_all_ops , hx_mba_t_for_all_insns , hx_mba_t_for_all_topinsns , hx_mba_t_find_mop , hx_mba_t_arg , hx_mba_t_serialize , hx_mba_t_deserialize , hx_mbl_graph_t_is_accessed_globally , hx_mbl_graph_t_get_ud , hx_mbl_graph_t_get_du , hx_codegen_t_emit , hx_codegen_t_emit_ , hx_is_kreg , hx_get_temp_regs , hx_get_hexrays_version , hx_open_pseudocode , hx_close_pseudocode , hx_get_widget_vdui , hx_decompile_many , hx_hexrays_failure_t_desc , hx_send_database , hx_gco_info_t_append_to_list , hx_get_current_operand , hx_remitem , hx_negated_relation , hx_swapped_relation , hx_get_op_signness , hx_asgop , hx_asgop_revert , hx_cnumber_t_print , hx_cnumber_t_value , hx_cnumber_t_assign , hx_cnumber_t_compare , hx_var_ref_t_compare , hx_ctree_visitor_t_apply_to , hx_ctree_visitor_t_apply_to_exprs , hx_ctree_parentee_t_recalc_parent_types , hx_cfunc_parentee_t_calc_rvalue_type , hx_citem_locator_t_compare , hx_citem_t_contains_expr , hx_citem_t_contains_label , hx_citem_t_find_parent_of , hx_citem_t_find_closest_addr , hx_cexpr_t_assign , hx_cexpr_t_compare , hx_cexpr_t_replace_by , hx_cexpr_t_cleanup , hx_cexpr_t_put_number , hx_cexpr_t_print1 , hx_cexpr_t_calc_type , hx_cexpr_t_equal_effect , hx_cexpr_t_is_child_of , hx_cexpr_t_contains_operator , hx_cexpr_t_get_high_nbit_bound , hx_cexpr_t_get_low_nbit_bound , hx_cexpr_t_requires_lvalue , hx_cexpr_t_has_side_effects , hx_cif_t_assign , hx_cif_t_compare , hx_cloop_t_assign , hx_cfor_t_compare , hx_cwhile_t_compare , hx_cdo_t_compare , hx_creturn_t_compare , hx_cgoto_t_compare , hx_casm_t_compare , hx_cinsn_t_assign , hx_cinsn_t_compare , hx_cinsn_t_replace_by , hx_cinsn_t_cleanup , hx_cinsn_t_new_insn , hx_cinsn_t_create_if , hx_cinsn_t_print , hx_cinsn_t_print1 , hx_cinsn_t_is_ordinary_flow , hx_cinsn_t_contains_insn , hx_cinsn_t_collect_free_breaks , hx_cinsn_t_collect_free_continues , hx_cblock_t_compare , hx_carglist_t_compare , hx_ccase_t_compare , hx_ccases_t_compare , hx_cswitch_t_compare , hx_ctree_item_t_get_memptr , hx_ctree_item_t_get_lvar , hx_ctree_item_t_get_ea , hx_ctree_item_t_get_label_num , hx_lnot , hx_new_block , hx_vcreate_helper , hx_vcall_helper , hx_make_num , hx_make_ref , hx_dereference , hx_save_user_labels , hx_save_user_cmts , hx_save_user_numforms , hx_save_user_iflags , hx_save_user_unions , hx_restore_user_labels , hx_restore_user_cmts , hx_restore_user_numforms , hx_restore_user_iflags , hx_restore_user_unions , hx_cfunc_t_build_c_tree , hx_cfunc_t_verify , hx_cfunc_t_print_dcl , hx_cfunc_t_print_func , hx_cfunc_t_get_func_type , hx_cfunc_t_get_lvars , hx_cfunc_t_get_stkoff_delta , hx_cfunc_t_find_label , hx_cfunc_t_remove_unused_labels , hx_cfunc_t_get_user_cmt , hx_cfunc_t_set_user_cmt , hx_cfunc_t_get_user_iflags , hx_cfunc_t_set_user_iflags , hx_cfunc_t_has_orphan_cmts , hx_cfunc_t_del_orphan_cmts , hx_cfunc_t_get_user_union_selection , hx_cfunc_t_set_user_union_selection , hx_cfunc_t_get_line_item , hx_cfunc_t_get_warnings , hx_cfunc_t_get_eamap , hx_cfunc_t_get_boundaries , hx_cfunc_t_get_pseudocode , hx_cfunc_t_gather_derefs , hx_cfunc_t_find_item_coords , hx_cfunc_t_cleanup , hx_decompile , hx_gen_microcode , hx_mark_cfunc_dirty , hx_clear_cached_cfuncs , hx_has_cached_cfunc , hx_get_ctype_name , hx_create_field_name , hx_install_hexrays_callback , hx_remove_hexrays_callback , hx_vdui_t_set_locked , hx_vdui_t_refresh_view , hx_vdui_t_refresh_ctext , hx_vdui_t_switch_to , hx_vdui_t_get_number , hx_vdui_t_get_current_label , hx_vdui_t_clear , hx_vdui_t_refresh_cpos , hx_vdui_t_get_current_item , hx_vdui_t_ui_rename_lvar , hx_vdui_t_rename_lvar , hx_vdui_t_ui_set_call_type , hx_vdui_t_ui_set_lvar_type , hx_vdui_t_set_lvar_type , hx_vdui_t_ui_edit_lvar_cmt , hx_vdui_t_set_lvar_cmt , hx_vdui_t_ui_map_lvar , hx_vdui_t_ui_unmap_lvar , hx_vdui_t_map_lvar , hx_vdui_t_set_strmem_type , hx_vdui_t_rename_strmem , hx_vdui_t_set_global_type , hx_vdui_t_rename_global , hx_vdui_t_rename_label , hx_vdui_t_jump_enter , hx_vdui_t_ctree_to_disasm , hx_vdui_t_calc_cmt_type , hx_vdui_t_edit_cmt , hx_vdui_t_edit_func_cmt , hx_vdui_t_del_orphan_cmts , hx_vdui_t_set_num_radix , hx_vdui_t_set_num_enum , hx_vdui_t_set_num_stroff , hx_vdui_t_invert_sign , hx_vdui_t_invert_bits , hx_vdui_t_collapse_item , hx_vdui_t_collapse_lvars , hx_vdui_t_split_item , hx_hexrays_alloc , hx_hexrays_free , hx_vdui_t_set_noptr_lvar , hx_select_udt_by_offset , hx_mblock_t_get_valranges_ , hx_cfunc_t_refresh_func_ctext , hx_checkout_hexrays_license , hx_mba_t_copy_block , hx_mblock_t_optimize_useless_jump , hx_mblock_t_get_reginsn_qty , hx_modify_user_lvar_info , hx_cdg_insn_iterator_t_next , hx_restore_user_labels2 , hx_save_user_labels2 , hx_mba_ranges_t_range_contains , hx_close_hexrays_waitbox , hx_mba_t_map_fict_ea , hx_mba_t_alloc_fict_ea , hx_mba_t_alloc_kreg , hx_mba_t_free_kreg , hx_mba_t_idaloc2vd_ , hx_mba_t_vd2idaloc_ , hx_bitset_t_fill_gaps , hx_cfunc_t_save_user_labels , hx_cfunc_t_save_user_cmts , hx_cfunc_t_save_user_numforms , hx_cfunc_t_save_user_iflags , hx_cfunc_t_save_user_unions , hx_minsn_t_set_combined , hx_mba_t_save_snapshot , hx_create_cfunc , hx_mba_t_set_maturity , hx_rename_lvar , hx_locate_lvar , hx_mba_t_create_helper_call , hx_lvar_t_append_list , hx_chain_t_append_list , hx_udc_filter_t_cleanup , hx_mba_t_get_curfunc , hx_mop_t__make_gvar , hx_mop_t_make_gvar , hx_cexpr_t_maybe_ptr , hx_minsn_t_serialize , hx_minsn_t_deserialize , hx_mba_t_stkoff_vd2ida , hx_mba_t_stkoff_ida2vd , hx_cexpr_t_dstr , hx_cinsn_t_dstr , hx_ctree_item_t_print , hx_ctree_item_t_dstr , hx_mba_t_set_lvar_name , hx_change_hexrays_config , hx_mba_t_get_func_output_lists , hx_vdui_t_rename_udm , hx_vdui_t_set_udm_type , hx_ctree_item_t_get_udm , hx_ctree_item_t_get_edm } |
API call numbers. More... | |
Functions | |
void * | hexrays_alloc (size_t size) |
void | hexrays_free (void *ptr) |
DECLARE_TYPE_AS_MOVABLE (valrng_t) | |
THREAD_SAFE bool | is_may_access (maymust_t maymust) |
ea_t | get_merror_desc (qstring *out, merror_t code, mba_t *mba) |
Get textual description of an error code. More... | |
THREAD_SAFE bool | must_mcode_close_block (mcode_t mcode, bool including_calls) |
Must an instruction with the given opcode be the last one in a block? Such opcodes are called closing opcodes. More... | |
THREAD_SAFE bool | is_mcode_propagatable (mcode_t mcode) |
May opcode be propagated? Such opcodes can be used in sub-instructions (nested instructions) There is a handful of non-propagatable opcodes, like jumps, ret, nop, etc All other regular opcodes are propagatable and may appear in a nested instruction. More... | |
THREAD_SAFE bool | is_mcode_addsub (mcode_t mcode) |
THREAD_SAFE bool | is_mcode_xdsu (mcode_t mcode) |
THREAD_SAFE bool | is_mcode_set (mcode_t mcode) |
THREAD_SAFE bool | is_mcode_set1 (mcode_t mcode) |
THREAD_SAFE bool | is_mcode_j1 (mcode_t mcode) |
THREAD_SAFE bool | is_mcode_jcond (mcode_t mcode) |
THREAD_SAFE bool | is_mcode_convertible_to_jmp (mcode_t mcode) |
THREAD_SAFE bool | is_mcode_convertible_to_set (mcode_t mcode) |
THREAD_SAFE bool | is_mcode_call (mcode_t mcode) |
THREAD_SAFE bool | is_mcode_fpu (mcode_t mcode) |
THREAD_SAFE bool | is_mcode_commutative (mcode_t mcode) |
THREAD_SAFE bool | is_mcode_shift (mcode_t mcode) |
THREAD_SAFE bool | is_mcode_divmod (mcode_t op) |
THREAD_SAFE bool | has_mcode_seloff (mcode_t op) |
THREAD_SAFE mcode_t | set2jcnd (mcode_t code) |
THREAD_SAFE mcode_t | jcnd2set (mcode_t code) |
THREAD_SAFE mcode_t | negate_mcode_relation (mcode_t code) |
THREAD_SAFE mcode_t | swap_mcode_relation (mcode_t code) |
THREAD_SAFE mcode_t | get_signed_mcode (mcode_t code) |
THREAD_SAFE mcode_t | get_unsigned_mcode (mcode_t code) |
THREAD_SAFE bool | is_signed_mcode (mcode_t code) |
THREAD_SAFE bool | is_unsigned_mcode (mcode_t code) |
THREAD_SAFE bool | mcode_modifies_d (mcode_t mcode) |
const char * | dstr (const tinfo_t *tif) |
Print the specified type info. More... | |
bool | is_type_correct (const type_t *ptr) |
Verify a type string. More... | |
bool | is_small_udt (const tinfo_t &tif) |
Is a small structure or union? More... | |
bool | is_nonbool_type (const tinfo_t &type) |
Is definitely a non-boolean type? More... | |
bool | is_bool_type (const tinfo_t &type) |
Is a boolean type? More... | |
THREAD_SAFE bool | is_ptr_or_array (type_t t) |
Is a pointer or array type? More... | |
THREAD_SAFE bool | is_paf (type_t t) |
Is a pointer, array, or function type? More... | |
THREAD_SAFE bool | is_inplace_def (const tinfo_t &type) |
Is struct/union/enum definition (not declaration)? More... | |
int | partial_type_num (const tinfo_t &type) |
Calculate number of partial subtypes. More... | |
tinfo_t | get_float_type (int width) |
Get a type of a floating point value with the specified width. More... | |
tinfo_t | get_int_type_by_width_and_sign (int srcwidth, type_sign_t sign) |
Create a type info by width and sign. More... | |
tinfo_t | get_unk_type (int size) |
Create a partial type info by width. More... | |
tinfo_t | dummy_ptrtype (int ptrsize, bool isfp) |
Generate a dummy pointer type. More... | |
bool | get_member_type (const member_t *mptr, tinfo_t *type) |
Get type of a structure field. More... | |
tinfo_t | make_pointer (const tinfo_t &type) |
Create a pointer type. More... | |
tinfo_t | create_typedef (const char *name) |
Create a reference to a named type. More... | |
tinfo_t | create_typedef (int n) |
Create a reference to an ordinal type. More... | |
bool | get_type (uval_t id, tinfo_t *tif, type_source_t guess) |
Get a global type. More... | |
bool | set_type (uval_t id, const tinfo_t &tif, type_source_t source, bool force=false) |
Set a global type. More... | |
void | print_vdloc (qstring *vout, const vdloc_t &loc, int nbytes) |
Print vdloc. More... | |
bool | arglocs_overlap (const vdloc_t &loc1, size_t w1, const vdloc_t &loc2, size_t w2) |
Do two arglocs overlap? More... | |
DECLARE_TYPE_AS_MOVABLE (lvar_t) | |
DECLARE_TYPE_AS_MOVABLE (lvar_saved_info_t) | |
bool | restore_user_lvar_settings (lvar_uservec_t *lvinf, ea_t func_ea) |
Restore user defined local variable settings in the database. More... | |
void | save_user_lvar_settings (ea_t func_ea, const lvar_uservec_t &lvinf) |
Save user defined local variable settings into the database. More... | |
bool | modify_user_lvars (ea_t entry_ea, user_lvar_modifier_t &mlv) |
Modify saved local variable settings. More... | |
bool | modify_user_lvar_info (ea_t func_ea, uint mli_flags, const lvar_saved_info_t &info) |
Modify saved local variable settings of one variable. More... | |
bool | locate_lvar (lvar_locator_t *out, ea_t func_ea, const char *varname) |
Find a variable by name. More... | |
bool | rename_lvar (ea_t func_ea, const char *oldname, const char *newname) |
Rename a local variable. More... | |
bool | restore_user_defined_calls (udcall_map_t *udcalls, ea_t func_ea) |
Restore user defined function calls from the database. More... | |
void | save_user_defined_calls (ea_t func_ea, const udcall_map_t &udcalls) |
Save user defined local function calls into the database. More... | |
bool | parse_user_call (udcall_t *udc, const char *decl, bool silent) |
Convert function type declaration into internal structure. More... | |
merror_t | convert_to_user_call (const udcall_t &udc, codegen_t &cdg) |
try to generate user-defined call for an instruction More... | |
bool | install_microcode_filter (microcode_filter_t *filter, bool install=true) |
register/unregister non-standard microcode generator More... | |
DECLARE_TYPE_AS_MOVABLE (bitset_t) | |
DECLARE_TYPE_AS_MOVABLE (ivl_t) | |
DECLARE_TYPE_AS_MOVABLE (ivlset_t) | |
DECLARE_TYPE_AS_MOVABLE (rlist_t) | |
DECLARE_TYPE_AS_MOVABLE (mlist_t) | |
DECLARE_TYPE_AS_MOVABLE (mlistvec_t) | |
const mlist_t & | get_temp_regs () |
Get list of temporary registers. More... | |
bool | is_kreg (mreg_t r) |
Is a kernel register? Kernel registers are temporary registers that can be used freely. More... | |
mreg_t | reg2mreg (int reg) |
Map a processor register to a microregister. More... | |
int | mreg2reg (mreg_t reg, int width) |
Map a microregister to a processor register. More... | |
int | get_mreg_name (qstring *out, mreg_t reg, int width, void *ud=nullptr) |
Get the microregister name. More... | |
void | install_optinsn_handler (optinsn_t *opt) |
Install an instruction level custom optimizer. More... | |
bool | remove_optinsn_handler (optinsn_t *opt) |
Remove an instruction level custom optimizer. More... | |
void | install_optblock_handler (optblock_t *opt) |
Install a block level custom optimizer. More... | |
bool | remove_optblock_handler (optblock_t *opt) |
Remove a block level custom optimizer. More... | |
DECLARE_TYPE_AS_MOVABLE (mop_t) | |
DECLARE_TYPE_AS_MOVABLE (mcallarg_t) | |
const minsn_t * | getf_reginsn (const minsn_t *ins) |
Skip assertions forward. More... | |
const minsn_t * | getb_reginsn (const minsn_t *ins) |
Skip assertions backward. More... | |
minsn_t * | getf_reginsn (minsn_t *ins) |
minsn_t * | getb_reginsn (minsn_t *ins) |
DECLARE_TYPE_AS_MOVABLE (hexwarn_t) | |
bool | change_hexrays_config (const char *directive) |
Parse DIRECTIVE and update the current configuration variables. More... | |
const char * | get_hexrays_version () |
Get decompiler version. More... | |
bool | checkout_hexrays_license (bool silent) |
Check out a floating decompiler license. More... | |
vdui_t * | open_pseudocode (ea_t ea, int flags) |
Open pseudocode window. More... | |
bool | close_pseudocode (TWidget *f) |
Close pseudocode window. More... | |
vdui_t * | get_widget_vdui (TWidget *f) |
Get the vdui_t instance associated to the TWidget. More... | |
bool | decompile_many (const char *outfile, const eavec_t *funcaddrs, int flags) |
Batch decompilation. More... | |
void | send_database (const hexrays_failure_t &err, bool silent) |
Send the database to Hex-Rays. More... | |
bool | get_current_operand (gco_info_t *out) |
Get the instruction operand under the cursor. More... | |
void | remitem (const citem_t *e) |
ctype_t | negated_relation (ctype_t op) |
Negate a comparison operator. For example, cot_sge becomes cot_slt. More... | |
ctype_t | swapped_relation (ctype_t op) |
Swap a comparison operator. For example, cot_sge becomes cot_sle. More... | |
type_sign_t | get_op_signness (ctype_t op) |
Get operator sign. Meaningful for sign-dependent operators, like cot_sdiv. More... | |
ctype_t | asgop (ctype_t cop) |
Convert plain operator into assignment operator. For example, cot_add returns cot_asgadd. More... | |
ctype_t | asgop_revert (ctype_t cop) |
Convert assignment operator into plain operator. More... | |
bool | op_uses_x (ctype_t op) |
Does operator use the 'x' field of cexpr_t? More... | |
bool | op_uses_y (ctype_t op) |
Does operator use the 'y' field of cexpr_t? More... | |
bool | op_uses_z (ctype_t op) |
Does operator use the 'z' field of cexpr_t? More... | |
bool | is_binary (ctype_t op) |
Is binary operator? More... | |
bool | is_unary (ctype_t op) |
Is unary operator? More... | |
bool | is_relational (ctype_t op) |
Is comparison operator? More... | |
bool | is_assignment (ctype_t op) |
Is assignment operator? More... | |
bool | accepts_udts (ctype_t op) |
bool | is_prepost (ctype_t op) |
Is pre/post increment/decrement operator? More... | |
bool | is_commutative (ctype_t op) |
Is commutative operator? More... | |
bool | is_additive (ctype_t op) |
Is additive operator? More... | |
bool | is_multiplicative (ctype_t op) |
Is multiplicative operator? More... | |
bool | is_bitop (ctype_t op) |
Is bit related operator? More... | |
bool | is_logical (ctype_t op) |
Is logical operator? More... | |
bool | is_loop (ctype_t op) |
Is loop statement code? More... | |
bool | is_break_consumer (ctype_t op) |
Does a break statement influence the specified statement code? More... | |
bool | is_lvalue (ctype_t op) |
Is Lvalue operator? More... | |
bool | accepts_small_udts (ctype_t op) |
Is the operator allowed on small structure or union? More... | |
DECLARE_TYPE_AS_MOVABLE (citem_t) | |
DECLARE_TYPE_AS_MOVABLE (cexpr_t) | |
DECLARE_TYPE_AS_MOVABLE (ceinsn_t) | |
DECLARE_TYPE_AS_MOVABLE (cinsn_t) | |
DECLARE_TYPE_AS_MOVABLE (carg_t) | |
DECLARE_TYPE_AS_MOVABLE (ccase_t) | |
cexpr_t * | lnot (cexpr_t *e) |
Logically negate the specified expression. More... | |
cinsn_t * | new_block () |
Create a new block-statement. More... | |
cexpr_t * | vcreate_helper (bool standalone, const tinfo_t &type, const char *format, va_list va) |
cexpr_t * | create_helper (bool standalone, const tinfo_t &type, const char *format,...) |
cexpr_t * | vcall_helper (const tinfo_t &rettype, carglist_t *args, const char *format, va_list va) |
cexpr_t * | call_helper (const tinfo_t &rettype, carglist_t *args, const char *format,...) |
cexpr_t * | make_num (uint64 n, cfunc_t *func=nullptr, ea_t ea=BADADDR, int opnum=0, type_sign_t sign=no_sign, int size=0) |
Create a number expression. More... | |
cexpr_t * | make_ref (cexpr_t *e) |
Create a reference. More... | |
cexpr_t * | dereference (cexpr_t *e, int ptrsize, bool is_flt=false) |
Dereference a pointer. More... | |
void | save_user_labels (ea_t func_ea, const user_labels_t *user_labels) |
Save user defined labels into the database. More... | |
void | save_user_labels2 (ea_t func_ea, const user_labels_t *user_labels, const cfunc_t *func=nullptr) |
void | save_user_cmts (ea_t func_ea, const user_cmts_t *user_cmts) |
Save user defined comments into the database. More... | |
void | save_user_numforms (ea_t func_ea, const user_numforms_t *numforms) |
Save user defined number formats into the database. More... | |
void | save_user_iflags (ea_t func_ea, const user_iflags_t *iflags) |
Save user defined citem iflags into the database. More... | |
void | save_user_unions (ea_t func_ea, const user_unions_t *unions) |
Save user defined union field selections into the database. More... | |
user_labels_t * | restore_user_labels (ea_t func_ea) |
Restore user defined labels from the database. More... | |
user_labels_t * | restore_user_labels2 (ea_t func_ea, const cfunc_t *func=nullptr) |
user_cmts_t * | restore_user_cmts (ea_t func_ea) |
Restore user defined comments from the database. More... | |
user_numforms_t * | restore_user_numforms (ea_t func_ea) |
Restore user defined number formats from the database. More... | |
user_iflags_t * | restore_user_iflags (ea_t func_ea) |
Restore user defined citem iflags from the database. More... | |
user_unions_t * | restore_user_unions (ea_t func_ea) |
Restore user defined union field selections from the database. More... | |
void | close_hexrays_waitbox () |
Close the waitbox displayed by the decompiler. More... | |
cfuncptr_t | decompile (const mba_ranges_t &mbr, hexrays_failure_t *hf=nullptr, int decomp_flags=0) |
Decompile a snippet or a function. More... | |
cfuncptr_t | decompile_func (func_t *pfn, hexrays_failure_t *hf=nullptr, int decomp_flags=0) |
Decompile a function. More... | |
cfuncptr_t | decompile_snippet (const rangevec_t &ranges, hexrays_failure_t *hf=nullptr, int decomp_flags=0) |
Decompile a snippet. More... | |
mba_t * | gen_microcode (const mba_ranges_t &mbr, hexrays_failure_t *hf=nullptr, const mlist_t *retlist=nullptr, int decomp_flags=0, mba_maturity_t reqmat=MMAT_GLBOPT3) |
Generate microcode of an arbitrary code snippet. More... | |
mba_t * | create_empty_mba (const mba_ranges_t &mbr, hexrays_failure_t *hf=nullptr) |
Create an empty microcode object. More... | |
cfuncptr_t | create_cfunc (mba_t *mba) |
Create a new cfunc_t object. More... | |
bool | mark_cfunc_dirty (ea_t ea, bool close_views=false) |
Flush the cached decompilation results. More... | |
void | clear_cached_cfuncs () |
Flush all cached decompilation results. More... | |
bool | has_cached_cfunc (ea_t ea) |
Do we have a cached decompilation result for 'ea'? More... | |
const char * | get_ctype_name (ctype_t op) |
qstring | create_field_name (const tinfo_t &type, uval_t offset=BADADDR) |
enum hexrays_event_t | ENUM_SIZE (int) |
Decompiler events. More... | |
bool | install_hexrays_callback (hexrays_cb_t *callback, void *ud) |
Install handler for decompiler events. More... | |
int | remove_hexrays_callback (hexrays_cb_t *callback, void *ud) |
Uninstall handler for decompiler events. More... | |
DECLARE_TYPE_AS_MOVABLE (ui_stroff_op_t) | |
int | select_udt_by_offset (const qvector< tinfo_t > *udts, const ui_stroff_ops_t &ops, ui_stroff_applicator_t &applicator) |
Select UDT. More... | |
bool | init_hexrays_plugin (int flags=0) |
Check that your plugin is compatible with hex-rays decompiler. More... | |
void | term_hexrays_plugin () |
Stop working with hex-rays decompiler. More... | |
operand_locator_t const & | user_numforms_first (user_numforms_iterator_t p) |
Get reference to the current map key. More... | |
number_format_t & | user_numforms_second (user_numforms_iterator_t p) |
Get reference to the current map value. More... | |
user_numforms_iterator_t | user_numforms_find (const user_numforms_t *map, const operand_locator_t &key) |
Find the specified key in user_numforms_t. More... | |
user_numforms_iterator_t | user_numforms_insert (user_numforms_t *map, const operand_locator_t &key, const number_format_t &val) |
Insert new (operand_locator_t, number_format_t) pair into user_numforms_t. More... | |
user_numforms_iterator_t | user_numforms_begin (const user_numforms_t *map) |
Get iterator pointing to the beginning of user_numforms_t. More... | |
user_numforms_iterator_t | user_numforms_end (const user_numforms_t *map) |
Get iterator pointing to the end of user_numforms_t. More... | |
user_numforms_iterator_t | user_numforms_next (user_numforms_iterator_t p) |
Move to the next element. More... | |
user_numforms_iterator_t | user_numforms_prev (user_numforms_iterator_t p) |
Move to the previous element. More... | |
void | user_numforms_erase (user_numforms_t *map, user_numforms_iterator_t p) |
Erase current element from user_numforms_t. More... | |
void | user_numforms_clear (user_numforms_t *map) |
Clear user_numforms_t. More... | |
size_t | user_numforms_size (user_numforms_t *map) |
Get size of user_numforms_t. More... | |
void | user_numforms_free (user_numforms_t *map) |
Delete user_numforms_t instance. More... | |
user_numforms_t * | user_numforms_new () |
Create a new user_numforms_t instance. More... | |
lvar_locator_t const & | lvar_mapping_first (lvar_mapping_iterator_t p) |
Get reference to the current map key. More... | |
lvar_locator_t & | lvar_mapping_second (lvar_mapping_iterator_t p) |
Get reference to the current map value. More... | |
lvar_mapping_iterator_t | lvar_mapping_find (const lvar_mapping_t *map, const lvar_locator_t &key) |
Find the specified key in lvar_mapping_t. More... | |
lvar_mapping_iterator_t | lvar_mapping_insert (lvar_mapping_t *map, const lvar_locator_t &key, const lvar_locator_t &val) |
Insert new (lvar_locator_t, lvar_locator_t) pair into lvar_mapping_t. More... | |
lvar_mapping_iterator_t | lvar_mapping_begin (const lvar_mapping_t *map) |
Get iterator pointing to the beginning of lvar_mapping_t. More... | |
lvar_mapping_iterator_t | lvar_mapping_end (const lvar_mapping_t *map) |
Get iterator pointing to the end of lvar_mapping_t. More... | |
lvar_mapping_iterator_t | lvar_mapping_next (lvar_mapping_iterator_t p) |
Move to the next element. More... | |
lvar_mapping_iterator_t | lvar_mapping_prev (lvar_mapping_iterator_t p) |
Move to the previous element. More... | |
void | lvar_mapping_erase (lvar_mapping_t *map, lvar_mapping_iterator_t p) |
Erase current element from lvar_mapping_t. More... | |
void | lvar_mapping_clear (lvar_mapping_t *map) |
Clear lvar_mapping_t. More... | |
size_t | lvar_mapping_size (lvar_mapping_t *map) |
Get size of lvar_mapping_t. More... | |
void | lvar_mapping_free (lvar_mapping_t *map) |
Delete lvar_mapping_t instance. More... | |
lvar_mapping_t * | lvar_mapping_new () |
Create a new lvar_mapping_t instance. More... | |
ea_t const & | udcall_map_first (udcall_map_iterator_t p) |
Get reference to the current map key. More... | |
udcall_t & | udcall_map_second (udcall_map_iterator_t p) |
Get reference to the current map value. More... | |
udcall_map_iterator_t | udcall_map_find (const udcall_map_t *map, const ea_t &key) |
Find the specified key in udcall_map_t. More... | |
udcall_map_iterator_t | udcall_map_insert (udcall_map_t *map, const ea_t &key, const udcall_t &val) |
Insert new (ea_t, udcall_t) pair into udcall_map_t. More... | |
udcall_map_iterator_t | udcall_map_begin (const udcall_map_t *map) |
Get iterator pointing to the beginning of udcall_map_t. More... | |
udcall_map_iterator_t | udcall_map_end (const udcall_map_t *map) |
Get iterator pointing to the end of udcall_map_t. More... | |
udcall_map_iterator_t | udcall_map_next (udcall_map_iterator_t p) |
Move to the next element. More... | |
udcall_map_iterator_t | udcall_map_prev (udcall_map_iterator_t p) |
Move to the previous element. More... | |
void | udcall_map_erase (udcall_map_t *map, udcall_map_iterator_t p) |
Erase current element from udcall_map_t. More... | |
void | udcall_map_clear (udcall_map_t *map) |
Clear udcall_map_t. More... | |
size_t | udcall_map_size (udcall_map_t *map) |
Get size of udcall_map_t. More... | |
void | udcall_map_free (udcall_map_t *map) |
Delete udcall_map_t instance. More... | |
udcall_map_t * | udcall_map_new () |
Create a new udcall_map_t instance. More... | |
treeloc_t const & | user_cmts_first (user_cmts_iterator_t p) |
Get reference to the current map key. More... | |
citem_cmt_t & | user_cmts_second (user_cmts_iterator_t p) |
Get reference to the current map value. More... | |
user_cmts_iterator_t | user_cmts_find (const user_cmts_t *map, const treeloc_t &key) |
Find the specified key in user_cmts_t. More... | |
user_cmts_iterator_t | user_cmts_insert (user_cmts_t *map, const treeloc_t &key, const citem_cmt_t &val) |
Insert new (treeloc_t, citem_cmt_t) pair into user_cmts_t. More... | |
user_cmts_iterator_t | user_cmts_begin (const user_cmts_t *map) |
Get iterator pointing to the beginning of user_cmts_t. More... | |
user_cmts_iterator_t | user_cmts_end (const user_cmts_t *map) |
Get iterator pointing to the end of user_cmts_t. More... | |
user_cmts_iterator_t | user_cmts_next (user_cmts_iterator_t p) |
Move to the next element. More... | |
user_cmts_iterator_t | user_cmts_prev (user_cmts_iterator_t p) |
Move to the previous element. More... | |
void | user_cmts_erase (user_cmts_t *map, user_cmts_iterator_t p) |
Erase current element from user_cmts_t. More... | |
void | user_cmts_clear (user_cmts_t *map) |
Clear user_cmts_t. More... | |
size_t | user_cmts_size (user_cmts_t *map) |
Get size of user_cmts_t. More... | |
void | user_cmts_free (user_cmts_t *map) |
Delete user_cmts_t instance. More... | |
user_cmts_t * | user_cmts_new () |
Create a new user_cmts_t instance. More... | |
citem_locator_t const & | user_iflags_first (user_iflags_iterator_t p) |
Get reference to the current map key. More... | |
int32 & | user_iflags_second (user_iflags_iterator_t p) |
Get reference to the current map value. More... | |
user_iflags_iterator_t | user_iflags_find (const user_iflags_t *map, const citem_locator_t &key) |
Find the specified key in user_iflags_t. More... | |
user_iflags_iterator_t | user_iflags_insert (user_iflags_t *map, const citem_locator_t &key, const int32 &val) |
Insert new (citem_locator_t, int32) pair into user_iflags_t. More... | |
user_iflags_iterator_t | user_iflags_begin (const user_iflags_t *map) |
Get iterator pointing to the beginning of user_iflags_t. More... | |
user_iflags_iterator_t | user_iflags_end (const user_iflags_t *map) |
Get iterator pointing to the end of user_iflags_t. More... | |
user_iflags_iterator_t | user_iflags_next (user_iflags_iterator_t p) |
Move to the next element. More... | |
user_iflags_iterator_t | user_iflags_prev (user_iflags_iterator_t p) |
Move to the previous element. More... | |
void | user_iflags_erase (user_iflags_t *map, user_iflags_iterator_t p) |
Erase current element from user_iflags_t. More... | |
void | user_iflags_clear (user_iflags_t *map) |
Clear user_iflags_t. More... | |
size_t | user_iflags_size (user_iflags_t *map) |
Get size of user_iflags_t. More... | |
void | user_iflags_free (user_iflags_t *map) |
Delete user_iflags_t instance. More... | |
user_iflags_t * | user_iflags_new () |
Create a new user_iflags_t instance. More... | |
ea_t const & | user_unions_first (user_unions_iterator_t p) |
Get reference to the current map key. More... | |
intvec_t & | user_unions_second (user_unions_iterator_t p) |
Get reference to the current map value. More... | |
user_unions_iterator_t | user_unions_find (const user_unions_t *map, const ea_t &key) |
Find the specified key in user_unions_t. More... | |
user_unions_iterator_t | user_unions_insert (user_unions_t *map, const ea_t &key, const intvec_t &val) |
Insert new (ea_t, intvec_t) pair into user_unions_t. More... | |
user_unions_iterator_t | user_unions_begin (const user_unions_t *map) |
Get iterator pointing to the beginning of user_unions_t. More... | |
user_unions_iterator_t | user_unions_end (const user_unions_t *map) |
Get iterator pointing to the end of user_unions_t. More... | |
user_unions_iterator_t | user_unions_next (user_unions_iterator_t p) |
Move to the next element. More... | |
user_unions_iterator_t | user_unions_prev (user_unions_iterator_t p) |
Move to the previous element. More... | |
void | user_unions_erase (user_unions_t *map, user_unions_iterator_t p) |
Erase current element from user_unions_t. More... | |
void | user_unions_clear (user_unions_t *map) |
Clear user_unions_t. More... | |
size_t | user_unions_size (user_unions_t *map) |
Get size of user_unions_t. More... | |
void | user_unions_free (user_unions_t *map) |
Delete user_unions_t instance. More... | |
user_unions_t * | user_unions_new () |
Create a new user_unions_t instance. More... | |
int const & | user_labels_first (user_labels_iterator_t p) |
Get reference to the current map key. More... | |
qstring & | user_labels_second (user_labels_iterator_t p) |
Get reference to the current map value. More... | |
user_labels_iterator_t | user_labels_find (const user_labels_t *map, const int &key) |
Find the specified key in user_labels_t. More... | |
user_labels_iterator_t | user_labels_insert (user_labels_t *map, const int &key, const qstring &val) |
Insert new (int, qstring) pair into user_labels_t. More... | |
user_labels_iterator_t | user_labels_begin (const user_labels_t *map) |
Get iterator pointing to the beginning of user_labels_t. More... | |
user_labels_iterator_t | user_labels_end (const user_labels_t *map) |
Get iterator pointing to the end of user_labels_t. More... | |
user_labels_iterator_t | user_labels_next (user_labels_iterator_t p) |
Move to the next element. More... | |
user_labels_iterator_t | user_labels_prev (user_labels_iterator_t p) |
Move to the previous element. More... | |
void | user_labels_erase (user_labels_t *map, user_labels_iterator_t p) |
Erase current element from user_labels_t. More... | |
void | user_labels_clear (user_labels_t *map) |
Clear user_labels_t. More... | |
size_t | user_labels_size (user_labels_t *map) |
Get size of user_labels_t. More... | |
void | user_labels_free (user_labels_t *map) |
Delete user_labels_t instance. More... | |
user_labels_t * | user_labels_new () |
Create a new user_labels_t instance. More... | |
ea_t const & | eamap_first (eamap_iterator_t p) |
Get reference to the current map key. More... | |
cinsnptrvec_t & | eamap_second (eamap_iterator_t p) |
Get reference to the current map value. More... | |
eamap_iterator_t | eamap_find (const eamap_t *map, const ea_t &key) |
Find the specified key in eamap_t. More... | |
eamap_iterator_t | eamap_insert (eamap_t *map, const ea_t &key, const cinsnptrvec_t &val) |
Insert new (ea_t, cinsnptrvec_t) pair into eamap_t. More... | |
eamap_iterator_t | eamap_begin (const eamap_t *map) |
Get iterator pointing to the beginning of eamap_t. More... | |
eamap_iterator_t | eamap_end (const eamap_t *map) |
Get iterator pointing to the end of eamap_t. More... | |
eamap_iterator_t | eamap_next (eamap_iterator_t p) |
Move to the next element. More... | |
eamap_iterator_t | eamap_prev (eamap_iterator_t p) |
Move to the previous element. More... | |
void | eamap_erase (eamap_t *map, eamap_iterator_t p) |
Erase current element from eamap_t. More... | |
void | eamap_clear (eamap_t *map) |
Clear eamap_t. More... | |
size_t | eamap_size (eamap_t *map) |
Get size of eamap_t. More... | |
void | eamap_free (eamap_t *map) |
Delete eamap_t instance. More... | |
eamap_t * | eamap_new () |
Create a new eamap_t instance. More... | |
cinsn_t *const & | boundaries_first (boundaries_iterator_t p) |
Get reference to the current map key. More... | |
rangeset_t & | boundaries_second (boundaries_iterator_t p) |
Get reference to the current map value. More... | |
boundaries_iterator_t | boundaries_find (const boundaries_t *map, const cinsn_t *&key) |
Find the specified key in boundaries_t. More... | |
boundaries_iterator_t | boundaries_insert (boundaries_t *map, const cinsn_t *&key, const rangeset_t &val) |
Insert new (cinsn_t *, rangeset_t) pair into boundaries_t. More... | |
boundaries_iterator_t | boundaries_begin (const boundaries_t *map) |
Get iterator pointing to the beginning of boundaries_t. More... | |
boundaries_iterator_t | boundaries_end (const boundaries_t *map) |
Get iterator pointing to the end of boundaries_t. More... | |
boundaries_iterator_t | boundaries_next (boundaries_iterator_t p) |
Move to the next element. More... | |
boundaries_iterator_t | boundaries_prev (boundaries_iterator_t p) |
Move to the previous element. More... | |
void | boundaries_erase (boundaries_t *map, boundaries_iterator_t p) |
Erase current element from boundaries_t. More... | |
void | boundaries_clear (boundaries_t *map) |
Clear boundaries_t. More... | |
size_t | boundaries_size (boundaries_t *map) |
Get size of boundaries_t. More... | |
void | boundaries_free (boundaries_t *map) |
Delete boundaries_t instance. More... | |
boundaries_t * | boundaries_new () |
Create a new boundaries_t instance. More... | |
chain_t & | block_chains_get (block_chains_iterator_t p) |
Get reference to the current set value. More... | |
block_chains_iterator_t | block_chains_find (const block_chains_t *set, const chain_t &val) |
Find the specified key in set block_chains_t. More... | |
block_chains_iterator_t | block_chains_insert (block_chains_t *set, const chain_t &val) |
Insert new (chain_t) into set block_chains_t. More... | |
block_chains_iterator_t | block_chains_begin (const block_chains_t *set) |
Get iterator pointing to the beginning of block_chains_t. More... | |
block_chains_iterator_t | block_chains_end (const block_chains_t *set) |
Get iterator pointing to the end of block_chains_t. More... | |
block_chains_iterator_t | block_chains_next (block_chains_iterator_t p) |
Move to the next element. More... | |
block_chains_iterator_t | block_chains_prev (block_chains_iterator_t p) |
Move to the previous element. More... | |
void | block_chains_erase (block_chains_t *set, block_chains_iterator_t p) |
Erase current element from block_chains_t. More... | |
void | block_chains_clear (block_chains_t *set) |
Clear block_chains_t. More... | |
size_t | block_chains_size (block_chains_t *set) |
Get size of block_chains_t. More... | |
void | block_chains_free (block_chains_t *set) |
Delete block_chains_t instance. More... | |
block_chains_t * | block_chains_new () |
Create a new block_chains_t instance. More... | |
Variables | |
const uvlr_t | MAX_VALUE = uvlr_t(-1) |
const svlr_t | MAX_SVALUE = svlr_t(uvlr_t(-1) >> 1) |
const svlr_t | MIN_SVALUE = ~MAX_SVALUE |
const maymust_t | MUST_ACCESS = 0x00 |
const maymust_t | MAY_ACCESS = 0x01 |
const maymust_t | MAYMUST_ACCESS_MASK = 0x01 |
const maymust_t | ONE_ACCESS_TYPE = 0x20 |
const maymust_t | INCLUDE_SPOILED_REGS = 0x40 |
const maymust_t | EXCLUDE_PASS_REGS = 0x80 |
const maymust_t | FULL_XDSU = 0x100 |
const maymust_t | WITH_ASSERTS = 0x200 |
const maymust_t | EXCLUDE_VOLATILE = 0x400 |
const maymust_t | INCLUDE_UNUSED_SRC = 0x800 |
const maymust_t | INCLUDE_DEAD_RETREGS = 0x1000 |
const maymust_t | INCLUDE_RESTRICTED = 0x2000 |
const maymust_t | CALL_SPOILS_ONLY_ARGS = 0x4000 |
const mreg_t | mr_none = mreg_t(-1) |
const mreg_t | mr_cf = mreg_t(0) |
const mreg_t | mr_zf = mreg_t(1) |
const mreg_t | mr_sf = mreg_t(2) |
const mreg_t | mr_of = mreg_t(3) |
const mreg_t | mr_pf = mreg_t(4) |
const int | cc_count = mr_pf - mr_cf + 1 |
const mreg_t | mr_cc = mreg_t(5) |
const mreg_t | mr_first = mreg_t(8) |
const size_t | bitset_width = sizeof(mbitmap_t) * CHAR_BIT |
const size_t | bitset_align = bitset_width - 1 |
const size_t | bitset_shift = 6 |
const mopt_t | mop_z = 0 |
none More... | |
const mopt_t | mop_r = 1 |
register (they exist until MMAT_LVARS) More... | |
const mopt_t | mop_n = 2 |
immediate number constant More... | |
const mopt_t | mop_str = 3 |
immediate string constant (user representation) More... | |
const mopt_t | mop_d = 4 |
result of another instruction More... | |
const mopt_t | mop_S = 5 |
local stack variable (they exist until MMAT_LVARS) More... | |
const mopt_t | mop_v = 6 |
global variable More... | |
const mopt_t | mop_b = 7 |
micro basic block (mblock_t) More... | |
const mopt_t | mop_f = 8 |
list of arguments More... | |
const mopt_t | mop_l = 9 |
local variable More... | |
const mopt_t | mop_a = 10 |
mop_addr_t: address of operand (mop_l, mop_v, mop_S, mop_r) More... | |
const mopt_t | mop_h = 11 |
helper function More... | |
const mopt_t | mop_c = 12 |
mcases More... | |
const mopt_t | mop_fn = 13 |
floating point constant More... | |
const mopt_t | mop_p = 14 |
operand pair More... | |
const mopt_t | mop_sc = 15 |
scattered More... | |
const int | NOSIZE = -1 |
wrong or unexisting operand size More... | |
const int64 | HEXRAYS_API_MAGIC = 0x00DEC0DE00000003LL |
const cmt_type_t | CMT_NONE = 0x0000 |
No comment is possible. More... | |
const cmt_type_t | CMT_TAIL = 0x0001 |
Indented comment. More... | |
const cmt_type_t | CMT_BLOCK1 = 0x0002 |
Anterioir block comment. More... | |
const cmt_type_t | CMT_BLOCK2 = 0x0004 |
Posterior block comment. More... | |
const cmt_type_t | CMT_LVAR = 0x0008 |
Local variable comment. More... | |
const cmt_type_t | CMT_FUNC = 0x0010 |
Function comment. More... | |
const cmt_type_t | CMT_ALL = 0x001F |
All comments. More... | |
int | hexdsp |
Detailed Description
HexRays SDK header file.
The decompiler SDK consists of a single header file.
The header file defines data structures and inline functions.
Definition in file hexrays.hpp.
Macro Definition Documentation
◆ ACFL_BLKOPT
#define ACFL_BLKOPT 0x02 |
perform interblock transformations
Definition at line 4801 of file hexrays.hpp.
◆ ACFL_GLBDEL
#define ACFL_GLBDEL 0x08 |
perform dead code eliminition
Definition at line 4803 of file hexrays.hpp.
◆ ACFL_GLBPROP
#define ACFL_GLBPROP 0x04 |
perform global propagation
Definition at line 4802 of file hexrays.hpp.
◆ ACFL_GUESS
#define ACFL_GUESS 0x10 |
may guess calling conventions
- Examples
- hexrays_sample12.cpp.
Definition at line 4804 of file hexrays.hpp.
◆ ACFL_LOCOPT
#define ACFL_LOCOPT 0x01 |
perform local propagation (requires ACFL_BLKOPT)
Definition at line 4800 of file hexrays.hpp.
◆ ALLMEM
#define ALLMEM ivl_t::allmem |
Definition at line 1904 of file hexrays.hpp.
◆ ANCHOR_BLKCMT
#define ANCHOR_BLKCMT 0x20000000 |
block comment (for ctree items)
Definition at line 6644 of file hexrays.hpp.
◆ ANCHOR_CITEM
#define ANCHOR_CITEM 0x00000000 |
c-tree item
Definition at line 6641 of file hexrays.hpp.
◆ ANCHOR_INDEX
#define ANCHOR_INDEX 0x1FFFFFFF |
Definition at line 6639 of file hexrays.hpp.
◆ ANCHOR_ITP
#define ANCHOR_ITP 0x80000000 |
item type preciser
Definition at line 6643 of file hexrays.hpp.
◆ ANCHOR_LVAR
#define ANCHOR_LVAR 0x40000000 |
declaration of local variable
Definition at line 6642 of file hexrays.hpp.
◆ ANCHOR_MASK
#define ANCHOR_MASK 0xC0000000 |
Definition at line 6640 of file hexrays.hpp.
◆ CFL_FINAL
#define CFL_FINAL 0x0001 |
call type is final, should not be changed
Definition at line 6597 of file hexrays.hpp.
◆ CFL_HELPER
#define CFL_HELPER 0x0002 |
created from a decompiler helper function
Definition at line 6598 of file hexrays.hpp.
◆ CFL_NORET
#define CFL_NORET 0x0004 |
call does not return
Definition at line 6599 of file hexrays.hpp.
◆ CFS_BOUNDS
#define CFS_BOUNDS 0x0001 |
'eamap' and 'boundaries' are ready
Definition at line 6967 of file hexrays.hpp.
◆ CFS_LOCKED
#define CFS_LOCKED 0x0008 |
cfunc is temporarily locked
Definition at line 6970 of file hexrays.hpp.
◆ CFS_LVARS_HIDDEN
#define CFS_LVARS_HIDDEN 0x0004 |
local variable definitions are collapsed
Definition at line 6969 of file hexrays.hpp.
◆ CFS_TEXT
#define CFS_TEXT 0x0002 |
'sv' is ready (and hdrlines)
Definition at line 6968 of file hexrays.hpp.
◆ EQ_CMPDEST
#define EQ_CMPDEST 0x0004 |
compare instruction destinations
Definition at line 3656 of file hexrays.hpp.
◆ EQ_IGNCODE
#define EQ_IGNCODE 0x0002 |
ignore instruction opcodes
Definition at line 3655 of file hexrays.hpp.
◆ EQ_IGNSIZE
#define EQ_IGNSIZE 0x0001 |
ignore source operand sizes
- Examples
- hexrays_sample16.cpp.
Definition at line 3654 of file hexrays.hpp.
◆ EQ_OPTINSN
#define EQ_OPTINSN 0x0008 |
optimize mop_d operands
Definition at line 3657 of file hexrays.hpp.
◆ FD_BACKWARD
#define FD_BACKWARD 0x0000 |
search direction
Definition at line 4160 of file hexrays.hpp.
◆ FD_DEF
#define FD_DEF 0x0002 |
look for definition
Definition at line 4163 of file hexrays.hpp.
◆ FD_DIRTY
#define FD_DIRTY 0x0004 |
ignore possible implicit definitions by function calls and indirect memory access
Definition at line 4165 of file hexrays.hpp.
◆ FD_FORWARD
#define FD_FORWARD 0x0001 |
search direction
Definition at line 4161 of file hexrays.hpp.
◆ FD_USE
#define FD_USE 0x0000 |
look for use
Definition at line 4162 of file hexrays.hpp.
◆ GCA_ALLOC
#define GCA_ALLOC 0x04 |
enumerate only allocated chains
Definition at line 3442 of file hexrays.hpp.
◆ GCA_EMPTY
#define GCA_EMPTY 0x01 |
include empty chains
Definition at line 3440 of file hexrays.hpp.
◆ GCA_NALLOC
#define GCA_NALLOC 0x08 |
enumerate only non-allocated chains
Definition at line 3443 of file hexrays.hpp.
◆ GCA_OFIRST
#define GCA_OFIRST 0x10 |
consider only chains of the first block
Definition at line 3444 of file hexrays.hpp.
◆ GCA_OLAST
#define GCA_OLAST 0x20 |
consider only chains of the last block
Definition at line 3445 of file hexrays.hpp.
◆ GCA_SPEC
#define GCA_SPEC 0x02 |
include chains for special registers
Definition at line 3441 of file hexrays.hpp.
◆ GCO_DEF
#define GCO_DEF 0x0004 |
◆ GCO_REG
#define GCO_REG 0x0001 |
is register? otherwise a stack variable
Definition at line 5496 of file hexrays.hpp.
◆ GCO_STK
#define GCO_STK 0x0000 |
a stack variable
Definition at line 5495 of file hexrays.hpp.
◆ GCO_USE
#define GCO_USE 0x0002 |
◆ hexapi
#define hexapi |
Public functions are marked with this keyword.
Definition at line 235 of file hexrays.hpp.
◆ HEXRAYS_MEMORY_ALLOCATION_FUNCS
#define HEXRAYS_MEMORY_ALLOCATION_FUNCS | ( | ) |
Definition at line 292 of file hexrays.hpp.
◆ HEXRAYS_PLACEMENT_DELETE
#define HEXRAYS_PLACEMENT_DELETE void operator delete(void *, void *) {} |
Definition at line 291 of file hexrays.hpp.
◆ INS_EPILOG
#define INS_EPILOG ((cinsn_t *)1) |
Definition at line 6941 of file hexrays.hpp.
◆ IPROP_ASSERT
#define IPROP_ASSERT 0x0080 |
assertion: usually mov #val, op.
assertions are used to help the optimizer. assertions are ignored when generating ctree
- Examples
- hexrays_sample18.cpp.
Definition at line 3493 of file hexrays.hpp.
◆ IPROP_CLNPOP
#define IPROP_CLNPOP 0x0008 |
the purpose of the instruction is to clean stack (e.g.
"pop ecx" is often used for that)
Definition at line 3487 of file hexrays.hpp.
◆ IPROP_COMBINED
#define IPROP_COMBINED 0x0800 |
insn has been modified because of a partial reference
Definition at line 3501 of file hexrays.hpp.
◆ IPROP_DONT_COMB
#define IPROP_DONT_COMB 0x40000 |
may not combine this instruction with others
Definition at line 3513 of file hexrays.hpp.
◆ IPROP_DONT_PROP
#define IPROP_DONT_PROP 0x20000 |
may not propagate
Definition at line 3512 of file hexrays.hpp.
◆ IPROP_EXTSTX
#define IPROP_EXTSTX 0x1000 |
this is m_ext propagated into m_stx
Definition at line 3502 of file hexrays.hpp.
◆ IPROP_FARCALL
#define IPROP_FARCALL 0x0020 |
call of a far function using push cs/call sequence
Definition at line 3489 of file hexrays.hpp.
◆ IPROP_FPINSN
#define IPROP_FPINSN 0x0010 |
floating point insn
Definition at line 3488 of file hexrays.hpp.
◆ IPROP_IGNLOWSRC
#define IPROP_IGNLOWSRC 0x2000 |
low part of the instruction source operand has been created artificially (this bit is used only for 'and x, 80...')
Definition at line 3505 of file hexrays.hpp.
◆ IPROP_INV_JX
#define IPROP_INV_JX 0x4000 |
inverted conditional jump
Definition at line 3506 of file hexrays.hpp.
◆ IPROP_MBARRIER
#define IPROP_MBARRIER 0x80000 |
this instruction acts as a memory barrier (instructions accessing memory may not be reordered past it)
Definition at line 3515 of file hexrays.hpp.
◆ IPROP_MULTI_MOV
#define IPROP_MULTI_MOV 0x10000 |
the minsn was generated as part of insn that moves multiple registers (example: STM on ARM may transfer multiple registers)
bits that can be set by plugins:
Definition at line 3511 of file hexrays.hpp.
◆ IPROP_OPTIONAL
#define IPROP_OPTIONAL 0x0001 |
optional instruction
Definition at line 3481 of file hexrays.hpp.
◆ IPROP_PERSIST
#define IPROP_PERSIST 0x0002 |
persistent insn; they are not destroyed
Definition at line 3482 of file hexrays.hpp.
◆ IPROP_SPLIT
#define IPROP_SPLIT 0x0700 |
the instruction has been split:
Definition at line 3496 of file hexrays.hpp.
◆ IPROP_SPLIT1
#define IPROP_SPLIT1 0x0100 |
into 1 byte
Definition at line 3497 of file hexrays.hpp.
◆ IPROP_SPLIT2
#define IPROP_SPLIT2 0x0200 |
into 2 bytes
Definition at line 3498 of file hexrays.hpp.
◆ IPROP_SPLIT4
#define IPROP_SPLIT4 0x0300 |
into 4 bytes
Definition at line 3499 of file hexrays.hpp.
◆ IPROP_SPLIT8
#define IPROP_SPLIT8 0x0400 |
into 8 bytes
Definition at line 3500 of file hexrays.hpp.
◆ IPROP_TAILCALL
#define IPROP_TAILCALL 0x0040 |
tail call
Definition at line 3490 of file hexrays.hpp.
◆ IPROP_UNMERGED
#define IPROP_UNMERGED 0x100000 |
'goto' instruction was transformed info 'call'
Definition at line 3516 of file hexrays.hpp.
◆ IPROP_WAS_NORET
#define IPROP_WAS_NORET 0x8000 |
was noret icall
Definition at line 3507 of file hexrays.hpp.
◆ IPROP_WILDMATCH
#define IPROP_WILDMATCH 0x0004 |
match multiple insns
Definition at line 3483 of file hexrays.hpp.
◆ LOCOPT_ALL
#define LOCOPT_ALL 0x0001 |
redo optimization for all blocks.
if this bit is not set, only dirty blocks will be optimized
Definition at line 4777 of file hexrays.hpp.
◆ LOCOPT_REFINE
#define LOCOPT_REFINE 0x0002 |
refine return type, ok to fail
Definition at line 4778 of file hexrays.hpp.
◆ LOCOPT_REFINE2
#define LOCOPT_REFINE2 0x0004 |
refine return type, try harder
Definition at line 4779 of file hexrays.hpp.
◆ m_max
#define m_max 0x49 |
Definition at line 615 of file hexrays.hpp.
◆ MAX_FUNC_ARGS
#define MAX_FUNC_ARGS 64 |
Definition at line 3122 of file hexrays.hpp.
◆ MAX_SUPPORTED_STACK_SIZE
#define MAX_SUPPORTED_STACK_SIZE 0x100000 |
Definition at line 286 of file hexrays.hpp.
◆ MAXRANGE
#define MAXRANGE bitrange_t(0, USHRT_MAX) |
Definition at line 3796 of file hexrays.hpp.
◆ MBA2_ALL_FLAGS
#define MBA2_ALL_FLAGS 0x0001FFFF |
Definition at line 4541 of file hexrays.hpp.
◆ MBA2_ARGIDX_OK
#define MBA2_ARGIDX_OK 0x00000040 |
may verify input argument list?
Definition at line 4523 of file hexrays.hpp.
◆ MBA2_ARGIDX_SORTED
#define MBA2_ARGIDX_SORTED 0x00000400 |
args finally sorted according to ABI (e.g.
reverse stkarg order in Borland)
Definition at line 4528 of file hexrays.hpp.
◆ MBA2_CODE16_BIT
#define MBA2_CODE16_BIT 0x00000800 |
the code16 bit removed
Definition at line 4529 of file hexrays.hpp.
◆ MBA2_DONT_VERIFY
#define MBA2_DONT_VERIFY 0x80000000 |
Do not verify microcode.
This flag is recomended to be set only when debugging decompiler plugins
Definition at line 4537 of file hexrays.hpp.
◆ MBA2_HAS_OUTLINES
#define MBA2_HAS_OUTLINES 0x00002000 |
calls to outlined code have been inlined
Definition at line 4531 of file hexrays.hpp.
◆ MBA2_INITIAL_FLAGS
#define MBA2_INITIAL_FLAGS (MBA2_LVARNAMES_OK|MBA2_LVARS_RENAMED) |
Definition at line 4539 of file hexrays.hpp.
◆ MBA2_IS_CTR
#define MBA2_IS_CTR 0x00000010 |
is constructor?
Definition at line 4521 of file hexrays.hpp.
◆ MBA2_IS_DTR
#define MBA2_IS_DTR 0x00000020 |
is destructor?
Definition at line 4522 of file hexrays.hpp.
◆ MBA2_LVARNAMES_OK
#define MBA2_LVARNAMES_OK 0x00000001 |
may verify lvar_names?
Definition at line 4517 of file hexrays.hpp.
◆ MBA2_LVARS_RENAMED
#define MBA2_LVARS_RENAMED 0x00000002 |
accept empty names now?
Definition at line 4518 of file hexrays.hpp.
◆ MBA2_NO_DUP_CALLS
#define MBA2_NO_DUP_CALLS 0x00000080 |
forbid multiple calls with the same ea
Definition at line 4524 of file hexrays.hpp.
◆ MBA2_NO_DUP_LVARS
#define MBA2_NO_DUP_LVARS 0x00000100 |
forbid multiple lvars with the same ea
Definition at line 4525 of file hexrays.hpp.
◆ MBA2_NO_FRAME
#define MBA2_NO_FRAME 0x00004000 |
do not use function frame info (only snippet mode)
Definition at line 4532 of file hexrays.hpp.
◆ MBA2_OVER_CHAINS
#define MBA2_OVER_CHAINS 0x00000004 |
has overlapped chains?
Definition at line 4519 of file hexrays.hpp.
◆ MBA2_PROP_COMPLEX
#define MBA2_PROP_COMPLEX 0x00008000 |
allow propagation of more complex variable definitions
Definition at line 4533 of file hexrays.hpp.
◆ MBA2_STACK_RETVAL
#define MBA2_STACK_RETVAL 0x00001000 |
the return value is on the stack
Definition at line 4530 of file hexrays.hpp.
◆ MBA2_UNDEF_RETVAR
#define MBA2_UNDEF_RETVAR 0x00000200 |
return value is undefined
Definition at line 4526 of file hexrays.hpp.
◆ MBA2_VALRNG_DONE
#define MBA2_VALRNG_DONE 0x00000008 |
calculated valranges?
Definition at line 4520 of file hexrays.hpp.
◆ MBA_ASRPROP
#define MBA_ASRPROP 0x00002000 |
assertion have been propagated
Definition at line 4495 of file hexrays.hpp.
◆ MBA_ASRTOK
#define MBA_ASRTOK 0x00000800 |
assertions have been generated
Definition at line 4493 of file hexrays.hpp.
◆ MBA_CALLS
#define MBA_CALLS 0x00001000 |
callinfo has been built
Definition at line 4494 of file hexrays.hpp.
◆ MBA_CHVARS
#define MBA_CHVARS 0x00200000 |
can verify chain varnums
Definition at line 4502 of file hexrays.hpp.
◆ MBA_CMBBLK
#define MBA_CMBBLK 0x00000400 |
request to combine blocks
Definition at line 4492 of file hexrays.hpp.
◆ MBA_CMNSTK
#define MBA_CMNSTK 0x00000100 |
stkvars+stkargs should be considered as one area
Definition at line 4488 of file hexrays.hpp.
◆ MBA_COLGDL
#define MBA_COLGDL 0x00800000 |
display graph after each reduction
Definition at line 4506 of file hexrays.hpp.
◆ MBA_DELPAIRS
#define MBA_DELPAIRS 0x00100000 |
pairs have been deleted once
Definition at line 4501 of file hexrays.hpp.
◆ MBA_GLBOPT
#define MBA_GLBOPT 0x00010000 |
microcode has been optimized globally
Definition at line 4498 of file hexrays.hpp.
◆ MBA_INITIAL_FLAGS
#define MBA_INITIAL_FLAGS |
Definition at line 4514 of file hexrays.hpp.
◆ MBA_INSGDL
#define MBA_INSGDL 0x01000000 |
display instruction in graphs
Definition at line 4507 of file hexrays.hpp.
◆ MBA_LOADED
#define MBA_LOADED 0x00000008 |
loaded gdl, no instructions (debugging)
Definition at line 4483 of file hexrays.hpp.
◆ MBA_LVARS0
#define MBA_LVARS0 0x00040000 |
lvar pre-allocation has been performed
Definition at line 4499 of file hexrays.hpp.
◆ MBA_LVARS1
#define MBA_LVARS1 0x00080000 |
lvar real allocation has been performed
Definition at line 4500 of file hexrays.hpp.
◆ MBA_NICE
#define MBA_NICE 0x02000000 |
apply transformations to c code
Definition at line 4508 of file hexrays.hpp.
◆ MBA_NOFUNC
#define MBA_NOFUNC 0x00000002 |
function is not present, addresses might be wrong
Definition at line 4481 of file hexrays.hpp.
◆ MBA_NUMADDR
#define MBA_NUMADDR 0x20000000 |
display definition addresses for numbers
Definition at line 4511 of file hexrays.hpp.
◆ MBA_PASSREGS
#define MBA_PASSREGS 0x00000040 |
Definition at line 4486 of file hexrays.hpp.
◆ MBA_PATTERN
#define MBA_PATTERN 0x00000004 |
microcode pattern, callinfo is present
Definition at line 4482 of file hexrays.hpp.
◆ MBA_PRCDEFS
#define MBA_PRCDEFS 0x00000001 |
use precise defeas for chain-allocated lvars
Definition at line 4480 of file hexrays.hpp.
◆ MBA_PREOPT
#define MBA_PREOPT 0x00000200 |
preoptimization stage complete
Definition at line 4491 of file hexrays.hpp.
◆ MBA_REFINE
#define MBA_REFINE 0x04000000 |
may refine return value size
Definition at line 4509 of file hexrays.hpp.
◆ MBA_RETFP
#define MBA_RETFP 0x00000010 |
function returns floating point value
Definition at line 4484 of file hexrays.hpp.
◆ MBA_RETREF
#define MBA_RETREF 0x00008000 |
return type has been refined
Definition at line 4497 of file hexrays.hpp.
◆ MBA_SAVRST
#define MBA_SAVRST 0x00004000 |
save-restore analysis has been performed
Definition at line 4496 of file hexrays.hpp.
◆ MBA_SHORT
#define MBA_SHORT 0x00400000 |
use short display
Definition at line 4505 of file hexrays.hpp.
◆ MBA_SPLINFO
#define MBA_SPLINFO 0x00000020 |
(final_type ? idb_spoiled : spoiled_regs) is valid
Definition at line 4485 of file hexrays.hpp.
◆ MBA_THUNK
#define MBA_THUNK 0x00000080 |
thunk function
Definition at line 4487 of file hexrays.hpp.
◆ MBA_VALNUM
#define MBA_VALNUM 0x40000000 |
display value numbers
Definition at line 4512 of file hexrays.hpp.
◆ MBA_WINGR32
#define MBA_WINGR32 0x10000000 |
use wingraph32
Definition at line 4510 of file hexrays.hpp.
◆ MBL_BACKPROP
#define MBL_BACKPROP 0x1000 |
performed backprop_cc
Definition at line 3829 of file hexrays.hpp.
◆ MBL_CALL
#define MBL_CALL 0x0800 |
call information has been built
Definition at line 3828 of file hexrays.hpp.
◆ MBL_COMB
#define MBL_COMB 0x0040 |
needs "combine" pass
Definition at line 3823 of file hexrays.hpp.
◆ MBL_DEAD
#define MBL_DEAD 0x0100 |
needs "eliminate deads" pass
Definition at line 3825 of file hexrays.hpp.
◆ MBL_DMT64
#define MBL_DMT64 0x0020 |
needs "demote 64bits"
Definition at line 3822 of file hexrays.hpp.
◆ MBL_DSLOT
#define MBL_DSLOT 0x4000 |
block for delay slot
Definition at line 3831 of file hexrays.hpp.
◆ MBL_FAKE
#define MBL_FAKE 0x0002 |
fake block
Definition at line 3818 of file hexrays.hpp.
◆ MBL_GOTO
#define MBL_GOTO 0x0004 |
this block is a goto target
Definition at line 3819 of file hexrays.hpp.
◆ MBL_INCONST
#define MBL_INCONST 0x0400 |
inconsistent lists: we are building them
Definition at line 3827 of file hexrays.hpp.
◆ MBL_KEEP
#define MBL_KEEP 0x10000 |
do not remove even if unreachable
Definition at line 3833 of file hexrays.hpp.
◆ MBL_LIST
#define MBL_LIST 0x0200 |
use/def lists are ready (not dirty)
Definition at line 3826 of file hexrays.hpp.
◆ MBL_NONFAKE
#define MBL_NONFAKE 0x0000 |
regular block
Definition at line 3817 of file hexrays.hpp.
◆ MBL_NORET
#define MBL_NORET 0x2000 |
dead end block: doesn't return execution control
Definition at line 3830 of file hexrays.hpp.
◆ MBL_PRIV
#define MBL_PRIV 0x0001 |
private block - no instructions except the specified are accepted (used in patterns)
Definition at line 3816 of file hexrays.hpp.
◆ MBL_PROP
#define MBL_PROP 0x0080 |
needs 'propagation' pass
Definition at line 3824 of file hexrays.hpp.
◆ MBL_PUSH
#define MBL_PUSH 0x0010 |
needs "convert push/pop instructions"
Definition at line 3821 of file hexrays.hpp.
◆ MBL_TCAL
#define MBL_TCAL 0x0008 |
aritifical call block for tail calls
Definition at line 3820 of file hexrays.hpp.
◆ MBL_VALRANGES
#define MBL_VALRANGES 0x8000 |
should optimize using value ranges
Definition at line 3832 of file hexrays.hpp.
◆ NALT_VD
#define NALT_VD 2 |
this index is not used by ida
Definition at line 4713 of file hexrays.hpp.
◆ NORET_FORBID_ANALYSIS
#define NORET_FORBID_ANALYSIS 0x02 |
Definition at line 3672 of file hexrays.hpp.
◆ NORET_IGNORE_WAS_NORET_ICALL
#define NORET_IGNORE_WAS_NORET_ICALL 0x01 |
Definition at line 3671 of file hexrays.hpp.
◆ OPF_WINDOW_MGMT_MASK
#define OPF_WINDOW_MGMT_MASK 0x07 |
Definition at line 5390 of file hexrays.hpp.
◆ OPROP_CCFLAGS
#define OPROP_CCFLAGS 0x08 |
mop_n: a pc-relative value mop_a: an address obtained from a relocation else: value of a condition code register (like mr_cc)
Definition at line 2454 of file hexrays.hpp.
◆ OPROP_FLOAT
#define OPROP_FLOAT 0x04 |
possibly floating value
Definition at line 2451 of file hexrays.hpp.
◆ OPROP_IMPDONE
#define OPROP_IMPDONE 0x01 |
imported operand (a pointer) has been dereferenced
Definition at line 2449 of file hexrays.hpp.
◆ OPROP_LOWADDR
#define OPROP_LOWADDR 0x20 |
a low address offset
Definition at line 2456 of file hexrays.hpp.
◆ OPROP_UDEFVAL
#define OPROP_UDEFVAL 0x10 |
uses undefined value
Definition at line 2455 of file hexrays.hpp.
◆ OPROP_UDT
#define OPROP_UDT 0x02 |
a struct or union
Definition at line 2450 of file hexrays.hpp.
◆ OPTI_ADDREXPRS
#define OPTI_ADDREXPRS 0x0001 |
optimize all address expressions (&x+N; &x-&y)
Definition at line 3612 of file hexrays.hpp.
◆ OPTI_COMBINSNS
#define OPTI_COMBINSNS 0x0004 |
may combine insns (only for optimize_insn)
Definition at line 3614 of file hexrays.hpp.
◆ OPTI_MINSTKREF
#define OPTI_MINSTKREF 0x0002 |
may update minstkref
Definition at line 3613 of file hexrays.hpp.
◆ OPTI_NO_LDXOPT
#define OPTI_NO_LDXOPT 0x0008 |
the function is called after the propagation attempt, we do not optimize low/high(ldx) in this case
Definition at line 3617 of file hexrays.hpp.
◆ SIZEOF_BLOCK_CHAINS
#define SIZEOF_BLOCK_CHAINS 56 |
Definition at line 3370 of file hexrays.hpp.
◆ SVW_FLOAT
#define SVW_FLOAT 0x01 |
Definition at line 1371 of file hexrays.hpp.
◆ SVW_INT
#define SVW_INT 0x00 |
Definition at line 1370 of file hexrays.hpp.
◆ SVW_SOFT
#define SVW_SOFT 0x02 |
Definition at line 1372 of file hexrays.hpp.
◆ VLR_ALL
#define VLR_ALL 0x01 |
Definition at line 332 of file hexrays.hpp.
◆ VLR_BITS
#define VLR_BITS 0x05 |
Definition at line 336 of file hexrays.hpp.
◆ VLR_IVLS
#define VLR_IVLS 0x02 |
Definition at line 333 of file hexrays.hpp.
◆ VLR_NONE
#define VLR_NONE 0x00 |
Definition at line 331 of file hexrays.hpp.
◆ VLR_RANGE
#define VLR_RANGE 0x03 |
Definition at line 334 of file hexrays.hpp.
◆ VLR_SECT
#define VLR_SECT 0x06 |
Definition at line 337 of file hexrays.hpp.
◆ VLR_SRANGE
#define VLR_SRANGE 0x04 |
Definition at line 335 of file hexrays.hpp.
◆ VLR_TYPE
#define VLR_TYPE 0x0F |
Definition at line 330 of file hexrays.hpp.
◆ VLR_UNION
#define VLR_UNION 0x07 |
Definition at line 339 of file hexrays.hpp.
◆ VLR_UNK
#define VLR_UNK 0x08 |
Definition at line 342 of file hexrays.hpp.
◆ VR_AT_END
#define VR_AT_END 0x0001 |
get value ranges after the instruction or at the block end, just after the last instruction (if M is nullptr)
Definition at line 4212 of file hexrays.hpp.
◆ VR_AT_START
#define VR_AT_START 0x0000 |
get value ranges before the instruction or at the block start (if M is nullptr)
- Examples
- hexrays_sample15.cpp.
Definition at line 4209 of file hexrays.hpp.
◆ VR_EXACT
#define VR_EXACT 0x0002 |
find exact match.
if not set, the returned valrng size will be >= vivl.size
- Examples
- hexrays_sample15.cpp.
Definition at line 4214 of file hexrays.hpp.
Typedef Documentation
◆ array_of_bitsets
typedef qvector<bitset_t> array_of_bitsets |
Definition at line 1819 of file hexrays.hpp.
◆ array_of_ivlsets
typedef qvector<ivlset_t> array_of_ivlsets |
Definition at line 1991 of file hexrays.hpp.
◆ block_chains_vec_t
typedef qvector<block_chains_t> block_chains_vec_t |
Graph chains.
This class represents all ud and du chains of the decompiled function
Definition at line 3428 of file hexrays.hpp.
◆ boundaries_t
typedef std::map<cinsn_t *, rangeset_t> boundaries_t |
Definition at line 6940 of file hexrays.hpp.
◆ cfuncptr_t
typedef qrefcnt_t<cfunc_t> cfuncptr_t |
Definition at line 282 of file hexrays.hpp.
◆ cfuncptrs_t
typedef qvector<cfuncptr_t> cfuncptrs_t |
Definition at line 7135 of file hexrays.hpp.
◆ cinsn_list_t
typedef qlist<cinsn_t> cinsn_list_t |
Definition at line 6567 of file hexrays.hpp.
◆ cinsnptrvec_t
typedef qvector<cinsn_t *> cinsnptrvec_t |
Vector of pointers to statements.
Definition at line 6467 of file hexrays.hpp.
◆ cmt_type_t
typedef int cmt_type_t |
Comment types.
Definition at line 7589 of file hexrays.hpp.
◆ ctree_items_t
typedef qvector<citem_t *> ctree_items_t |
Vector of parents.
Definition at line 5781 of file hexrays.hpp.
◆ eamap_t
typedef std::map<ea_t, cinsnptrvec_t> eamap_t |
Definition at line 6938 of file hexrays.hpp.
◆ easet_t
typedef std::set<ea_t> easet_t |
Definition at line 274 of file hexrays.hpp.
◆ hexdsp_t
typedef void * hexdsp_t(int code,...) |
Hex-Rays decompiler dispatcher.
All interaction with the decompiler is carried out by the intermediary of this dispatcher.
Definition at line 7318 of file hexrays.hpp.
◆ hexrays_cb_t
typedef ssize_t hexrays_cb_t(void *ud, hexrays_event_t event, va_list va) |
Handler of decompiler events.
- Parameters
-
ud user data. the value specified at the handler installation time is passed here. event decompiler event code va additional arguments
- Returns
- as a rule the callback must return 0 unless specified otherwise in the event description.
Definition at line 7517 of file hexrays.hpp.
◆ hexwarns_t
typedef qvector<hexwarn_t> hexwarns_t |
Definition at line 4330 of file hexrays.hpp.
◆ history_t
typedef qstack<history_item_t> history_t |
Navigation history.
Definition at line 7586 of file hexrays.hpp.
◆ iterator_word
typedef size_t iterator_word |
Definition at line 8594 of file hexrays.hpp.
◆ lvar_mapping_t
typedef std::map<lvar_locator_t, lvar_locator_t> lvar_mapping_t |
Local variable mapping (is used to merge variables)
Definition at line 1485 of file hexrays.hpp.
◆ lvar_saved_infos_t
typedef qvector<lvar_saved_info_t> lvar_saved_infos_t |
Definition at line 1482 of file hexrays.hpp.
◆ maymust_t
typedef int maymust_t |
Definition at line 442 of file hexrays.hpp.
◆ mbitmap_t
typedef size_t mbitmap_t |
Definition at line 1742 of file hexrays.hpp.
◆ mbl_array_t
using mbl_array_t = mba_t |
Definition at line 5027 of file hexrays.hpp.
◆ mcallargs_t
typedef qvector<mcallarg_t> mcallargs_t |
Definition at line 3047 of file hexrays.hpp.
◆ minsn_ptr_set_t
typedef std::set<minsn_t *> minsn_ptr_set_t |
Definition at line 275 of file hexrays.hpp.
◆ minsnptrs_t
typedef qvector<minsn_t*> minsnptrs_t |
Definition at line 277 of file hexrays.hpp.
◆ mlistvec_t
typedef qvector<mlist_t> mlistvec_t |
Definition at line 2065 of file hexrays.hpp.
◆ mopptrs_t
typedef qvector<mop_t*> mopptrs_t |
Definition at line 278 of file hexrays.hpp.
◆ mopt_t
typedef uint8 mopt_t |
Instruction operand types.
Definition at line 2253 of file hexrays.hpp.
◆ mopvec_t
typedef qvector<mop_t> mopvec_t |
Definition at line 279 of file hexrays.hpp.
◆ mreg_t
typedef int mreg_t |
Micro register.
Definition at line 262 of file hexrays.hpp.
◆ mregvec_t
typedef qvector<mreg_t> mregvec_t |
Definition at line 281 of file hexrays.hpp.
◆ parents_t
typedef ctree_items_t parents_t |
Definition at line 5782 of file hexrays.hpp.
◆ strings_t
typedef std::set<qstring> strings_t |
Definition at line 276 of file hexrays.hpp.
◆ svlr_t
typedef int64 svlr_t |
Definition at line 304 of file hexrays.hpp.
◆ udcall_map_t
typedef std::map<ea_t, udcall_t> udcall_map_t |
Definition at line 1655 of file hexrays.hpp.
◆ ui_stroff_ops_t
typedef qvector<ui_stroff_op_t> ui_stroff_ops_t |
Definition at line 7939 of file hexrays.hpp.
◆ uint64vec_t
typedef qvector<uint64> uint64vec_t |
Definition at line 280 of file hexrays.hpp.
◆ user_cmts_t
typedef std::map<treeloc_t, citem_cmt_t> user_cmts_t |
Definition at line 6024 of file hexrays.hpp.
◆ user_iflags_t
typedef std::map<citem_locator_t, int32> user_iflags_t |
Definition at line 6041 of file hexrays.hpp.
◆ user_labels_t
typedef std::map<int, qstring> user_labels_t |
Definition at line 6755 of file hexrays.hpp.
◆ user_numforms_t
typedef std::map<operand_locator_t, number_format_t> user_numforms_t |
Definition at line 843 of file hexrays.hpp.
◆ user_unions_t
typedef std::map<ea_t, intvec_t> user_unions_t |
Definition at line 6047 of file hexrays.hpp.
◆ uval_ivl_ivlset_t
typedef ivlset_tpl<ivl_t, uval_t> uval_ivl_ivlset_t |
Set of address intervals.
Bit arrays are efficient only for small sets. Potentially huge sets, like memory ranges, require another representation. ivlset_t is used for a list of memory locations in our decompiler.
Definition at line 1965 of file hexrays.hpp.
◆ uval_ivl_t
typedef ivl_tpl<uval_t> uval_ivl_t |
Definition at line 1838 of file hexrays.hpp.
◆ uvlr_t
typedef uint64 uvlr_t |
Definition at line 303 of file hexrays.hpp.
◆ voff_set_t
typedef std::set<voff_t> voff_set_t |
Definition at line 260 of file hexrays.hpp.
Enumeration Type Documentation
◆ anonymous enum
anonymous enum |
Definition at line 305 of file hexrays.hpp.
◆ allow_unused_labels_t
Unused label disposition.
Enumerator | |
---|---|
FORBID_UNUSED_LABELS | Unused labels cause interr. |
ALLOW_UNUSED_LABELS | Unused labels are permitted. |
Definition at line 6749 of file hexrays.hpp.
◆ cmpop_t
enum cmpop_t |
Definition at line 310 of file hexrays.hpp.
◆ cmt_retrieval_type_t
enum cmt_retrieval_type_t |
Comment retrieval type.
Ctree remembers what comments have already been retrieved. This is done because our mechanism of item_precisers is still not perfect and in theory some listing lines cannot be told apart. To avoid comment duplication, we remember if a comment has already been used or not.
Enumerator | |
---|---|
RETRIEVE_ONCE | Retrieve comment if it has not been used yet. |
RETRIEVE_ALWAYS | Retrieve comment even if it has been used. |
Definition at line 6008 of file hexrays.hpp.
◆ ctree_maturity_t
enum ctree_maturity_t |
Ctree maturity level.
The level will increase as we switch from one phase of ctree generation to the next one
Definition at line 5934 of file hexrays.hpp.
◆ ctype_t
enum ctype_t |
Ctree item code.
At the beginning of this list there are expression codes (cot_...), followed by statement codes (cit_...).
Definition at line 5535 of file hexrays.hpp.
◆ cursor_item_type_t
enum cursor_item_type_t |
Type of the cursor item.
Definition at line 6655 of file hexrays.hpp.
◆ funcrole_t
enum funcrole_t |
Function roles.
They are used to calculate use/def lists and to recognize functions without using string comparisons.
Definition at line 3052 of file hexrays.hpp.
◆ gctype_t
enum gctype_t |
Kind of use-def and def-use chains.
Definition at line 5051 of file hexrays.hpp.
◆ hexcall_t
enum hexcall_t |
API call numbers.
Definition at line 7981 of file hexrays.hpp.
◆ item_preciser_t
enum item_preciser_t |
Comment item preciser.
Item preciser is used to assign comments to ctree items A ctree item may have several comments attached to it. For example, an if-statement may have the following comments:
if ( ... ) // cmt1 { // cmt2 } // cmt3 else // cmt4 { -- usually the else block has a separate ea }
The first 4 comments will have the same ea. In order to denote the exact line for the comment, we store the item_preciser along with ea.
Definition at line 5960 of file hexrays.hpp.
◆ mba_maturity_t
enum mba_maturity_t |
Microcode maturity levels.
Definition at line 4334 of file hexrays.hpp.
◆ mblock_type_t
enum mblock_type_t |
Basic block types.
Definition at line 3784 of file hexrays.hpp.
◆ mcode_t
enum mcode_t |
Definition at line 540 of file hexrays.hpp.
◆ memreg_index_t
enum memreg_index_t |
< memory region types
Definition at line 4349 of file hexrays.hpp.
◆ side_effect_t
enum side_effect_t |
How to handle side effect of change_size() Sometimes we need to create a temporary operand and change its size in order to check some hypothesis.
If we revert our changes, we do not want that the database (global variables, stack frame, etc) changes in any manner.
Definition at line 2424 of file hexrays.hpp.
◆ use_curly_t
enum use_curly_t |
Should curly braces be printed?
Enumerator | |
---|---|
CALC_CURLY_BRACES | print curly braces if necessary |
NO_CURLY_BRACES | don't print curly braces |
USE_CURLY_BRACES | print curly braces without any checks |
Definition at line 6387 of file hexrays.hpp.
◆ warnid_t
enum warnid_t |
Warning ids.
Definition at line 4247 of file hexrays.hpp.
Function Documentation
◆ accepts_small_udts()
bool accepts_small_udts | ( | ctype_t | op | ) |
Is the operator allowed on small structure or union?
Definition at line 5726 of file hexrays.hpp.
References cit_return, cot_asg, cot_comma, cot_eq, cot_ne, and cot_tern.
◆ accepts_udts()
bool accepts_udts | ( | ctype_t | op | ) |
Definition at line 5650 of file hexrays.hpp.
◆ arglocs_overlap()
Do two arglocs overlap?
Definition at line 10012 of file hexrays.hpp.
Referenced by lvar_t::has_common(), and lvar_t::has_common_bit().
◆ asgop()
Convert plain operator into assignment operator. For example, cot_add returns cot_asgadd.
Definition at line 11597 of file hexrays.hpp.
◆ asgop_revert()
Convert assignment operator into plain operator.
For example, cot_asgadd returns cot_add
- Returns
- cot_empty is the input operator is not an assignment operator.
Definition at line 11603 of file hexrays.hpp.
◆ block_chains_begin()
block_chains_iterator_t block_chains_begin | ( | const block_chains_t * | set | ) |
Get iterator pointing to the beginning of block_chains_t.
Definition at line 9630 of file hexrays.hpp.
◆ block_chains_clear()
void block_chains_clear | ( | block_chains_t * | set | ) |
Clear block_chains_t.
Definition at line 9671 of file hexrays.hpp.
◆ block_chains_end()
block_chains_iterator_t block_chains_end | ( | const block_chains_t * | set | ) |
Get iterator pointing to the end of block_chains_t.
Definition at line 9639 of file hexrays.hpp.
◆ block_chains_erase()
void block_chains_erase | ( | block_chains_t * | set, |
block_chains_iterator_t | p | ||
) |
Erase current element from block_chains_t.
Definition at line 9664 of file hexrays.hpp.
◆ block_chains_find()
block_chains_iterator_t block_chains_find | ( | const block_chains_t * | set, |
const chain_t & | val | ||
) |
Find the specified key in set block_chains_t.
Definition at line 9612 of file hexrays.hpp.
◆ block_chains_free()
void block_chains_free | ( | block_chains_t * | set | ) |
Delete block_chains_t instance.
Definition at line 9685 of file hexrays.hpp.
◆ block_chains_get()
chain_t & block_chains_get | ( | block_chains_iterator_t | p | ) |
Get reference to the current set value.
Definition at line 9605 of file hexrays.hpp.
◆ block_chains_insert()
block_chains_iterator_t block_chains_insert | ( | block_chains_t * | set, |
const chain_t & | val | ||
) |
Insert new (chain_t) into set block_chains_t.
Definition at line 9621 of file hexrays.hpp.
◆ block_chains_new()
block_chains_t * block_chains_new | ( | ) |
Create a new block_chains_t instance.
Definition at line 9692 of file hexrays.hpp.
◆ block_chains_next()
block_chains_iterator_t block_chains_next | ( | block_chains_iterator_t | p | ) |
Move to the next element.
Definition at line 9648 of file hexrays.hpp.
◆ block_chains_prev()
block_chains_iterator_t block_chains_prev | ( | block_chains_iterator_t | p | ) |
Move to the previous element.
Definition at line 9656 of file hexrays.hpp.
◆ block_chains_size()
size_t block_chains_size | ( | block_chains_t * | set | ) |
Get size of block_chains_t.
Definition at line 9678 of file hexrays.hpp.
◆ boundaries_begin()
boundaries_iterator_t boundaries_begin | ( | const boundaries_t * | map | ) |
Get iterator pointing to the beginning of boundaries_t.
Definition at line 9528 of file hexrays.hpp.
◆ boundaries_clear()
void boundaries_clear | ( | boundaries_t * | map | ) |
Clear boundaries_t.
Definition at line 9569 of file hexrays.hpp.
◆ boundaries_end()
boundaries_iterator_t boundaries_end | ( | const boundaries_t * | map | ) |
Get iterator pointing to the end of boundaries_t.
Definition at line 9537 of file hexrays.hpp.
◆ boundaries_erase()
void boundaries_erase | ( | boundaries_t * | map, |
boundaries_iterator_t | p | ||
) |
Erase current element from boundaries_t.
Definition at line 9562 of file hexrays.hpp.
◆ boundaries_find()
boundaries_iterator_t boundaries_find | ( | const boundaries_t * | map, |
const cinsn_t *& | key | ||
) |
Find the specified key in boundaries_t.
Definition at line 9510 of file hexrays.hpp.
◆ boundaries_first()
cinsn_t *const & boundaries_first | ( | boundaries_iterator_t | p | ) |
Get reference to the current map key.
Definition at line 9496 of file hexrays.hpp.
◆ boundaries_free()
void boundaries_free | ( | boundaries_t * | map | ) |
Delete boundaries_t instance.
Definition at line 9583 of file hexrays.hpp.
◆ boundaries_insert()
boundaries_iterator_t boundaries_insert | ( | boundaries_t * | map, |
const cinsn_t *& | key, | ||
const rangeset_t & | val | ||
) |
Insert new (cinsn_t *, rangeset_t) pair into boundaries_t.
Definition at line 9519 of file hexrays.hpp.
◆ boundaries_new()
boundaries_t * boundaries_new | ( | ) |
Create a new boundaries_t instance.
Definition at line 9590 of file hexrays.hpp.
◆ boundaries_next()
boundaries_iterator_t boundaries_next | ( | boundaries_iterator_t | p | ) |
Move to the next element.
Definition at line 9546 of file hexrays.hpp.
◆ boundaries_prev()
boundaries_iterator_t boundaries_prev | ( | boundaries_iterator_t | p | ) |
Move to the previous element.
Definition at line 9554 of file hexrays.hpp.
◆ boundaries_second()
rangeset_t & boundaries_second | ( | boundaries_iterator_t | p | ) |
Get reference to the current map value.
Definition at line 9503 of file hexrays.hpp.
◆ boundaries_size()
size_t boundaries_size | ( | boundaries_t * | map | ) |
Get size of boundaries_t.
Definition at line 9576 of file hexrays.hpp.
◆ call_helper()
cexpr_t * call_helper | ( | const tinfo_t & | rettype, |
carglist_t * | args, | ||
const char * | format, | ||
... | |||
) |
Definition at line 6809 of file hexrays.hpp.
◆ change_hexrays_config()
bool change_hexrays_config | ( | const char * | directive | ) |
Parse DIRECTIVE and update the current configuration variables.
For the syntax see hexrays.cfg
Definition at line 11505 of file hexrays.hpp.
◆ checkout_hexrays_license()
bool checkout_hexrays_license | ( | bool | silent | ) |
Check out a floating decompiler license.
This function will display a dialog box if the license is not available. For non-floating licenses this function is effectively no-op. It is not necessary to call this function before decompiling. If the license was not checked out, the decompiler will automatically do it. This function can be used to check out a license in advance and ensure that a license is available.
- Parameters
-
silent silently fail if the license cannot be checked out.
- Returns
- false if failed
Definition at line 11517 of file hexrays.hpp.
◆ clear_cached_cfuncs()
void clear_cached_cfuncs | ( | ) |
Flush all cached decompilation results.
Definition at line 12337 of file hexrays.hpp.
◆ close_hexrays_waitbox()
void close_hexrays_waitbox | ( | ) |
Close the waitbox displayed by the decompiler.
Useful if DECOMP_NO_HIDE was used during decompilation.
Definition at line 12307 of file hexrays.hpp.
◆ close_pseudocode()
bool close_pseudocode | ( | TWidget * | f | ) |
Close pseudocode window.
- Parameters
-
f pointer to window
- Returns
- false if failed
Definition at line 11529 of file hexrays.hpp.
◆ convert_to_user_call()
try to generate user-defined call for an instruction
- Returns
- Microcode error codes code: MERR_OK - user-defined call generated else - error (MERR_INSN == inacceptable udc.tif)
Definition at line 10132 of file hexrays.hpp.
◆ create_cfunc()
cfuncptr_t create_cfunc | ( | mba_t * | mba | ) |
Create a new cfunc_t object.
- Parameters
-
mba microcode object. After creating the cfunc object it takes the ownership of MBA.
Definition at line 12325 of file hexrays.hpp.
◆ create_empty_mba()
mba_t * create_empty_mba | ( | const mba_ranges_t & | mbr, |
hexrays_failure_t * | hf = nullptr |
||
) |
Create an empty microcode object.
Definition at line 7225 of file hexrays.hpp.
References DECOMP_VOID_MBA, and gen_microcode().
◆ create_field_name()
qstring create_field_name | ( | const tinfo_t & | type, |
uval_t | offset = BADADDR |
||
) |
Definition at line 12355 of file hexrays.hpp.
◆ create_helper()
cexpr_t * create_helper | ( | bool | standalone, |
const tinfo_t & | type, | ||
const char * | format, | ||
... | |||
) |
Definition at line 6787 of file hexrays.hpp.
◆ decompile()
cfuncptr_t decompile | ( | const mba_ranges_t & | mbr, |
hexrays_failure_t * | hf = nullptr , |
||
int | decomp_flags = 0 |
||
) |
Decompile a snippet or a function.
- Parameters
-
mbr what to decompile hf extended error information (if failed) decomp_flags bitwise combination of decompile() flags... bits
- Returns
- pointer to the decompilation result (a reference counted pointer). nullptr if failed.
- Examples
- hexrays_sample1.cpp, and hexrays_sample14.cpp.
Definition at line 12313 of file hexrays.hpp.
Referenced by decompile_func(), and decompile_snippet().
◆ decompile_func()
cfuncptr_t decompile_func | ( | func_t * | pfn, |
hexrays_failure_t * | hf = nullptr , |
||
int | decomp_flags = 0 |
||
) |
Decompile a function.
Multiple decompilations of the same function return the same object.
- Parameters
-
pfn pointer to function to decompile hf extended error information (if failed) decomp_flags bitwise combination of decompile() flags... bits
- Returns
- pointer to the decompilation result (a reference counted pointer). nullptr if failed.
Definition at line 7182 of file hexrays.hpp.
References decompile().
◆ decompile_many()
bool decompile_many | ( | const char * | outfile, |
const eavec_t * | funcaddrs, | ||
int | flags | ||
) |
Batch decompilation.
Decompile all or the specified functions
- Returns
- true if no internal error occurred and the user has not cancelled decompilation
- Parameters
-
outfile name of the output file funcaddrs list of functions to decompile. If nullptr or empty, then decompile all nonlib functions flags Batch decompilation bits
Definition at line 11541 of file hexrays.hpp.
◆ decompile_snippet()
cfuncptr_t decompile_snippet | ( | const rangevec_t & | ranges, |
hexrays_failure_t * | hf = nullptr , |
||
int | decomp_flags = 0 |
||
) |
Decompile a snippet.
- Parameters
-
ranges snippet ranges. ranges[0].start_ea is the entry point hf extended error information (if failed) decomp_flags bitwise combination of decompile() flags... bits
- Returns
- pointer to the decompilation result (a reference counted pointer). nullptr if failed.
Definition at line 7199 of file hexrays.hpp.
References decompile().
◆ dereference()
Dereference a pointer.
This function dereferences a pointer expression. It performs the following conversion: "ptr" => "*ptr" It can handle discrepancies in the pointer type and the access size.
- Parameters
-
e expression to deference ptrsize access size is_flt dereferencing for floating point access?
- Returns
- dereferenced expression
Definition at line 12041 of file hexrays.hpp.
◆ eamap_begin()
eamap_iterator_t eamap_begin | ( | const eamap_t * | map | ) |
Get iterator pointing to the beginning of eamap_t.
Definition at line 9419 of file hexrays.hpp.
◆ eamap_clear()
void eamap_clear | ( | eamap_t * | map | ) |
Clear eamap_t.
Definition at line 9460 of file hexrays.hpp.
◆ eamap_end()
eamap_iterator_t eamap_end | ( | const eamap_t * | map | ) |
Get iterator pointing to the end of eamap_t.
Definition at line 9428 of file hexrays.hpp.
◆ eamap_erase()
void eamap_erase | ( | eamap_t * | map, |
eamap_iterator_t | p | ||
) |
Erase current element from eamap_t.
Definition at line 9453 of file hexrays.hpp.
◆ eamap_find()
eamap_iterator_t eamap_find | ( | const eamap_t * | map, |
const ea_t & | key | ||
) |
Find the specified key in eamap_t.
Definition at line 9401 of file hexrays.hpp.
◆ eamap_first()
ea_t const & eamap_first | ( | eamap_iterator_t | p | ) |
Get reference to the current map key.
Definition at line 9387 of file hexrays.hpp.
◆ eamap_free()
void eamap_free | ( | eamap_t * | map | ) |
Delete eamap_t instance.
Definition at line 9474 of file hexrays.hpp.
◆ eamap_insert()
eamap_iterator_t eamap_insert | ( | eamap_t * | map, |
const ea_t & | key, | ||
const cinsnptrvec_t & | val | ||
) |
Insert new (ea_t, cinsnptrvec_t) pair into eamap_t.
Definition at line 9410 of file hexrays.hpp.
◆ eamap_new()
eamap_t * eamap_new | ( | ) |
Create a new eamap_t instance.
Definition at line 9481 of file hexrays.hpp.
◆ eamap_next()
eamap_iterator_t eamap_next | ( | eamap_iterator_t | p | ) |
Move to the next element.
Definition at line 9437 of file hexrays.hpp.
◆ eamap_prev()
eamap_iterator_t eamap_prev | ( | eamap_iterator_t | p | ) |
Move to the previous element.
Definition at line 9445 of file hexrays.hpp.
◆ eamap_second()
cinsnptrvec_t & eamap_second | ( | eamap_iterator_t | p | ) |
Get reference to the current map value.
Definition at line 9394 of file hexrays.hpp.
◆ eamap_size()
size_t eamap_size | ( | eamap_t * | map | ) |
Get size of eamap_t.
Definition at line 9467 of file hexrays.hpp.
◆ ENUM_SIZE()
enum hexrays_event_t ENUM_SIZE | ( | int | ) |
Decompiler events.
Use install_hexrays_callback() to install a handler for decompiler events. When the possible return value is not specified, your callback must return zero.
< Flowchart has been generated.
- Parameters
-
fc (qflow_chart_t *)
< SP change points have been calculated.
- Parameters
-
mba (mba_t *) stkpnts (stkpnts_t *) return Microcode error codes code
< Prolog analysis has been finished.
- Parameters
-
mba (mba_t *) fc (qflow_chart_t *) reachable_blocks (bitset_t *) decomp_flags (int) return Microcode error codes code
< Microcode has been generated.
- Parameters
-
mba (mba_t *) return Microcode error codes code
< Microcode has been preoptimized.
- Parameters
-
mba (mba_t *) return Microcode error codes code
< Basic block level optimization has been finished.
- Parameters
-
mba (mba_t *) return Microcode error codes code
< Local variables: preallocation step begins.
- Parameters
-
mba (mba_t *) This event may occur several times. Should return: 1 if modified microcode Negative values are Microcode error codes error codes
< Global optimization has been finished. If microcode is modified, MERR_LOOP must be returned. It will cause a complete restart of the optimization.
- Parameters
-
mba (mba_t *) return Microcode error codes code
< Structural analysis has been finished.
- Parameters
-
ct (control_graph_t *)
< Ctree maturity level is being changed.
- Parameters
-
cfunc (cfunc_t *) new_maturity (ctree_maturity_t)
< Internal error has occurred.
- Parameters
-
errcode (int )
< Trying to combine instructions of basic block.
- Parameters
-
blk (mblock_t *) insn (minsn_t *) Should return: 1 if combined the current instruction with a preceding one -1 if the instruction should not be combined 0 else
< Printing ctree and generating text.
- Parameters
-
cfunc (cfunc_t *) vp (vc_printer_t *) Returns: 1 if text has been generated by the plugin It is forbidden to modify ctree at this event.
< Function text has been generated. Plugins may modify the text in cfunc_t::sv. The text uses regular color codes (see lines.hpp) COLOR_ADDR is used to store pointers to ctree items.
- Parameters
-
cfunc (cfunc_t *)
< The optimizer is about to resolve stack addresses.
- Parameters
-
mba (mba_t *)
< Analyzing a call instruction.
- Parameters
-
blk (mblock_t *) blk->tail is the call. type (tinfo_t *) buffer for the output type. callinfo (mcallinfo_t **) prepared callinfo. The plugin should either specify the function type, either allocate and return a new mcallinfo_t object.
< A call instruction has been anallyzed.
- Parameters
-
blk (mblock_t *) blk->tail is the call.
< All calls have been analyzed.
- Parameters
-
mba (mba_t *) This event is generated immediately after analyzing all calls, before any optimizitions, call unmerging and block merging.
< New pseudocode view has been opened.
- Parameters
-
vu (vdui_t *)
< Existing pseudocode view has been reloaded with a new function. Its text has not been refreshed yet, only cfunc and mba pointers are ready.
- Parameters
-
vu (vdui_t *)
< Existing pseudocode text has been refreshed.
< Adding/removing pseudocode lines is forbidden in this event.
- Parameters
-
vu (vdui_t *) See also hxe_text_ready, which happens earlier
< Pseudocode view is being closed.
- Parameters
-
vu (vdui_t *)
< Keyboard has been hit.
- Parameters
-
vu (vdui_t *) key_code (int) VK_... shift_state (int) Should return: 1 if the event has been handled
< Mouse right click. Use hxe_populating_popup instead, in case you want to add items in the popup menu.
- Parameters
-
vu (vdui_t *)
< Mouse double click.
- Parameters
-
vu (vdui_t *) shift_state (int) Should return: 1 if the event has been handled
< Current cursor position has been changed. (for example, by left-clicking or using keyboard)
- Parameters
-
vu (vdui_t *)
< Create a hint for the current item.
- See also
- ui_get_custom_viewer_hint
- Parameters
-
vu (vdui_t *) hint (qstring *) important_lines (int *) Possible return values:
- Return values
-
0 continue collecting hints with other subscribers 1 stop collecting hints
< Decompiled text is ready.
- Parameters
-
vu (vdui_t *) This event can be used to modify the output text (sv). Obsolete. Please use hxe_func_printed instead.
< Populating popup menu. We can add menu items now.
< Local variable got renamed.
- Parameters
-
vu (vdui_t *) v (lvar_t *) name (const char *) is_user_name (bool) Please note that it is possible to read/write user settings for lvars directly from the idb.
< Local variable type got changed.
- Parameters
-
vu (vdui_t *) v (lvar_t *) tinfo (const tinfo_t *) Please note that it is possible to read/write user settings for lvars directly from the idb.
< Local variable comment got changed.
- Parameters
-
vu (vdui_t *) v (lvar_t *) cmt (const char *) Please note that it is possible to read/write user settings for lvars directly from the idb.
< Local variable mapping got changed.
<
- Parameters
-
vu (vdui_t *) from (lvar_t *) to (lvar_t *) Please note that it is possible to read/write user settings for lvars directly from the idb.
< Comment got changed.
Definition at line 7325 of file hexrays.hpp.
◆ gen_microcode()
mba_t * gen_microcode | ( | const mba_ranges_t & | mbr, |
hexrays_failure_t * | hf = nullptr , |
||
const mlist_t * | retlist = nullptr , |
||
int | decomp_flags = 0 , |
||
mba_maturity_t | reqmat = MMAT_GLBOPT3 |
||
) |
Generate microcode of an arbitrary code snippet.
- Parameters
-
mbr snippet ranges hf extended error information (if failed) retlist list of registers the snippet returns decomp_flags bitwise combination of decompile() flags... bits reqmat required microcode maturity
- Returns
- pointer to the microcode, nullptr if failed.
Definition at line 12319 of file hexrays.hpp.
Referenced by create_empty_mba().
◆ get_ctype_name()
const char * get_ctype_name | ( | ctype_t | op | ) |
Definition at line 12349 of file hexrays.hpp.
◆ get_current_operand()
bool get_current_operand | ( | gco_info_t * | out | ) |
Get the instruction operand under the cursor.
This function determines the operand that is under the cursor in the active disassembly listing. If the operand refers to a register or stack variable, it returns true.
- Parameters
-
out[out] output buffer
- Examples
- hexrays_sample12.cpp, and hexrays_sample15.cpp.
Definition at line 11567 of file hexrays.hpp.
◆ get_hexrays_version()
const char * get_hexrays_version | ( | ) |
Get decompiler version.
The returned string is of the form <major>.<minor>.<revision>.<build-date>
- Returns
- pointer to version string. For example: "2.0.0.140605"
- Examples
- hexrays_sample1.cpp, hexrays_sample10.cpp, hexrays_sample11.cpp, hexrays_sample12.cpp, hexrays_sample13.cpp, hexrays_sample14.cpp, hexrays_sample15.cpp, hexrays_sample16.cpp, hexrays_sample17.cpp, hexrays_sample18.cpp, hexrays_sample2.cpp, hexrays_sample3.cpp, hexrays_sample4.cpp, hexrays_sample5.cpp, hexrays_sample6.cpp, hexrays_sample7.cpp, and hexrays_sample9.cpp.
Definition at line 11511 of file hexrays.hpp.
◆ get_merror_desc()
Get textual description of an error code.
- Parameters
-
out the output buffer for the error description code Microcode error codes mba the microcode array
- Returns
- the error address
- Examples
- hexrays_sample12.cpp.
Definition at line 9800 of file hexrays.hpp.
◆ get_mreg_name()
int get_mreg_name | ( | qstring * | out, |
mreg_t | reg, | ||
int | width, | ||
void * | ud = nullptr |
||
) |
Get the microregister name.
- Parameters
-
out output buffer, may be nullptr reg microregister number width size of microregister in bytes. may be bigger than the real register size. ud reserved, must be nullptr
- Returns
- width of the printed register. this value may be less than the WIDTH argument.
Definition at line 10471 of file hexrays.hpp.
◆ get_op_signness()
type_sign_t get_op_signness | ( | ctype_t | op | ) |
Get operator sign. Meaningful for sign-dependent operators, like cot_sdiv.
Definition at line 11591 of file hexrays.hpp.
◆ get_signed_mcode()
THREAD_SAFE mcode_t get_signed_mcode | ( | mcode_t | code | ) |
Definition at line 9832 of file hexrays.hpp.
◆ get_temp_regs()
const mlist_t & get_temp_regs | ( | ) |
Get list of temporary registers.
Tempregs are temporary registers that are used during code generation. They do not map to regular processor registers. They are used only to store temporary values during execution of one instruction. Tempregs may not be used to pass a value from one block to another. In other words, at the end of a block all tempregs must be dead.
Definition at line 10447 of file hexrays.hpp.
◆ get_unsigned_mcode()
THREAD_SAFE mcode_t get_unsigned_mcode | ( | mcode_t | code | ) |
Definition at line 9838 of file hexrays.hpp.
◆ get_widget_vdui()
Get the vdui_t instance associated to the TWidget.
- Parameters
-
f pointer to window
- Returns
- a vdui_t *, or nullptr
- Examples
- hexrays_sample17.cpp, hexrays_sample3.cpp, and hexrays_sample5.cpp.
Definition at line 11535 of file hexrays.hpp.
◆ getb_reginsn() [1/2]
Skip assertions backward.
Definition at line 11053 of file hexrays.hpp.
◆ getb_reginsn() [2/2]
Definition at line 3780 of file hexrays.hpp.
◆ getf_reginsn() [1/2]
Skip assertions forward.
- Examples
- hexrays_sample11.cpp.
Definition at line 11047 of file hexrays.hpp.
◆ getf_reginsn() [2/2]
Definition at line 3779 of file hexrays.hpp.
◆ has_cached_cfunc()
bool has_cached_cfunc | ( | ea_t | ea | ) |
Do we have a cached decompilation result for 'ea'?
Definition at line 12343 of file hexrays.hpp.
◆ has_mcode_seloff()
THREAD_SAFE bool has_mcode_seloff | ( | mcode_t | op | ) |
Definition at line 684 of file hexrays.hpp.
◆ hexrays_alloc()
void * hexrays_alloc | ( | size_t | size | ) |
Definition at line 9698 of file hexrays.hpp.
◆ hexrays_free()
void hexrays_free | ( | void * | ptr | ) |
Definition at line 9704 of file hexrays.hpp.
◆ init_hexrays_plugin()
bool init_hexrays_plugin | ( | int | flags = 0 | ) |
Check that your plugin is compatible with hex-rays decompiler.
This function must be called before calling any other decompiler function.
- Parameters
-
flags reserved, must be 0
- Returns
- true if the decompiler exists and is compatible with your plugin
- Examples
- hexrays_sample1.cpp, hexrays_sample10.cpp, hexrays_sample11.cpp, hexrays_sample12.cpp, hexrays_sample13.cpp, hexrays_sample14.cpp, hexrays_sample15.cpp, hexrays_sample16.cpp, hexrays_sample17.cpp, hexrays_sample18.cpp, hexrays_sample2.cpp, hexrays_sample3.cpp, hexrays_sample4.cpp, hexrays_sample5.cpp, hexrays_sample6.cpp, hexrays_sample7.cpp, and hexrays_sample9.cpp.
Definition at line 8601 of file hexrays.hpp.
◆ install_hexrays_callback()
bool install_hexrays_callback | ( | hexrays_cb_t * | callback, |
void * | ud | ||
) |
Install handler for decompiler events.
- Parameters
-
callback handler to install ud user data. this pointer will be passed to your handler by the decompiler.
- Returns
- false if failed
- Examples
- hexrays_sample18.cpp, hexrays_sample2.cpp, hexrays_sample3.cpp, hexrays_sample5.cpp, hexrays_sample6.cpp, and hexrays_sample7.cpp.
Definition at line 12363 of file hexrays.hpp.
◆ install_microcode_filter()
bool install_microcode_filter | ( | microcode_filter_t * | filter, |
bool | install = true |
||
) |
register/unregister non-standard microcode generator
- Parameters
-
filter - microcode generator object install - TRUE - register the object, FALSE - unregister
- Returns
- success
Definition at line 10138 of file hexrays.hpp.
◆ install_optblock_handler()
void install_optblock_handler | ( | optblock_t * | opt | ) |
Install a block level custom optimizer.
- Parameters
-
opt an instance of optblock_t. cannot be destroyed before calling remove_optblock_handler().
- Examples
- hexrays_sample11.cpp.
Definition at line 10490 of file hexrays.hpp.
◆ install_optinsn_handler()
void install_optinsn_handler | ( | optinsn_t * | opt | ) |
Install an instruction level custom optimizer.
- Parameters
-
opt an instance of optinsn_t. cannot be destroyed before calling remove_optinsn_handler().
- Examples
- hexrays_sample10.cpp, and hexrays_sample16.cpp.
Definition at line 10477 of file hexrays.hpp.
◆ is_additive()
bool is_additive | ( | ctype_t | op | ) |
◆ is_assignment()
bool is_assignment | ( | ctype_t | op | ) |
Is assignment operator?
Definition at line 5648 of file hexrays.hpp.
References cot_asg, and cot_asgumod.
◆ is_binary()
bool is_binary | ( | ctype_t | op | ) |
Is binary operator?
Definition at line 5642 of file hexrays.hpp.
References cot_tern, and op_uses_y().
◆ is_bitop()
bool is_bitop | ( | ctype_t | op | ) |
◆ is_break_consumer()
bool is_break_consumer | ( | ctype_t | op | ) |
Does a break statement influence the specified statement code?
Definition at line 5709 of file hexrays.hpp.
References cit_switch, and is_loop().
◆ is_commutative()
bool is_commutative | ( | ctype_t | op | ) |
◆ is_kreg()
bool is_kreg | ( | mreg_t | r | ) |
Is a kernel register? Kernel registers are temporary registers that can be used freely.
They may be used to store values that cross instruction or basic block boundaries. Kernel registers do not map to regular processor registers. See also mba_t::alloc_kreg()
Definition at line 10453 of file hexrays.hpp.
Referenced by mop_t::is_kreg().
◆ is_logical()
bool is_logical | ( | ctype_t | op | ) |
Is logical operator?
Definition at line 5694 of file hexrays.hpp.
◆ is_loop()
bool is_loop | ( | ctype_t | op | ) |
Is loop statement code?
Definition at line 5702 of file hexrays.hpp.
References cit_do, cit_for, and cit_while.
Referenced by is_break_consumer().
◆ is_lvalue()
bool is_lvalue | ( | ctype_t | op | ) |
Is Lvalue operator?
Definition at line 5715 of file hexrays.hpp.
References cot_idx, cot_memptr, cot_memref, cot_obj, cot_ptr, and cot_var.
◆ is_may_access()
THREAD_SAFE bool is_may_access | ( | maymust_t | maymust | ) |
Definition at line 473 of file hexrays.hpp.
◆ is_mcode_addsub()
THREAD_SAFE bool is_mcode_addsub | ( | mcode_t | mcode | ) |
Definition at line 639 of file hexrays.hpp.
◆ is_mcode_call()
THREAD_SAFE bool is_mcode_call | ( | mcode_t | mcode | ) |
Definition at line 655 of file hexrays.hpp.
◆ is_mcode_commutative()
THREAD_SAFE bool is_mcode_commutative | ( | mcode_t | mcode | ) |
Definition at line 659 of file hexrays.hpp.
◆ is_mcode_convertible_to_jmp()
THREAD_SAFE bool is_mcode_convertible_to_jmp | ( | mcode_t | mcode | ) |
Definition at line 651 of file hexrays.hpp.
◆ is_mcode_convertible_to_set()
THREAD_SAFE bool is_mcode_convertible_to_set | ( | mcode_t | mcode | ) |
Definition at line 653 of file hexrays.hpp.
◆ is_mcode_divmod()
THREAD_SAFE bool is_mcode_divmod | ( | mcode_t | op | ) |
Definition at line 679 of file hexrays.hpp.
◆ is_mcode_fpu()
THREAD_SAFE bool is_mcode_fpu | ( | mcode_t | mcode | ) |
Definition at line 657 of file hexrays.hpp.
◆ is_mcode_j1()
THREAD_SAFE bool is_mcode_j1 | ( | mcode_t | mcode | ) |
Definition at line 647 of file hexrays.hpp.
◆ is_mcode_jcond()
THREAD_SAFE bool is_mcode_jcond | ( | mcode_t | mcode | ) |
Definition at line 649 of file hexrays.hpp.
◆ is_mcode_propagatable()
THREAD_SAFE bool is_mcode_propagatable | ( | mcode_t | mcode | ) |
May opcode be propagated? Such opcodes can be used in sub-instructions (nested instructions) There is a handful of non-propagatable opcodes, like jumps, ret, nop, etc All other regular opcodes are propagatable and may appear in a nested instruction.
Definition at line 9814 of file hexrays.hpp.
◆ is_mcode_set()
THREAD_SAFE bool is_mcode_set | ( | mcode_t | mcode | ) |
Definition at line 643 of file hexrays.hpp.
◆ is_mcode_set1()
THREAD_SAFE bool is_mcode_set1 | ( | mcode_t | mcode | ) |
Definition at line 645 of file hexrays.hpp.
◆ is_mcode_shift()
THREAD_SAFE bool is_mcode_shift | ( | mcode_t | mcode | ) |
Definition at line 672 of file hexrays.hpp.
◆ is_mcode_xdsu()
THREAD_SAFE bool is_mcode_xdsu | ( | mcode_t | mcode | ) |
Definition at line 641 of file hexrays.hpp.
◆ is_multiplicative()
bool is_multiplicative | ( | ctype_t | op | ) |
◆ is_prepost()
bool is_prepost | ( | ctype_t | op | ) |
Is pre/post increment/decrement operator?
Definition at line 5652 of file hexrays.hpp.
References cot_postinc, and cot_predec.
◆ is_relational()
bool is_relational | ( | ctype_t | op | ) |
Is comparison operator?
Definition at line 5646 of file hexrays.hpp.
◆ is_signed_mcode()
THREAD_SAFE bool is_signed_mcode | ( | mcode_t | code | ) |
Definition at line 732 of file hexrays.hpp.
◆ is_unary()
bool is_unary | ( | ctype_t | op | ) |
Is unary operator?
Definition at line 5644 of file hexrays.hpp.
References cot_fneg, and cot_predec.
◆ is_unsigned_mcode()
THREAD_SAFE bool is_unsigned_mcode | ( | mcode_t | code | ) |
Definition at line 734 of file hexrays.hpp.
◆ jcnd2set()
THREAD_SAFE mcode_t jcnd2set | ( | mcode_t | code | ) |
Definition at line 698 of file hexrays.hpp.
◆ lnot()
Logically negate the specified expression.
The specified expression will be logically negated. For example, "x == y" is converted into "x != y" by this function.
- Parameters
-
e expression to negate. After the call, e must not be used anymore because it can be changed by the function. The function return value must be used to refer to the expression.
- Returns
- logically negated expression.
- Examples
- hexrays_sample3.cpp.
Definition at line 12005 of file hexrays.hpp.
◆ locate_lvar()
bool locate_lvar | ( | lvar_locator_t * | out, |
ea_t | func_ea, | ||
const char * | varname | ||
) |
Find a variable by name.
- Parameters
-
out output buffer for the variable locator func_ea function start address varname variable name
- Returns
- success Since VARNAME is not always enough to find the variable, it may decompile the function.
Definition at line 10108 of file hexrays.hpp.
Referenced by rename_lvar().
◆ lvar_mapping_begin()
lvar_mapping_iterator_t lvar_mapping_begin | ( | const lvar_mapping_t * | map | ) |
Get iterator pointing to the beginning of lvar_mapping_t.
Definition at line 8765 of file hexrays.hpp.
◆ lvar_mapping_clear()
void lvar_mapping_clear | ( | lvar_mapping_t * | map | ) |
Clear lvar_mapping_t.
Definition at line 8806 of file hexrays.hpp.
◆ lvar_mapping_end()
lvar_mapping_iterator_t lvar_mapping_end | ( | const lvar_mapping_t * | map | ) |
Get iterator pointing to the end of lvar_mapping_t.
Definition at line 8774 of file hexrays.hpp.
◆ lvar_mapping_erase()
void lvar_mapping_erase | ( | lvar_mapping_t * | map, |
lvar_mapping_iterator_t | p | ||
) |
Erase current element from lvar_mapping_t.
Definition at line 8799 of file hexrays.hpp.
◆ lvar_mapping_find()
lvar_mapping_iterator_t lvar_mapping_find | ( | const lvar_mapping_t * | map, |
const lvar_locator_t & | key | ||
) |
Find the specified key in lvar_mapping_t.
Definition at line 8747 of file hexrays.hpp.
◆ lvar_mapping_first()
lvar_locator_t const & lvar_mapping_first | ( | lvar_mapping_iterator_t | p | ) |
Get reference to the current map key.
Definition at line 8733 of file hexrays.hpp.
◆ lvar_mapping_free()
void lvar_mapping_free | ( | lvar_mapping_t * | map | ) |
Delete lvar_mapping_t instance.
Definition at line 8820 of file hexrays.hpp.
◆ lvar_mapping_insert()
lvar_mapping_iterator_t lvar_mapping_insert | ( | lvar_mapping_t * | map, |
const lvar_locator_t & | key, | ||
const lvar_locator_t & | val | ||
) |
Insert new (lvar_locator_t, lvar_locator_t) pair into lvar_mapping_t.
Definition at line 8756 of file hexrays.hpp.
◆ lvar_mapping_new()
lvar_mapping_t * lvar_mapping_new | ( | ) |
Create a new lvar_mapping_t instance.
Definition at line 8827 of file hexrays.hpp.
◆ lvar_mapping_next()
lvar_mapping_iterator_t lvar_mapping_next | ( | lvar_mapping_iterator_t | p | ) |
Move to the next element.
Definition at line 8783 of file hexrays.hpp.
◆ lvar_mapping_prev()
lvar_mapping_iterator_t lvar_mapping_prev | ( | lvar_mapping_iterator_t | p | ) |
Move to the previous element.
Definition at line 8791 of file hexrays.hpp.
◆ lvar_mapping_second()
lvar_locator_t & lvar_mapping_second | ( | lvar_mapping_iterator_t | p | ) |
Get reference to the current map value.
Definition at line 8740 of file hexrays.hpp.
◆ lvar_mapping_size()
size_t lvar_mapping_size | ( | lvar_mapping_t * | map | ) |
Get size of lvar_mapping_t.
Definition at line 8813 of file hexrays.hpp.
◆ make_num()
cexpr_t * make_num | ( | uint64 | n, |
cfunc_t * | func = nullptr , |
||
ea_t | ea = BADADDR , |
||
int | opnum = 0 , |
||
type_sign_t | sign = no_sign , |
||
int | size = 0 |
||
) |
Create a number expression.
- Parameters
-
n value func current function ea definition address of the number opnum operand number of the number (in the disassembly listing) sign number sign size size of number in bytes Please note that the type of the resulting expression can be anything because it can be inherited from the disassembly listing or taken from the user specified number representation in the pseudocode view.
Definition at line 12029 of file hexrays.hpp.
◆ make_ref()
Create a reference.
This function performs the following conversion: "obj" => "&obj". It can handle casts, annihilate "&*", and process other special cases.
Definition at line 12035 of file hexrays.hpp.
◆ mark_cfunc_dirty()
bool mark_cfunc_dirty | ( | ea_t | ea, |
bool | close_views = false |
||
) |
Flush the cached decompilation results.
Erases a cache entry for the specified function.
- Parameters
-
ea function to erase from the cache close_views close pseudocode windows that show the function
- Returns
- if a cache entry existed.
Definition at line 12331 of file hexrays.hpp.
◆ mcode_modifies_d()
THREAD_SAFE bool mcode_modifies_d | ( | mcode_t | mcode | ) |
Definition at line 9844 of file hexrays.hpp.
◆ modify_user_lvar_info()
bool modify_user_lvar_info | ( | ea_t | func_ea, |
uint | mli_flags, | ||
const lvar_saved_info_t & | info | ||
) |
Modify saved local variable settings of one variable.
- Parameters
-
func_ea function start address info local variable info attrs mli_flags bits that specify which attrs defined by INFO are to be set
- Returns
- true if modified, false if invalid MLI_FLAGS passed
Definition at line 10102 of file hexrays.hpp.
Referenced by rename_lvar().
◆ modify_user_lvars()
bool modify_user_lvars | ( | ea_t | entry_ea, |
user_lvar_modifier_t & | mlv | ||
) |
Modify saved local variable settings.
- Parameters
-
entry_ea function start address mlv local variable modifier
- Returns
- true if modified variables
Definition at line 10096 of file hexrays.hpp.
◆ mreg2reg()
int mreg2reg | ( | mreg_t | reg, |
int | width | ||
) |
Map a microregister to a processor register.
- Parameters
-
reg microregister number width size of microregister in bytes
- Returns
- processor register id or -1
Definition at line 10465 of file hexrays.hpp.
◆ must_mcode_close_block()
THREAD_SAFE bool must_mcode_close_block | ( | mcode_t | mcode, |
bool | including_calls | ||
) |
Must an instruction with the given opcode be the last one in a block? Such opcodes are called closing opcodes.
- Parameters
-
mcode instruction opcode including_calls should m_call/m_icall be considered as the closing opcodes? If this function returns true, the opcode cannot appear in the middle of a block. Calls are a special case: unknown calls (is_unknown_call) are considered as closing opcodes.
Definition at line 9808 of file hexrays.hpp.
◆ negate_mcode_relation()
THREAD_SAFE mcode_t negate_mcode_relation | ( | mcode_t | code | ) |
Definition at line 9820 of file hexrays.hpp.
◆ negated_relation()
Negate a comparison operator. For example, cot_sge becomes cot_slt.
Definition at line 11579 of file hexrays.hpp.
◆ new_block()
cinsn_t * new_block | ( | ) |
Create a new block-statement.
Definition at line 12011 of file hexrays.hpp.
◆ op_uses_x()
bool op_uses_x | ( | ctype_t | op | ) |
Does operator use the 'x' field of cexpr_t?
Definition at line 5636 of file hexrays.hpp.
References cot_comma, cot_memptr, and cot_sizeof.
◆ op_uses_y()
bool op_uses_y | ( | ctype_t | op | ) |
Does operator use the 'y' field of cexpr_t?
Definition at line 5638 of file hexrays.hpp.
References cot_comma, cot_fdiv, and cot_idx.
Referenced by is_binary().
◆ op_uses_z()
bool op_uses_z | ( | ctype_t | op | ) |
Does operator use the 'z' field of cexpr_t?
Definition at line 5640 of file hexrays.hpp.
References cot_tern.
◆ open_pseudocode()
vdui_t * open_pseudocode | ( | ea_t | ea, |
int | flags | ||
) |
Open pseudocode window.
The specified function is decompiled and the pseudocode window is opened.
- Parameters
-
ea function to decompile flags a combination of OPF_ flags
- Returns
- false if failed
Definition at line 11523 of file hexrays.hpp.
◆ parse_user_call()
bool parse_user_call | ( | udcall_t * | udc, |
const char * | decl, | ||
bool | silent | ||
) |
Convert function type declaration into internal structure.
- Parameters
-
udc - pointer to output structure decl - function type declaration silent - if TRUE: do not show warning in case of incorrect type
- Returns
- success
Definition at line 10126 of file hexrays.hpp.
◆ print_vdloc()
void print_vdloc | ( | qstring * | vout, |
const vdloc_t & | loc, | ||
int | nbytes | ||
) |
Print vdloc.
Since vdloc does not always carry the size info, we pass it as NBYTES..
- Examples
- hexrays_sample4.cpp.
Definition at line 10006 of file hexrays.hpp.
◆ reg2mreg()
mreg_t reg2mreg | ( | int | reg | ) |
Map a processor register to a microregister.
- Parameters
-
reg processor register number
- Returns
- microregister register id or mr_none
- Examples
- hexrays_sample18.cpp.
Definition at line 10459 of file hexrays.hpp.
◆ remitem()
void remitem | ( | const citem_t * | e | ) |
Definition at line 11573 of file hexrays.hpp.
◆ remove_hexrays_callback()
int remove_hexrays_callback | ( | hexrays_cb_t * | callback, |
void * | ud | ||
) |
Uninstall handler for decompiler events.
- Parameters
-
callback handler to uninstall ud user data. if nullptr, all handler corresponding to callback
is uninstalled. if not nullptr, only the callback instance with the specifiedud
value is uninstalled.
- Returns
- number of uninstalled handlers.
- Examples
- hexrays_sample18.cpp, hexrays_sample2.cpp, hexrays_sample3.cpp, hexrays_sample5.cpp, hexrays_sample6.cpp, and hexrays_sample7.cpp.
Definition at line 12369 of file hexrays.hpp.
◆ remove_optblock_handler()
bool remove_optblock_handler | ( | optblock_t * | opt | ) |
Remove a block level custom optimizer.
- Examples
- hexrays_sample11.cpp.
Definition at line 10496 of file hexrays.hpp.
◆ remove_optinsn_handler()
bool remove_optinsn_handler | ( | optinsn_t * | opt | ) |
Remove an instruction level custom optimizer.
- Examples
- hexrays_sample10.cpp, and hexrays_sample16.cpp.
Definition at line 10483 of file hexrays.hpp.
◆ rename_lvar()
bool rename_lvar | ( | ea_t | func_ea, |
const char * | oldname, | ||
const char * | newname | ||
) |
Rename a local variable.
- Parameters
-
func_ea function start address oldname old name of the variable newname new name of the variable
- Returns
- success This is a convenience function. For bulk renaming consider using modify_user_lvars.
Definition at line 1625 of file hexrays.hpp.
References lvar_saved_info_t::ll, locate_lvar(), MLI_NAME, modify_user_lvar_info(), and lvar_saved_info_t::name.
◆ restore_user_cmts()
user_cmts_t * restore_user_cmts | ( | ea_t | func_ea | ) |
Restore user defined comments from the database.
- Parameters
-
func_ea the entry address of the function
- Returns
- collection of user defined comments. The returned object must be deleted by the caller using delete_user_cmts()
- Examples
- hexrays_sample4.cpp.
Definition at line 12095 of file hexrays.hpp.
◆ restore_user_defined_calls()
bool restore_user_defined_calls | ( | udcall_map_t * | udcalls, |
ea_t | func_ea | ||
) |
Restore user defined function calls from the database.
- Parameters
-
udcalls ptr to output buffer func_ea entry address of the function
- Returns
- success
Definition at line 10114 of file hexrays.hpp.
◆ restore_user_iflags()
user_iflags_t * restore_user_iflags | ( | ea_t | func_ea | ) |
Restore user defined citem iflags from the database.
- Parameters
-
func_ea the entry address of the function
- Returns
- collection of user defined iflags. The returned object must be deleted by the caller using delete_user_iflags()
- Examples
- hexrays_sample4.cpp.
Definition at line 12107 of file hexrays.hpp.
◆ restore_user_labels()
user_labels_t * restore_user_labels | ( | ea_t | func_ea | ) |
Restore user defined labels from the database.
- Parameters
-
func_ea the entry address of the function, ignored if FUNC != nullptr func pointer to current function
- Returns
- collection of user defined labels. The returned object must be deleted by the caller using delete_user_labels()
- Examples
- hexrays_sample4.cpp.
Definition at line 12083 of file hexrays.hpp.
◆ restore_user_labels2()
user_labels_t * restore_user_labels2 | ( | ea_t | func_ea, |
const cfunc_t * | func = nullptr |
||
) |
Definition at line 12089 of file hexrays.hpp.
◆ restore_user_lvar_settings()
bool restore_user_lvar_settings | ( | lvar_uservec_t * | lvinf, |
ea_t | func_ea | ||
) |
Restore user defined local variable settings in the database.
- Parameters
-
func_ea entry address of the function lvinf ptr to output buffer
- Returns
- success
- Examples
- hexrays_sample4.cpp.
Definition at line 10084 of file hexrays.hpp.
◆ restore_user_numforms()
user_numforms_t * restore_user_numforms | ( | ea_t | func_ea | ) |
Restore user defined number formats from the database.
- Parameters
-
func_ea the entry address of the function
- Returns
- collection of user defined number formats. The returned object must be deleted by the caller using delete_user_numforms()
- Examples
- hexrays_sample4.cpp.
Definition at line 12101 of file hexrays.hpp.
◆ restore_user_unions()
user_unions_t * restore_user_unions | ( | ea_t | func_ea | ) |
Restore user defined union field selections from the database.
- Parameters
-
func_ea the entry address of the function
- Returns
- collection of union field selections The returned object must be deleted by the caller using delete_user_unions()
Definition at line 12113 of file hexrays.hpp.
◆ save_user_cmts()
void save_user_cmts | ( | ea_t | func_ea, |
const user_cmts_t * | user_cmts | ||
) |
Save user defined comments into the database.
- Parameters
-
func_ea the entry address of the function user_cmts collection of user defined comments
Definition at line 12059 of file hexrays.hpp.
◆ save_user_defined_calls()
void save_user_defined_calls | ( | ea_t | func_ea, |
const udcall_map_t & | udcalls | ||
) |
Save user defined local function calls into the database.
- Parameters
-
func_ea entry address of the function udcalls user-specified info about user defined function calls
Definition at line 10120 of file hexrays.hpp.
◆ save_user_iflags()
void save_user_iflags | ( | ea_t | func_ea, |
const user_iflags_t * | iflags | ||
) |
Save user defined citem iflags into the database.
- Parameters
-
func_ea the entry address of the function iflags collection of user defined citem iflags
Definition at line 12071 of file hexrays.hpp.
◆ save_user_labels()
void save_user_labels | ( | ea_t | func_ea, |
const user_labels_t * | user_labels | ||
) |
Save user defined labels into the database.
- Parameters
-
func_ea the entry address of the function, ignored if FUNC != nullptr user_labels collection of user defined labels func pointer to current function, if FUNC != nullptr, then save labels using a more stable method that preserves them even when the decompiler output drastically changes
Definition at line 12047 of file hexrays.hpp.
◆ save_user_labels2()
void save_user_labels2 | ( | ea_t | func_ea, |
const user_labels_t * | user_labels, | ||
const cfunc_t * | func = nullptr |
||
) |
Definition at line 12053 of file hexrays.hpp.
◆ save_user_lvar_settings()
void save_user_lvar_settings | ( | ea_t | func_ea, |
const lvar_uservec_t & | lvinf | ||
) |
Save user defined local variable settings into the database.
- Parameters
-
func_ea entry address of the function lvinf user-specified info about local variables
Definition at line 10090 of file hexrays.hpp.
◆ save_user_numforms()
void save_user_numforms | ( | ea_t | func_ea, |
const user_numforms_t * | numforms | ||
) |
Save user defined number formats into the database.
- Parameters
-
func_ea the entry address of the function numforms collection of user defined comments
Definition at line 12065 of file hexrays.hpp.
◆ save_user_unions()
void save_user_unions | ( | ea_t | func_ea, |
const user_unions_t * | unions | ||
) |
Save user defined union field selections into the database.
- Parameters
-
func_ea the entry address of the function unions collection of union field selections
Definition at line 12077 of file hexrays.hpp.
◆ select_udt_by_offset()
int select_udt_by_offset | ( | const qvector< tinfo_t > * | udts, |
const ui_stroff_ops_t & | ops, | ||
ui_stroff_applicator_t & | applicator | ||
) |
Select UDT.
- Parameters
-
udts list of UDT tinfo_t for the selection, if nullptr or empty then UDTs from the "Local types" will be used ops operands applicator callback will be called to apply the selection for every operand
- Examples
- hexrays_sample17.cpp.
Definition at line 12622 of file hexrays.hpp.
◆ send_database()
void send_database | ( | const hexrays_failure_t & | err, |
bool | silent | ||
) |
Send the database to Hex-Rays.
This function sends the current database to the Hex-Rays server. The database is sent in the compressed form over an encrypted (SSL) connection.
- Parameters
-
err failure description object. Empty hexrays_failure_t object can be used if error information is not available. silent if false, a dialog box will be displayed before sending the database.
Definition at line 1155