|
IDA C++ SDK 9.2
|
Represent instruction/data operands. More...
Functions | |
| constexpr int | get_operand_type_shift (uint32 n) |
| Get the shift in flags64_t for the nibble representing operand n's type. | |
| constexpr flags64_t | get_operand_flag (uint8 typebits, int n) |
| Place operand n's type flag in the right nibble of a 64-bit flags set. | |
| constexpr bool | is_flag_for_operand (flags64_t F, uint8 typebits, int n) |
| Check that the 64-bit flags set has the expected type for operand n. | |
| idaman bool ida_export | op_adds_xrefs (flags64_t F, int n) |
| Should processor module create xrefs from the operand? | |
| idaman bool ida_export | set_op_type (ea_t ea, flags64_t type, int n) |
| (internal function) change representation of operand(s). | |
| idaman bool ida_export | op_seg (ea_t ea, int n) |
| Set operand representation to be 'segment'. | |
| idaman bool ida_export | op_enum (ea_t ea, int n, tid_t id, uchar serial=0) |
| Set operand representation to be enum type If applied to unexplored bytes, converts them to 16/32bit word data. | |
| idaman tid_t ida_export | get_enum_id (uchar *serial, ea_t ea, int n) |
| Get enum id of 'enum' operand. | |
| idaman bool ida_export | op_stroff (const insn_t &insn, int n, const tid_t *path, int path_len, adiff_t delta) |
| Set operand representation to be 'struct offset'. | |
| idaman bool ida_export | op_based_stroff (const insn_t &insn, int n, adiff_t opval, ea_t base) |
| Set operand representation to be 'struct offset' if the operand likely points to a structure member. | |
| idaman int ida_export | get_stroff_path (tid_t *path, adiff_t *delta, ea_t ea, int n) |
| Get struct path of operand. | |
| idaman bool ida_export | op_stkvar (ea_t ea, int n) |
| Set operand representation to be 'stack variable'. | |
| idaman bool ida_export | set_forced_operand (ea_t ea, int n, const char *op) |
| Set forced operand. | |
| idaman ssize_t ida_export | get_forced_operand (qstring *buf, ea_t ea, int n) |
| Get forced operand. | |
| idaman bool ida_export | is_forced_operand (ea_t ea, int n) |
| Is operand manually defined? | |
| constexpr flags64_t idaapi | combine_flags (flags64_t F) |
| idaman bool ida_export | op_custfmt (ea_t ea, int n, int fid) |
| Set custom data format for operand (fid-custom data format id) | |
| idaman bool ida_export | clr_op_type (ea_t ea, int n) |
| Remove operand representation information. | |
| idaman int ida_export | get_default_radix (void) |
| Get default base of number for the current processor. | |
| idaman int ida_export | get_radix (flags64_t F, int n) |
| Get radix of the operand, in: flags. | |
Represent instruction/data operands.
IDA keeps bitmask representations for a maximum of 8 operands:
For data bytes, only the first bitmask is used (i.e. all elements of an array have the same type).
|
inlineconstexpr |
Get the shift in flags64_t for the nibble representing operand n's type.
Note: n must be < UA_MAXOP, and is not checked
| n | the operand number |
Place operand n's type flag in the right nibble of a 64-bit flags set.
| typebits | the type bits (one of FF_N_) |
| n | the operand number |
Check that the 64-bit flags set has the expected type for operand n.
| F | the flags |
| typebits | the type bits (one of FF_N_) |
| n | the operand number |
Should processor module create xrefs from the operand?
Currently 'offset', 'structure offset', 'stack' and 'enum' operands create xrefs
(internal function) change representation of operand(s).
| ea | linear address |
| type | new flag value (should be obtained from char_flag(), num_flag() and similar functions) |
| n | 0..#UA_MAXOP-1 operand number, OPND_ALL all operands |
| 1 | ok |
| 0 | failed (applied to a tail byte) |
Set operand representation to be 'segment'.
If applied to unexplored bytes, converts them to 16/32bit word data
| ea | linear address |
| n | 0..#UA_MAXOP-1 operand number, OPND_ALL all operands |
Set operand representation to be enum type If applied to unexplored bytes, converts them to 16/32bit word data.
| ea | linear address |
| n | 0..#UA_MAXOP-1 operand number, OPND_ALL all operands |
| id | id of enum |
| serial | the serial number of the constant in the enumeration, usually 0. the serial numbers are used if the enumeration contains several constants with the same value |
Get enum id of 'enum' operand.
| ea | linear address |
| n | 0..#UA_MAXOP-1 operand number, OPND_ALL one of the operands |
| serial | pointer to variable to hold the serial number of the constant in the enumeration |
| idaman bool ida_export op_stroff | ( | const insn_t & | insn, |
| int | n, | ||
| const tid_t * | path, | ||
| int | path_len, | ||
| adiff_t | delta ) |
Set operand representation to be 'struct offset'.
| insn | the instruction |
| n | 0..#UA_MAXOP-1 operand number, OPND_ALL all operands |
| path | structure path (strpath). see nalt.hpp for more info. |
| path_len | length of the structure path |
| delta | struct offset delta. usually 0. denotes the difference between the structure base and the pointer into the structure. |
Set operand representation to be 'struct offset' if the operand likely points to a structure member.
For example, let's there is a structure at 1000 1000 stru_1000 Elf32_Sym <...> the operand #8 will be represented as '#Elf32_Sym.st_size' after the call of 'op_based_stroff(..., 8, 0x1000)' By the way, after the call of 'op_plain_offset(..., 0x1000)' it will be represented as '#(stru_1000.st_size - 0x1000)'
| insn | the instruction |
| n | 0..#UA_MAXOP-1 operand number, OPND_ALL all operands |
| opval | operand value (usually op_t::value or op_t::addr) |
| base | base reference |
Get struct path of operand.
| path | buffer for structure path (strpath). see nalt.hpp for more info. |
| delta | struct offset delta |
| ea | linear address |
| n | 0..#UA_MAXOP-1 operand number, OPND_ALL one of the operands |
Set operand representation to be 'stack variable'.
Should be applied to an instruction within a function. Should be applied after creating a stack var using insn_t::create_stkvar().
| ea | linear address |
| n | 0..#UA_MAXOP-1 operand number, OPND_ALL all operands |
Set forced operand.
| ea | linear address |
| n | 0..#UA_MAXOP-1 operand number |
| op | text of operand
|
Get forced operand.
| buf | output buffer, may be nullptr |
| ea | linear address |
| n | 0..#UA_MAXOP-1 operand number |
Is operand manually defined?
| ea | linear address |
| n | 0..#UA_MAXOP-1 operand number |
Set custom data format for operand (fid-custom data format id)
Remove operand representation information.
(set operand representation to be 'undefined')
| ea | linear address |
| n | 0..#UA_MAXOP-1 operand number, OPND_ALL all operands |
| idaman int ida_export get_default_radix | ( | void | ) |
Get default base of number for the current processor.
| idaman int ida_export get_radix | ( | flags64_t | F, |
| int | n ) |
Get radix of the operand, in: flags.
If the operand is not a number, returns get_default_radix()
| F | flags |
| n | number of operand (0, 1, -1) |