Ghidra Decompiler Analysis Engine
|
Go to the documentation of this file.
54 bool finalJudgement(
Varnode *vn);
59 int4 getMultiSlot(
void)
const {
return multislot; }
60 bool getFlip(
void)
const {
return matchflip; }
138 bool iblock2posta_true;
139 int4 camethruposta_slot;
144 map<int4,Varnode *> replacement;
145 vector<PcodeOp *> returnop;
146 vector<bool> heritageyes;
148 void buildHeritageArray(
void);
149 bool testIBlock(
void);
150 bool findInitPre(
void);
151 bool verifySameCondition(
void);
154 bool testRemovability(
PcodeOp *op);
155 void predefineDirectMulti(
PcodeOp *op);
156 void adjustDirectMulti(
void);
159 void doReplacement(
PcodeOp *op);
160 void fixReturnOp(
void);
213 struct MultiPredicate {
221 bool discoverZeroSlot(
Varnode *vn);
222 bool discoverCbranch(
void);
223 void discoverPathIsTrue(
void);
224 bool discoverConditionalZero(
Varnode *vn);
233 virtual void getOpList(vector<uint4> &oplist)
const;
Action(uint4 f, const string &nm, const string &g)
Base constructor for an Action.
Definition: action.cc:25
Description of a control-flow block containing PcodeOps.
Definition: block.hh:60
Search for and remove various forms of redundant CBRANCH operations.
Definition: condexe.hh:172
void execute(void)
Eliminate the unnecessary path join at iblock.
Definition: condexe.cc:832
Class for performing a single transformation on a PcodeOp or Varnode.
Definition: action.hh:194
A helper class for describing the similarity of the boolean condition between 2 CBRANCH operations.
Definition: condexe.hh:33
bool verifyCondition(PcodeOp *op, PcodeOp *initop)
Perform the correlation test on two CBRANCH operations.
Definition: condexe.cc:341
A class for simplifying a series of conditionally executed statements.
Definition: condexe.hh:131
The list of groups defining a root Action.
Definition: action.hh:29
ConditionMarker(void)
Constructor.
Definition: condexe.cc:18
virtual Action * clone(const ActionGroupList &grouplist) const
Clone the Action.
Definition: condexe.hh:175
ConditionalExecution(Funcdata *f)
Constructor.
Definition: condexe.cc:764
Large scale transformations applied to the varnode/op graph.
Definition: action.hh:50
A basic block for p-code operations.
Definition: block.hh:365
Lowest level operation of the p-code language.
Definition: op.hh:58
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: condexe.hh:229
A low-level variable or contiguous set of bytes described by an Address and a size.
Definition: varnode.hh:65
Utilities for processing data structures associated with a single function.
bool contains(const string &nm) const
Check if this ActionGroupList contains a given group.
Definition: action.hh:37
Container for data structures associated with a single function.
Definition: funcdata.hh:45
bool trial(BlockBasic *ib)
Test for a modifiable configuration around the given block.
Definition: condexe.cc:780
static bool varnodeSame(Varnode *a, Varnode *b)
Do the given Varnodes hold the same value, possibly as constants.
Definition: condexe.cc:178
virtual int4 apply(Funcdata &data)
Make a single attempt to apply this Action.
Definition: condexe.cc:864
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: condexe.cc:1003
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: condexe.cc:1040
Rule(const string &g, uint4 fl, const string &nm)
Construct given group, properties name.
Definition: action.cc:620
static bool varnodeComplement(Varnode *a, Varnode *b)
Do the given boolean Varnodes always hold complementary values.
Definition: condexe.cc:193
Simplify predication constructions involving the INT_OR operator.
Definition: condexe.hh:211
~ConditionMarker(void)
Destructor.
Definition: condexe.cc:30