|
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 |