| 
    decompiler
    1.0.0
    
   | 
 
Simplify trivial arithmetic expressions. More...
  
 Public Member Functions | |
| RuleTrivialArith (const string &g) | |
| Constructor.  | |
| virtual Rule * | clone (const ActionGroupList &grouplist) const | 
| Clone the Rule.  More... | |
| virtual void | getOpList (vector< uint4 > &oplist) const | 
| List of op codes this rule operates on.  More... | |
| virtual int4 | applyOp (PcodeOp *op, Funcdata &data) | 
| Attempt to apply this Rule.  More... | |
  Public Member Functions inherited from Rule | |
| Rule (const string &g, uint4 fl, const string &nm) | |
| Construct given group, properties name.  More... | |
| virtual | ~Rule (void) | 
| Destructor.  | |
| const string & | getName (void) const | 
| Return the name of this Rule.  | |
| const string & | getGroup (void) const | 
| Return the group this Rule belongs to.  | |
| uint4 | getNumTests (void) | 
| Get number of attempted applications.  | |
| uint4 | getNumApply (void) | 
| Get number of successful applications.  | |
| void | setBreak (uint4 tp) | 
| Set a breakpoint on this Rule.  | |
| void | clearBreak (uint4 tp) | 
| Clear a breakpoint on this Rule.  | |
| void | clearBreakPoints (void) | 
| Clear all breakpoints on this Rule.  | |
| void | turnOnWarnings (void) | 
| Enable warnings for this Rule.  | |
| void | turnOffWarnings (void) | 
| Disable warnings for this Rule.  | |
| bool | isDisabled (void) const | 
| Return true if this Rule is disabled.  | |
| void | setDisable (void) | 
| Disable this Rule (within its pool)  | |
| void | clearDisable (void) | 
| Enable this Rule (within its pool)  | |
| bool | checkActionBreak (void) | 
| Check if an action breakpoint is turned on.  More... | |
| uint4 | getBreakPoint (void) const | 
| Return breakpoint toggles.  | |
| virtual void | reset (Funcdata &data) | 
| Reset this Rule.  More... | |
| virtual void | resetStats (void) | 
| Reset Rule statistics.  More... | |
| virtual void | printStatistics (ostream &s) const | 
| Print statistics for this Rule.  More... | |
Additional Inherited Members | |
  Public Types inherited from Rule | |
| enum | typeflags { type_disable = 1, rule_debug = 2, warnings_on = 4, warnings_given = 8 } | 
| Properties associated with a Rule.  More... | |
Simplify trivial arithmetic expressions.
All forms are binary operations where both inputs hold the same value.
V == V => trueV != V => falseV < V => falseV <= V => trueV & V => VV | V => VV ^ V => #0Handles other signed, boolean, and floating-point variants.
Attempt to apply this Rule.
This method contains the main logic for applying the Rule. It must use a given PcodeOp as the point at which the Rule applies. If it does apply, changes are made directly to the function and 1 (non-zero) is returned, otherwise 0 is returned.
Reimplemented from Rule.
References PcodeOp::code(), CPUI_BOOL_AND, CPUI_BOOL_OR, CPUI_BOOL_XOR, CPUI_COPY, CPUI_FLOAT_EQUAL, CPUI_FLOAT_LESS, CPUI_FLOAT_LESSEQUAL, CPUI_FLOAT_NOTEQUAL, CPUI_INT_AND, CPUI_INT_EQUAL, CPUI_INT_LESS, CPUI_INT_LESSEQUAL, CPUI_INT_NOTEQUAL, CPUI_INT_OR, CPUI_INT_SLESS, CPUI_INT_SLESSEQUAL, CPUI_INT_XOR, Varnode::getDef(), PcodeOp::getIn(), PcodeOp::getOut(), Varnode::getSize(), PcodeOp::isCseMatch(), Varnode::isWritten(), Funcdata::newConstant(), PcodeOp::numInput(), Funcdata::opRemoveInput(), Funcdata::opSetInput(), and Funcdata::opSetOpcode().
      
  | 
  inlinevirtual | 
Clone the Rule.
If this Rule is a member of one of the groups in the grouplist, this returns a clone of the Rule, otherwise NULL is returned.
| grouplist | is the list of groups being cloned | 
Implements Rule.
References ActionGroupList::contains(), and AddTreeState::data.
      
  | 
  virtual | 
List of op codes this rule operates on.
Populate the given array with all possible OpCodes this Rule might apply to. By default, this method returns all possible OpCodes
| oplist | is the array to populate | 
Reimplemented from Rule.
References CPUI_BOOL_AND, CPUI_BOOL_OR, CPUI_BOOL_XOR, CPUI_FLOAT_EQUAL, CPUI_FLOAT_LESS, CPUI_FLOAT_LESSEQUAL, CPUI_FLOAT_NOTEQUAL, CPUI_INT_AND, CPUI_INT_EQUAL, CPUI_INT_LESS, CPUI_INT_LESSEQUAL, CPUI_INT_NOTEQUAL, CPUI_INT_OR, CPUI_INT_SLESS, CPUI_INT_SLESSEQUAL, and CPUI_INT_XOR.
 1.8.11