decompiler  1.0.0
Public Member Functions | Private Member Functions | Private Attributes | List of all members
EmulateFunction Class Reference
Inheritance diagram for EmulateFunction:
EmulatePcodeOp Emulate

Public Member Functions

 EmulateFunction (Funcdata *f)
 
void setLoadCollect (bool val)
 
virtual void setExecuteAddress (const Address &addr)
 Set the address of the next instruction to emulate.
 
virtual uintb getVarnodeValue (Varnode *vn) const
 Given a specific Varnode, retrieve the current value for it from the machine state. More...
 
virtual void setVarnodeValue (Varnode *vn, uintb val)
 Given a specific Varnode, set the given value for it in the current machine state. More...
 
uintb emulatePath (uintb val, const PathMeld &pathMeld, PcodeOp *startop, Varnode *startvn)
 
void collectLoadPoints (vector< LoadTable > &res) const
 
- Public Member Functions inherited from EmulatePcodeOp
 EmulatePcodeOp (Architecture *g)
 Constructor. More...
 
void setCurrentOp (PcodeOp *op)
 Establish the current PcodeOp being emulated. More...
 
virtual Address getExecuteAddress (void) const
 Get the address of the current instruction being executed.
 
- Public Member Functions inherited from Emulate
 Emulate (void)
 generic emulator constructor
 
void setHalt (bool val)
 Set the halt state of the emulator. More...
 
bool getHalt (void) const
 Get the halt state of the emulator. More...
 
void executeCurrentOp (void)
 Do a single pcode op step. More...
 

Private Member Functions

virtual void executeLoad (void)
 Standard behavior for a p-code LOAD.
 
virtual void executeBranch (void)
 Standard behavior for a BRANCH. More...
 
virtual void executeBranchind (void)
 Standard behavior for a BRANCHIND.
 
virtual void executeCall (void)
 Standard behavior for a p-code CALL.
 
virtual void executeCallind (void)
 Standard behavior for a CALLIND.
 
virtual void executeCallother (void)
 Standard behavior for a user-defined p-code op.
 
virtual void fallthruOp (void)
 Standard p-code fall-thru semantics.
 

Private Attributes

Funcdatafd
 
map< Varnode *, uintb > varnodeMap
 
bool collectloads
 
vector< LoadTableloadpoints
 

Additional Inherited Members

- Protected Member Functions inherited from EmulatePcodeOp
virtual uintb getLoadImageValue (AddrSpace *spc, uintb offset, int4 sz) const
 Pull a value from the load-image given a specific address. More...
 
virtual void executeUnary (void)
 Execute a unary arithmetic/logical operation.
 
virtual void executeBinary (void)
 Execute a binary arithmetic/logical operation.
 
virtual void executeStore (void)
 Standard behavior for a p-code STORE.
 
virtual bool executeCbranch (void)
 Check if the conditional of a CBRANCH is true. More...
 
virtual void executeMultiequal (void)
 Standard behavior for a MULTIEQUAL (phi-node)
 
virtual void executeIndirect (void)
 Standard behavior for an INDIRECT op.
 
virtual void executeSegmentOp (void)
 Behavior for a SEGMENTOP.
 
virtual void executeCpoolRef (void)
 Standard behavior for a CPOOLREF (constant pool reference) op.
 
virtual void executeNew (void)
 Standard behavior for (low-level) NEW op.
 
- Protected Attributes inherited from EmulatePcodeOp
Architectureglb
 The underlying Architecture for the program being emulated.
 
PcodeOpcurrentOp
 Current PcodeOp being executed.
 
PcodeOplastOp
 Last PcodeOp that was executed.
 
- Protected Attributes inherited from Emulate
bool emu_halted
 Set to true if the emulator is halted.
 
OpBehaviorcurrentBehave
 Behavior of the next op to execute.
 

Member Function Documentation

◆ executeBranch()

void EmulateFunction::executeBranch ( void  )
privatevirtual

Standard behavior for a BRANCH.

This routine performs a standard p-code BRANCH operation on the memory state. This same routine is used for CBRANCH operations if the condition has evaluated to true.

Implements Emulate.

◆ getVarnodeValue()

uintb EmulateFunction::getVarnodeValue ( Varnode vn) const
virtual

Given a specific Varnode, retrieve the current value for it from the machine state.

This is the placeholder internal operation for obtaining a Varnode value during emulation. The value is loaded using the Varnode as the address and storage size.

Parameters
vnis the specific Varnode
Returns
the corresponding value from the machine state

Implements EmulatePcodeOp.

References EmulatePcodeOp::getLoadImageValue(), Varnode::getOffset(), Varnode::getSize(), Varnode::getSpace(), and Varnode::isConstant().

Referenced by executeLoad().

◆ setVarnodeValue()

void EmulateFunction::setVarnodeValue ( Varnode vn,
uintb  val 
)
virtual

Given a specific Varnode, set the given value for it in the current machine state.

This is the placeholder internal operation for setting a Varnode value during emulation. The value is stored using the Varnode as the address and storage size.

Parameters
vnis the specific Varnode
valis the constant value to store

Implements EmulatePcodeOp.


The documentation for this class was generated from the following files: