Ghidra Decompiler Analysis Engine
|
P-code emitter that dumps its raw Varnodes and PcodeOps to an in memory cache. More...
#include <emulate.hh>
Public Member Functions | |
PcodeEmitCache (vector< PcodeOpRaw * > &ocache, vector< VarnodeData * > &vcache, const vector< OpBehavior * > &in, uintb uniqReserve) | |
Constructor. More... | |
virtual void | dump (const Address &addr, OpCode opc, VarnodeData *outvar, VarnodeData *vars, int4 isize) |
The main pcode emit method. More... | |
Public Member Functions inherited from PcodeEmit | |
void | restoreXmlOp (const Element *el, const AddrSpaceManager *trans) |
Emit pcode directly from an XML tag. More... | |
const uint1 * | restorePackedOp (const Address &addr, const uint1 *ptr, const AddrSpaceManager *trans) |
Emit pcode directly from a packed byte stream. More... | |
Additional Inherited Members | |
Public Types inherited from PcodeEmit | |
enum | { unimpl_tag = 0x20, inst_tag = 0x21, op_tag = 0x22, void_tag = 0x23, spaceid_tag = 0x24, addrsz_tag = 0x25, end_tag = 0x60 } |
Static Public Member Functions inherited from PcodeEmit | |
static const uint1 * | unpackOffset (const uint1 *ptr, uintb &off) |
Helper function for unpacking an offset from a pcode byte stream. More... | |
static const uint1 * | unpackVarnodeData (const uint1 *ptr, VarnodeData &v, const AddrSpaceManager *trans) |
Helper function for unpacking a varnode from a pcode byte stream. More... | |
P-code emitter that dumps its raw Varnodes and PcodeOps to an in memory cache.
This is used for emulation when full Varnode and PcodeOp objects aren't needed
PcodeEmitCache::PcodeEmitCache | ( | vector< PcodeOpRaw * > & | ocache, |
vector< VarnodeData * > & | vcache, | ||
const vector< OpBehavior * > & | in, | ||
uintb | uniqReserve | ||
) |
Provide the emitter with the containers that will hold the cached p-code ops and varnodes.
ocache | is the container for cached PcodeOpRaw |
vcache | is the container for cached VarnodeData |
in | is the map of OpBehavior |
uniqReserve | is the starting offset for temporaries in the unique space |
|
virtual |
The main pcode emit method.
A single pcode instruction is returned to the application via this method. Particular applications override it to tailor how the operations are used.
addr | is the Address of the machine instruction |
opc | is the opcode of the particular pcode instruction |
outvar | if not null is a pointer to data about the output varnode |
vars | is a pointer to an array of VarnodeData for each input varnode |
isize | is the number of input varnodes |
Implements PcodeEmit.