IDA C++ SDK 9.2
Loading...
Searching...
No Matches
cvt64.hpp File Reference

Go to the source code of this file.

Classes

struct  range32_t
struct  cvt64_node_tag_t
 Descriptor of information stored in a netnode. More...

Functions

THREAD_SAFE ea_t mmdsr_unpack_ea (memory_deserializer_t &mmdsr, ea_t base=0)
 Unpack an address.
THREAD_SAFE ea_t mmdsr_unpack_ea_neg (memory_deserializer_t &mmdsr, ea_t base)
 Unpack an address relative to the specified base address.
THREAD_SAFE ea_t mmdsr_unpack_node2ea (memory_deserializer_t &mmdsr)
 Unpack a netnode index.
THREAD_SAFE sval_t mmdsr_unpack_sval (memory_deserializer_t &mmdsr, sval_t base=0)
 Unpack as a signed value.
THREAD_SAFE void mmdsr_unpack_eavec (eavec_t *vec, memory_deserializer_t &mmdsr, ea_t ea)
 Unpack vector of addresses.
THREAD_SAFE ea_t mmdsr_read_ea (memory_deserializer_t &mmdsr)
 Read a stored (without packing) address.
int cvt64_blob (netnode node, nodeidx_t start, uchar tag)
 Convert a blob whose content does not depend on the IDA bitness.
idaman int ida_export cvt64_node_supval_for_event (va_list va, const cvt64_node_tag_t *node_info, size_t node_info_qty)
 Helper for the processor_t::ev_cvt64_supval event.

Function Documentation

◆ mmdsr_unpack_ea()

THREAD_SAFE ea_t mmdsr_unpack_ea ( memory_deserializer_t & mmdsr,
ea_t base = 0 )
inline

Unpack an address.

This helper deserializes an address from its serialialed form. If IDA is running in the conversion mode, it reads a 32-bit address, otherwise the number of bits in the address depends on the bitness of IDA (IDA32 assumes 32-bit addresses, and IDA64 assumes 64-bit addresses). 32-bit BADADDR is converted into 64-bit BADADDR in the conversion mode.

◆ mmdsr_unpack_ea_neg()

THREAD_SAFE ea_t mmdsr_unpack_ea_neg ( memory_deserializer_t & mmdsr,
ea_t base )
inline

Unpack an address relative to the specified base address.

◆ mmdsr_unpack_node2ea()

THREAD_SAFE ea_t mmdsr_unpack_node2ea ( memory_deserializer_t & mmdsr)
inline

Unpack a netnode index.

◆ mmdsr_unpack_sval()

THREAD_SAFE sval_t mmdsr_unpack_sval ( memory_deserializer_t & mmdsr,
sval_t base = 0 )
inline

Unpack as a signed value.

◆ mmdsr_unpack_eavec()

THREAD_SAFE void mmdsr_unpack_eavec ( eavec_t * vec,
memory_deserializer_t & mmdsr,
ea_t ea )
inline

Unpack vector of addresses.

◆ mmdsr_read_ea()

THREAD_SAFE ea_t mmdsr_read_ea ( memory_deserializer_t & mmdsr)
inline

Read a stored (without packing) address.

◆ cvt64_blob()

int cvt64_blob ( netnode node,
nodeidx_t start,
uchar tag )
inline

Convert a blob whose content does not depend on the IDA bitness.

This function is very simple: it reads from a netnode and writes back to the same netnode. While this action looks superfluous, we need it because the netnode level functions read from the input 32-bit btree and write the output 64-bit btree. In other words, this function copies blob of information from one btree to another.

◆ cvt64_node_supval_for_event()

idaman int ida_export cvt64_node_supval_for_event ( va_list va,
const cvt64_node_tag_t * node_info,
size_t node_info_qty )

Helper for the processor_t::ev_cvt64_supval event.

This function converts the information stored in netnodes. It can handle standard types of information like altvals, addreses, supvals. If information is stored as a blob with complex structure, then it must be handled manually: read, convert, and write back to the same netnode.

Parameters
va- arguments for processor_t::ev_cvt64_supval
node_info- descriptors
node_info_qty- size of the descriptors array
Returns
result of processor_t::ev_cvt64_supval event processing