Ghidra Decompiler Analysis Engine
Public Member Functions | Static Public Member Functions | List of all members
SplitVarnode Class Reference

Public Member Functions

 SplitVarnode (int4 sz, uintb v)
 
 SplitVarnode (Varnode *l, Varnode *h)
 
void initAll (Varnode *w, Varnode *l, Varnode *h)
 
void initPartial (int4 sz, uintb v)
 
void initPartial (Varnode *l, Varnode *h)
 
bool inHandHi (Varnode *h)
 
bool inHandLo (Varnode *l)
 
bool inHandLoNoHi (Varnode *l)
 
bool inHandHiOut (Varnode *h)
 
bool inHandLoOut (Varnode *h)
 
bool isConstant (void) const
 
bool hasBothPieces (void) const
 
int4 getSize (void) const
 
VarnodegetLo (void) const
 
VarnodegetHi (void) const
 
VarnodegetWhole (void) const
 
PcodeOpgetDefPoint (void) const
 
BlockBasicgetDefBlock (void) const
 
uintb getValue (void) const
 
bool isWholeFeasible (PcodeOp *existop)
 
bool isWholePhiFeasible (FlowBlock *bl)
 
void findCreateWhole (Funcdata &data)
 
void findCreateOutputWhole (Funcdata &data)
 
void createJoinedWhole (Funcdata &data)
 
void buildLoFromWhole (Funcdata &data)
 
void buildHiFromWhole (Funcdata &data)
 
PcodeOpfindEarliestSplitPoint (void)
 
PcodeOpfindOutExist (void)
 

Static Public Member Functions

static bool adjacentOffsets (Varnode *vn1, Varnode *vn2, uintb size1)
 
static bool testContiguousLoad (PcodeOp *most, PcodeOp *least, bool allowfree, PcodeOp *&first, PcodeOp *&second, AddrSpace *&spc, int4 &sizeres)
 
static bool isAddrTiedContiguous (Varnode *lo, Varnode *hi, Address &res)
 
static void wholeList (Varnode *w, vector< SplitVarnode > &splitvec)
 
static void findCopies (const SplitVarnode &in, vector< SplitVarnode > &splitvec)
 
static void getTrueFalse (PcodeOp *boolop, bool flip, BlockBasic *&trueout, BlockBasic *&falseout)
 
static bool otherwiseEmpty (PcodeOp *branchop)
 
static bool verifyMultNegOne (PcodeOp *op)
 
static PcodeOpprepareBinaryOp (SplitVarnode &out, SplitVarnode &in1, SplitVarnode &in2)
 
static void createBinaryOp (Funcdata &data, SplitVarnode &out, SplitVarnode &in1, SplitVarnode &in2, PcodeOp *existop, OpCode opc)
 
static PcodeOpprepareShiftOp (SplitVarnode &out, SplitVarnode &in)
 
static void createShiftOp (Funcdata &data, SplitVarnode &out, SplitVarnode &in, Varnode *sa, PcodeOp *existop, OpCode opc)
 
static void replaceBoolOp (Funcdata &data, PcodeOp *boolop, SplitVarnode &in1, SplitVarnode &in2, OpCode opc)
 
static bool prepareBoolOp (SplitVarnode &in1, SplitVarnode &in2, PcodeOp *testop)
 
static void createBoolOp (Funcdata &data, PcodeOp *cbranch, SplitVarnode &in1, SplitVarnode &in2, OpCode opc)
 
static PcodeOppreparePhiOp (SplitVarnode &out, vector< SplitVarnode > &inlist)
 
static void createPhiOp (Funcdata &data, SplitVarnode &out, vector< SplitVarnode > &inlist, PcodeOp *existop)
 
static bool prepareIndirectOp (SplitVarnode &in, PcodeOp *affector)
 
static void replaceIndirectOp (Funcdata &data, SplitVarnode &out, SplitVarnode &in, PcodeOp *affector)
 
static int4 applyRuleIn (SplitVarnode &in, Funcdata &data)
 

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