| 
    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