|
decompiler
1.0.0
|
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 | |
| Funcdata * | fd |
| map< Varnode *, uintb > | varnodeMap |
| bool | collectloads |
| vector< LoadTable > | loadpoints |
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 | |
| Architecture * | glb |
| The underlying Architecture for the program being emulated. | |
| PcodeOp * | currentOp |
| Current PcodeOp being executed. | |
| PcodeOp * | lastOp |
| Last PcodeOp that was executed. | |
Protected Attributes inherited from Emulate | |
| bool | emu_halted |
| Set to true if the emulator is halted. | |
| OpBehavior * | currentBehave |
| Behavior of the next op to execute. | |
|
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.
|
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.
| vn | is the specific Varnode |
Implements EmulatePcodeOp.
References EmulatePcodeOp::getLoadImageValue(), Varnode::getOffset(), Varnode::getSize(), Varnode::getSpace(), and Varnode::isConstant().
Referenced by executeLoad().
|
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.
| vn | is the specific Varnode |
| val | is the constant value to store |
Implements EmulatePcodeOp.
1.8.15