Ghidra Decompiler Analysis Engine
|
Go to the documentation of this file.
20 #ifndef __CPUI_DYNAMIC__
21 #define __CPUI_DYNAMIC__
35 const PcodeOp *getOp(
void)
const {
return op; }
36 int4 getSlot(
void)
const {
return slot; }
38 uint4
hash(uint4 reg)
const;
65 vector<const PcodeOp *> markop;
66 vector<const Varnode *> markvn;
67 vector<const Varnode *> vnedge;
68 vector<ToOpEdge> opedge;
72 void buildVnUp(
const Varnode *vn);
73 void buildVnDown(
const Varnode *vn);
74 void buildOpUp(
const PcodeOp *op);
75 void buildOpDown(
const PcodeOp *op);
76 void gatherUnmarkedVn(
void);
77 void gatherUnmarkedOp(
void);
83 uint8 getHash(
void)
const {
return hash; }
85 const Address &getAddress(
void)
const {
return addrresult; }
void uniqueHash(const Varnode *root, Funcdata *fd)
Select a unique hash for the given Varnode.
Definition: dynamic.cc:330
uint4 hash(uint4 reg) const
Hash this edge into an accumulator.
Definition: dynamic.cc:89
static bool getIsNotAttached(uint8 h)
Retrieve the attachment boolean from a hash.
Definition: dynamic.cc:517
static int4 getSlotFromHash(uint8 h)
Retrieve the encoded slot from a hash.
Definition: dynamic.cc:469
static uint4 getMethodFromHash(uint8 h)
Retrieve the encoded method from a hash.
Definition: dynamic.cc:481
static uint4 getPositionFromHash(uint8 h)
Retrieve the encoded position from a hash.
Definition: dynamic.cc:499
Varnode * findVarnode(const Funcdata *fd, const Address &addr, uint8 h)
Given an address and hash, find the unique matching Varnode.
Definition: dynamic.cc:396
Lowest level operation of the p-code language.
Definition: op.hh:58
static uint4 getTotalFromHash(uint8 h)
Retrieve the encoded collision total from a hash.
Definition: dynamic.cc:508
A low-level variable or contiguous set of bytes described by an Address and a size.
Definition: varnode.hh:65
An edge between a Varnode and a PcodeOp.
Definition: dynamic.hh:30
static void gatherFirstLevelVars(vector< Varnode * > &varlist, const Funcdata *fd, const Address &addr, uint8 h)
Get the Varnodes immediately attached to PcodeOps at the given address.
Definition: dynamic.cc:426
void clear(void)
Called for each additional hash (after the first)
Definition: dynamic.cc:190
A low-level machine address for labelling bytes and data.
Definition: address.hh:46
static OpCode getOpCodeFromHash(uint8 h)
Retrieve the encoded op-code from a hash.
Definition: dynamic.cc:490
Container for data structures associated with a single function.
Definition: funcdata.hh:45
static void clearTotalPosition(uint8 &h)
Clear the collision total and position fields within a hash.
Definition: dynamic.cc:526
A hash utility to uniquely identify a temporary Varnode in data-flow.
Definition: dynamic.hh:60
void calcHash(const Varnode *root, uint4 method)
Calculate the hash for given Varnode and method.
Definition: dynamic.cc:210
static uint4 transtable[]
Translation of op-codes to hash values.
Definition: dynamic.hh:94
OpCode
The op-code defining a specific p-code operation (PcodeOp)
Definition: opcodes.hh:35
The Varnode and VarnodeBank classes.
bool operator<(const ToOpEdge &op2) const
Compare two edges based on PcodeOp.
Definition: dynamic.cc:66