|
IDA SDK
|
Public Attributes | |
| ea_t | cs = BADADDR |
| Current segment base paragraph. Initialized by the kernel. | |
| ea_t | ip = BADADDR |
| Virtual address of the instruction (address within the segment). More... | |
| ea_t | ea = BADADDR |
| Linear address of the instruction. More... | |
| uint16 | itype = 0 |
| Internal code of instruction (only for canonical insns - not user defined!). More... | |
| uint16 | size = 0 |
| Size of instruction in bytes. More... | |
| union { | |
| uint32 auxpref | |
| processor dependent field | |
| uint16 auxpref_u16 [2] | |
| uint8 auxpref_u8 [4] | |
| }; | |
| char | segpref = 0 |
| processor dependent field | |
| char | insnpref = 0 |
| processor dependent field | |
| int16 | flags = 0 |
| Instruction flags | |
| op_t | ops [UA_MAXOP] |
| array of operands | |
Public Member Functions | |
| bool | is_canon_insn (const processor_t &ph) const |
| see processor_t::is_canon_insn() | |
| uint32 | get_canon_feature (const processor_t &ph) const |
| see instruc_t::feature | |
| const char * | get_canon_mnem (const processor_t &ph) const |
| see instruc_t::name | |
| bool | is_macro (void) const |
| Is a macro instruction? | |
| bool | is_64bit (void) const |
| Belongs to a 64bit segment? | |
| void | add_cref (ea_t to, int opoff, cref_t type) const |
| Add a code cross-reference from the instruction. More... | |
| void | add_dref (ea_t to, int opoff, dref_t type) const |
| Add a data cross-reference from the instruction. More... | |
| ea_t | add_off_drefs (const op_t &x, dref_t type, int outf) const |
| Add xrefs for an operand of the instruction. More... | |
Analysis helpers | |
The following functions return the next byte, 2 bytes, 4 bytes, and 8 bytes of insn. They use and modify the size field (\insn_t{size}). Normally they are used in the analyzer to get bytes of the instruction.
| |
| uint8 | get_next_byte () |
| uint16 | get_next_word () |
| uint32 | get_next_dword () |
| uint64 | get_next_qword () |
Emulator helpers | |
| bool | create_op_data (ea_t ea_, int opoff, op_dtype_t dtype) const |
| Convert to data using information about operand value type (op_t::dtype). More... | |
| bool | create_op_data (ea_t ea_, const op_t &op) const |
| Convenient alias. | |
| bool | create_stkvar (const op_t &x, adiff_t v, int flags_) const |
| Create or modify a stack variable in the function frame. More... | |
|
inline |
Convert to data using information about operand value type (op_t::dtype).
Emulator could use this function to convert unexplored bytes to data when an instruction references them. This function creates data only if the address was unexplored.
| ea_ | linear address to be converted to data |
| opoff | offset of the operand from the start of instruction if the offset is unknown, then 0 |
| dtype | operand value type (from op_t::dtype) |
| true | ok |
| false | failed to create data item |
|
inline |
Create or modify a stack variable in the function frame.
The emulator could use this function to create stack variables in the function frame before converting the operand to a stack variable. Please check with may_create_stkvars() before calling this function.
| x | operand (used to determine the addressing type) |
| v | a displacement in the operand |
| flags_ | Stack variable flags |
| 1 | ok, a stack variable exists now |
| 0 | no, couldn't create stack variable |
| ea_t insn_t::ip = BADADDR |
Virtual address of the instruction (address within the segment).
Initialized by the kernel.
| ea_t insn_t::ea = BADADDR |
Linear address of the instruction.
Initialized by the kernel.
| uint16 insn_t::itype = 0 |
Internal code of instruction (only for canonical insns - not user defined!).
IDP should define its own instruction codes. These codes are usually defined in ins.hpp. The array of instruction names and features (ins.cpp) is accessed using this code.
| uint16 insn_t::size = 0 |
Size of instruction in bytes.
The analyzer should put here the actual size of the instruction.