IDAPython 9.0
|
Proxy of C++ codegen_t class.
Public Member Functions | |
__init__ (self, *args, **kwargs) | |
"void" | clear (self) |
clear(self) | |
"merror_t" | analyze_prolog (self, "qflow_chart_t" fc, "bitset_t" reachable) |
analyze_prolog(self, fc, reachable) -> merror_t Analyze prolog/epilog of the function to decompile. | |
"merror_t" | gen_micro (self) |
gen_micro(self) -> merror_t Generate microcode for one instruction. | |
"mreg_t" | load_operand (self, "int" opnum, "int" flags=0) |
load_operand(self, opnum, flags=0) -> mreg_t Generate microcode to load one operand. | |
"void" | microgen_completed (self) |
microgen_completed(self) This method is called when the microcode generation is done. | |
"merror_t" | prepare_gen_micro (self) |
prepare_gen_micro(self) -> merror_t Setup internal data to handle new instruction. | |
"mreg_t" | load_effective_address (self, "int" n, "int" flags=0) |
load_effective_address(self, n, flags=0) -> mreg_t Generate microcode to calculate the address of a memory operand. | |
"bool" | store_operand (self, "int" n, "mop_t" mop, "int" flags=0, "minsn_t **" outins=None) |
store_operand(self, n, mop, flags=0, outins=None) -> bool Generate microcode to store an operand. | |
"minsn_t *" | emit_micro_mvm (self, "mcode_t" code, "op_dtype_t" dtype, "uval_t" l, "uval_t" r, "uval_t" d, "int" offsize) |
emit_micro_mvm(self, code, dtype, l, r, d, offsize) -> minsn_t Emit one microinstruction. | |
"minsn_t *" | emit (self, *args) |
emit(self, code, width, l, r, d, offsize) -> minsn_t Emit one microinstruction. | |
Static Public Attributes | |
str | mba = property(_ida_hexrays.codegen_t_mba_get, _ida_hexrays.codegen_t_mba_set, doc=) |
str | mb = property(_ida_hexrays.codegen_t_mb_get, _ida_hexrays.codegen_t_mb_set, doc=) |
str | insn = property(_ida_hexrays.codegen_t_insn_get, _ida_hexrays.codegen_t_insn_set, doc=) |
str | ignore_micro = property(_ida_hexrays.codegen_t_ignore_micro_get, _ida_hexrays.codegen_t_ignore_micro_set, doc=) |
str | ii = property(_ida_hexrays.codegen_t_ii_get, _ida_hexrays.codegen_t_ii_set, doc=) |
Properties | |
thisown = property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc="The membership flag") | |
__init__ | ( | self, | |
* | args, | ||
** | kwargs ) |
"merror_t" analyze_prolog | ( | self, | |
"qflow_chart_t" | fc, | ||
"bitset_t" | reachable ) |
If prolog is found, allocate and fill 'mba->pi' structure.
fc | (C++: const class qflow_chart_t &) flow chart |
reachable | (C++: const class bitset_t &) bitmap of reachable blocks |
"void" clear | ( | self | ) |
"minsn_t *" emit | ( | self, | |
* | args ) |
This variant accepts pointers to operands. It is more difficult to use but permits to create virtually any instruction. Operands may be nullptr when it makes sense.
code | (C++: mcode_t) enum mcode_t |
width | int |
l | (C++: const mop_t *) uval_t |
r | (C++: const mop_t *) uval_t |
d | (C++: const mop_t *) uval_t |
offsize | int |
emit(self, code, l, r, d) -> minsn_t
"minsn_t *" emit_micro_mvm | ( | self, | |
"mcode_t" | code, | ||
"op_dtype_t" | dtype, | ||
"uval_t" | l, | ||
"uval_t" | r, | ||
"uval_t" | d, | ||
"int" | offsize ) |
This variant takes a data type not a size.
code | (C++: mcode_t) enum mcode_t |
dtype | (C++: op_dtype_t) |
l | (C++: uval_t) |
r | (C++: uval_t) |
d | (C++: uval_t) |
offsize | (C++: int) |
"merror_t" gen_micro | ( | self | ) |
The instruction is in INSN
"mreg_t" load_effective_address | ( | self, | |
"int" | n, | ||
"int" | flags = 0 ) |
n | (C++: int) - number of INSN operand |
flags | (C++: int) - reserved for future use |
"mreg_t" load_operand | ( | self, | |
"int" | opnum, | ||
"int" | flags = 0 ) |
opnum | (C++: int) number of INSN operand |
flags | (C++: int) reserved for future use |
"void" microgen_completed | ( | self | ) |
"merror_t" prepare_gen_micro | ( | self | ) |
This method should be called before calling gen_micro(). Usually gen_micro() is called by the decompiler. You have to call this function explicitly only if you yourself call gen_micro(). The instruction is in INSN
"bool" store_operand | ( | self, | |
"int" | n, | ||
"mop_t" | mop, | ||
"int" | flags = 0, | ||
"minsn_t **" | outins = None ) |
In case of success an arbitrary number of instructions can be generated (and even no instruction if the source and target are the same)
n | (C++: int) - number of target INSN operand |
mop | (C++: const mop_t &) - operand to be stored |
flags | (C++: int) - reserved for future use |
outins | (C++: minsn_t **) - (OUT) the last generated instruction |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |