|
Ghidra 11.4.2
Ghidra internal decompiler documentation.
|
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. | |
| virtual void | dump (const Address &addr, OpCode opc, VarnodeData *outvar, VarnodeData *vars, int4 isize) |
| The main pcode emit method. | |
Public Member Functions inherited from ghidra::PcodeEmit | |
| virtual | ~PcodeEmit (void) |
| Virtual destructor. | |
| void | decodeOp (const Address &addr, Decoder &decoder) |
| Emit pcode directly from an <op> element. | |
Private Member Functions | |
| VarnodeData * | createVarnode (const VarnodeData *var) |
| Clone and cache a raw VarnodeData. | |
Private Attributes | |
| vector< PcodeOpRaw * > & | opcache |
| The cache of current p-code ops. | |
| vector< VarnodeData * > & | varcache |
| The cache of current varnodes. | |
| const vector< OpBehavior * > & | inst |
| Array of behaviors for translating OpCode. | |
| uintm | uniq |
| Starting offset for defining temporaries in unique space. | |
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
| ghidra::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 |
References uniq.
|
private |
Clone and cache a raw VarnodeData.
Create an internal copy of the VarnodeData and cache it.
| var | is the incoming VarnodeData being dumped |
References varcache.
Referenced by dump().
|
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 ghidra::PcodeEmit.
References ghidra::PcodeOpRaw::addInput(), createVarnode(), inst, opcache, ghidra::PcodeOpRaw::setBehavior(), ghidra::PcodeOpRaw::setOutput(), ghidra::PcodeOpRaw::setSeqNum(), and uniq.