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.