Ghidra Decompiler Analysis Engine
|
Go to the documentation of this file.
25 #ifndef __RULE_ACTION__
26 #define __RULE_ACTION__
53 vector<Varnode *> multiple;
55 vector<Varnode *> nonmult;
59 bool preventDistribution;
60 bool isDistributeUsed;
63 uint4 findArrayHint(
void)
const;
64 bool hasMatchingSubType(uintb off,uint4 arrayHint,uintb *newoff)
const;
66 bool checkTerm(
Varnode *vn, uintb treeCoeff);
67 bool spanAddTree(
PcodeOp *op, uintb treeCoeff);
68 void calcSubtype(
void);
102 virtual void getOpList(vector<uint4> &oplist)
const;
112 virtual void getOpList(vector<uint4> &oplist)
const;
122 virtual void getOpList(vector<uint4> &oplist)
const;
132 virtual void getOpList(vector<uint4> &oplist)
const;
142 virtual void getOpList(vector<uint4> &oplist)
const;
152 virtual void getOpList(vector<uint4> &oplist)
const;
162 virtual void getOpList(vector<uint4> &oplist)
const;
172 virtual void getOpList(vector<uint4> &oplist)
const;
182 virtual void getOpList(vector<uint4> &oplist)
const;
192 virtual void getOpList(vector<uint4> &oplist)
const;
202 virtual void getOpList(vector<uint4> &oplist)
const;
212 virtual void getOpList(vector<uint4> &oplist)
const;
222 virtual void getOpList(vector<uint4> &oplist)
const;
232 virtual void getOpList(vector<uint4> &oplist)
const;
242 virtual void getOpList(vector<uint4> &oplist)
const;
253 virtual void getOpList(vector<uint4> &oplist)
const;
263 virtual void getOpList(vector<uint4> &oplist)
const;
278 virtual void getOpList(vector<uint4> &oplist)
const;
289 virtual void getOpList(vector<uint4> &oplist)
const;
299 virtual void getOpList(vector<uint4> &oplist)
const;
309 virtual void getOpList(vector<uint4> &oplist)
const;
319 virtual void getOpList(vector<uint4> &oplist)
const;
329 virtual void getOpList(vector<uint4> &oplist)
const;
339 virtual void getOpList(vector<uint4> &oplist)
const;
349 virtual void getOpList(vector<uint4> &oplist)
const;
359 virtual void getOpList(vector<uint4> &oplist)
const;
369 virtual void getOpList(vector<uint4> &oplist)
const;
379 virtual void getOpList(vector<uint4> &oplist)
const;
389 virtual void getOpList(vector<uint4> &oplist)
const;
399 virtual void getOpList(vector<uint4> &oplist)
const;
409 virtual void getOpList(vector<uint4> &oplist)
const;
419 virtual void getOpList(vector<uint4> &oplist)
const;
429 virtual void getOpList(vector<uint4> &oplist)
const;
439 virtual void getOpList(vector<uint4> &oplist)
const;
459 virtual void getOpList(vector<uint4> &oplist)
const;
469 virtual void getOpList(vector<uint4> &oplist)
const;
479 virtual void getOpList(vector<uint4> &oplist)
const;
489 virtual void getOpList(vector<uint4> &oplist)
const;
499 virtual void getOpList(vector<uint4> &oplist)
const;
509 virtual void getOpList(vector<uint4> &oplist)
const;
519 virtual void getOpList(vector<uint4> &oplist)
const;
529 virtual void getOpList(vector<uint4> &oplist)
const;
539 virtual void getOpList(vector<uint4> &oplist)
const;
549 virtual void getOpList(vector<uint4> &oplist)
const;
559 virtual void getOpList(vector<uint4> &oplist)
const;
569 virtual void getOpList(vector<uint4> &oplist)
const;
579 virtual void getOpList(vector<uint4> &oplist)
const;
589 virtual void getOpList(vector<uint4> &oplist)
const;
599 virtual void getOpList(vector<uint4> &oplist)
const;
609 virtual void getOpList(vector<uint4> &oplist)
const;
613 void findComparisons(
Varnode *vn,vector<PcodeOp *> &res);
620 virtual void getOpList(vector<uint4> &oplist)
const;
630 virtual void getOpList(vector<uint4> &oplist)
const;
640 virtual void getOpList(vector<uint4> &oplist)
const;
650 virtual void getOpList(vector<uint4> &oplist)
const;
670 virtual void getOpList(vector<uint4> &oplist)
const;
690 virtual void getOpList(vector<uint4> &oplist)
const;
700 virtual void getOpList(vector<uint4> &oplist)
const;
710 virtual void getOpList(vector<uint4> &oplist)
const;
720 virtual void getOpList(vector<uint4> &oplist)
const;
730 virtual void getOpList(vector<uint4> &oplist)
const;
754 virtual void getOpList(vector<uint4> &oplist)
const;
764 virtual void getOpList(vector<uint4> &oplist)
const;
784 virtual void getOpList(vector<uint4> &oplist)
const;
794 virtual void getOpList(vector<uint4> &oplist)
const;
805 virtual void getOpList(vector<uint4> &oplist)
const;
825 virtual void getOpList(vector<uint4> &oplist)
const;
835 virtual void getOpList(vector<uint4> &oplist)
const;
845 virtual void getOpList(vector<uint4> &oplist)
const;
855 virtual void getOpList(vector<uint4> &oplist)
const;
865 virtual void getOpList(vector<uint4> &oplist)
const;
875 virtual void getOpList(vector<uint4> &oplist)
const;
885 virtual void getOpList(vector<uint4> &oplist)
const;
895 virtual void getOpList(vector<uint4> &oplist)
const;
905 virtual void getOpList(vector<uint4> &oplist)
const;
915 virtual void getOpList(vector<uint4> &oplist)
const;
925 virtual void getOpList(vector<uint4> &oplist)
const;
935 virtual void getOpList(vector<uint4> &oplist)
const;
945 virtual void getOpList(vector<uint4> &oplist)
const;
955 virtual void getOpList(vector<uint4> &oplist)
const;
965 virtual void getOpList(vector<uint4> &oplist)
const;
975 virtual void getOpList(vector<uint4> &oplist)
const;
985 virtual void getOpList(vector<uint4> &oplist)
const;
995 virtual void getOpList(vector<uint4> &oplist)
const;
1006 virtual void getOpList(vector<uint4> &oplist)
const;
1016 virtual void getOpList(vector<uint4> &oplist)
const;
1026 virtual void getOpList(vector<uint4> &oplist)
const;
1030 static bool verifyAddTreeBottom(
PcodeOp *op,int4 slot);
1037 virtual void getOpList(vector<uint4> &oplist)
const;
1047 virtual void getOpList(vector<uint4> &oplist)
const;
1057 virtual void getOpList(vector<uint4> &oplist)
const;
1067 virtual void getOpList(vector<uint4> &oplist)
const;
1077 virtual void getOpList(vector<uint4> &oplist)
const;
1089 virtual void getOpList(vector<uint4> &oplist)
const;
1100 virtual void getOpList(vector<uint4> &oplist)
const;
1111 virtual void getOpList(vector<uint4> &oplist)
const;
1122 virtual void getOpList(vector<uint4> &oplist)
const;
1134 virtual void getOpList(vector<uint4> &oplist)
const;
1145 virtual void getOpList(vector<uint4> &oplist)
const;
1167 virtual void getOpList(vector<uint4> &oplist)
const;
1178 virtual void getOpList(vector<uint4> &oplist)
const;
1190 virtual void getOpList(vector<uint4> &oplist)
const;
1195 static uintb calcDivisor(uintb n,uint8 y,int4 xsize);
1197 static bool checkFormOverlap(
PcodeOp *op);
1204 virtual void getOpList(vector<uint4> &oplist)
const;
1216 virtual void getOpList(vector<uint4> &oplist)
const;
1227 virtual void getOpList(vector<uint4> &oplist)
const;
1238 virtual void getOpList(vector<uint4> &oplist)
const;
1249 virtual void getOpList(vector<uint4> &oplist)
const;
1260 virtual void getOpList(vector<uint4> &oplist)
const;
1271 virtual void getOpList(vector<uint4> &oplist)
const;
1282 virtual void getOpList(vector<uint4> &oplist)
const;
1293 virtual void getOpList(vector<uint4> &oplist)
const;
1299 bool hasTruncations;
1300 bool trialSetPtrFlow(
PcodeOp *op);
1301 bool propagateFlowToDef(
Varnode *vn);
1302 bool propagateFlowToReads(
Varnode *vn);
1310 virtual void getOpList(vector<uint4> &oplist)
const;
1321 virtual void getOpList(vector<uint4> &oplist)
const;
1332 virtual void getOpList(vector<uint4> &oplist)
const;
1343 virtual void getOpList(vector<uint4> &oplist)
const;
1350 RuleSubvarSext(
const string &g) :
Rule( g, 0,
"subvar_sext") { isaggressive =
false; }
1355 virtual void getOpList(vector<uint4> &oplist)
const;
1367 virtual void getOpList(vector<uint4> &oplist)
const;
1378 virtual void getOpList(vector<uint4> &oplist)
const;
1391 bool mustreconstruct;
1393 bool isConstant(
void)
const {
return (optype==0); }
1394 uintb getVal(
void)
const {
return val; }
1406 virtual void getOpList(vector<uint4> &oplist)
const;
1417 virtual void getOpList(vector<uint4> &oplist)
const;
1428 virtual void getOpList(vector<uint4> &oplist)
const;
1439 virtual void getOpList(vector<uint4> &oplist)
const;
1450 virtual void getOpList(vector<uint4> &oplist)
const;
1463 virtual void getOpList(vector<uint4> &oplist)
const;
1477 virtual void getOpList(vector<uint4> &oplist)
const;
1488 virtual void getOpList(vector<uint4> &oplist)
const;
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:3393
Eliminate ARM/THUMB style masking of the low order bits on function pointers.
Definition: ruleaction.hh:1432
Perform SubvariableFlow analysis triggered by INT_SEXT.
Definition: ruleaction.hh:1347
Remove PTRSUB operations with mismatched data-type information.
Definition: ruleaction.hh:1070
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:7563
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:961
Commute PIECE with INT_AND, INT_OR, and INT_XOR.
Definition: ruleaction.hh:798
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:1413
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:1234
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:2311
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:178
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:4545
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:1435
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:6439
Simplify boolean expressions of the form zext(V) * -1.
Definition: ruleaction.hh:542
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:355
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:8322
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:851
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:2803
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:4815
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:6204
Simplify two sequential INT_SRIGHT: (x s>> #c) s>> #d => x s>> saturate(#c + #d)
Definition: ruleaction.hh:402
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:1901
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:158
Propagate the input of a COPY to all the places that read the output.
Definition: ruleaction.hh:673
Cleanup: Set-up to print string constants.
Definition: ruleaction.hh:1126
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:4762
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:881
Simplify INT_RIGHT canceling PIECE: concat(V,W) >> c => zext(V)
Definition: ruleaction.hh:412
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:1339
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:3718
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:535
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:7952
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:7433
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:6445
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:7155
A region where processor data is stored.
Definition: space.hh:73
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:7884
Simplify chained SUBPIECE: sub( sub(V,c), d) => sub(V, c+d)
Definition: ruleaction.hh:382
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:3035
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:871
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:7958
Undo distributed operations through INT_AND, INT_OR, and INT_XOR.
Definition: ruleaction.hh:522
Datatype object representing a pointer.
Definition: type.hh:228
Simplify expressions associated with optimized division expressions.
Definition: ruleaction.hh:1171
Commute PIECE with INT_ZEXT: concat(zext(V),W) => zext(concat(V,W))
Definition: ruleaction.hh:818
Description of a control-flow block containing PcodeOps.
Definition: block.hh:60
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:4351
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:444
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:7233
Simplify trivial shifts: V << 0 => V, V << #64 => 0
Definition: ruleaction.hh:592
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:108
Pull-back SUBPIECE through INDIRECT.
Definition: ruleaction.hh:271
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:1186
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:1692
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:1317
Collapse constants in logical expressions: (V & c) & d => V & (c & d)
Definition: ruleaction.hh:185
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:7517
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:7904
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:6211
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:7820
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:2630
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:578
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:1424
Perform SubfloatFlow analysis triggered by FLOAT_FLOAT2FLOAT.
Definition: ruleaction.hh:1360
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:7878
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:2555
Collapse constants in an additive or multiplicative expression.
Definition: ruleaction.hh:723
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:602
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:1246
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:760
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:2505
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:8395
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:648
Collapse INT_EQUAL and INT_NOTEQUAL: f(V,W) == f(V,W) => true
Definition: ruleaction.hh:235
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:3615
Class for performing a single transformation on a PcodeOp or Varnode.
Definition: action.hh:194
Simplify another expression associated with optimized division.
Definition: ruleaction.hh:1183
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:3888
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:1794
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:1866
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:7910
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:1245
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:706
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:6358
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:274
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:971
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:7557
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:1182
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:411
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:1759
Convert INT_LEFT to INT_MULT: V << 2 => V * 4
Definition: ruleaction.hh:633
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:5221
Simplify INT_AND when applied to aligned INT_ADD: (V + c) & 0xfff0 => V + (c & 0xfff0)
Definition: ruleaction.hh:302
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:5554
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:595
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:7317
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:661
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:479
static Varnode * findForm(PcodeOp *op, int4 &n, uintb &y, int4 &xsize, OpCode &extopc)
Check for INT_(S)RIGHT and/or SUBPIECE followed by INT_MULT.
Definition: ruleaction.cc:6947
Simplify concatenation with zero: concat(V,0) => zext(V) << c
Definition: ruleaction.hh:858
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:921
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:696
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:4667
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:345
Transform pointer arithmetic.
Definition: ruleaction.hh:1029
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:1163
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:2436
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:1999
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:1139
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:1446
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:415
static void minMaxUse(Varnode *vn, int4 &maxByte, int4 &minByte)
Compute minimum and maximum bytes being used.
Definition: ruleaction.cc:681
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:6408
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:5215
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:5131
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:1753
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:3151
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:6615
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:1524
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:217
Simplify concatenation of extended value: concat(V, zext(W) << c) => concat( concat(V,...
Definition: ruleaction.hh:868
Cleanup: Convert truncation to cast: sub(V,c) => sub(V>>c*8,0)
Definition: ruleaction.hh:1115
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:8621
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:208
Cleanup: Convert INT_ADD of constants to INT_SUB: V + 0xff... => V - 0x00...
Definition: ruleaction.hh:1093
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:5482
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:305
Search for concatenations with unlikely things to inform return/parameter consumption calculation.
Definition: ruleaction.hh:1468
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:4673
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:1459
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:382
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:276
Get rid of unused PcodeOp objects where we can guarantee the output is unused.
Definition: ruleaction.hh:78
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:616
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:1200
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:505
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:6331
Simplify 'less than or equal': V < W || V == W => V <= W
Definition: ruleaction.hh:452
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:1484
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:450
Eliminate INT_SUB: V - W => V + W * -1
Definition: ruleaction.hh:703
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:4596
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:6621
AddTreeState(Funcdata &d, PcodeOp *op, int4 slot)
Construct given root of ADD tree and pointer.
Definition: ruleaction.cc:5622
The list of groups defining a root Action.
Definition: action.hh:29
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:1085
Simplify INT_NEGATE chains: ~~V => V
Definition: ruleaction.hh:1371
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:6670
Simplify MULTIEQUAL operations where the branches hold the same value.
Definition: ruleaction.hh:281
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:3894
Simplify INT_ZEXT applied to SUBPIECE expressions.
Definition: ruleaction.hh:878
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:105
Transform INT_ZEXT and INT_SLESS: zext(V) s< c => V < c
Definition: ruleaction.hh:512
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:1626
Simplify expressions involving three-way comparisons.
Definition: ruleaction.hh:1443
Flip conditions to match structuring cues.
Definition: ruleaction.hh:958
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:955
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:1063
Commute INT_ZEXT with INT_RIGHT: zext(V) >> W => zext(V >> W)
Definition: ruleaction.hh:828
Convert a LOAD or STORE to the first element of a structure to a PTRSUB.
Definition: ruleaction.hh:1040
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:626
Eliminate BOOL_XOR: V ^^ W => V != W
Definition: ruleaction.hh:135
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:1349
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:1952
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:8745
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:4863
RulePtrFlow(const string &g, Architecture *conf)
Constructor.
Definition: ruleaction.cc:7612
Propagate constants through a SEGMENTOP.
Definition: ruleaction.hh:1253
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:168
Simplify multiple INT_ZEXT operations: zext( zext(V) << c ) => zext(V) << c
Definition: ruleaction.hh:838
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:1174
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:1473
Collapse constant expressions.
Definition: ruleaction.hh:653
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:435
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:4952
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:9048
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:3588
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:1073
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:4756
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:2810
static int4 testCompareEquivalence(PcodeOp *lessop, PcodeOp *lessequalop)
Make sure comparisons match properly for a three-way.
Definition: ruleaction.cc:8435
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:128
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:831
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:1033
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:1363
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:81
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:1022
Transform INT_LESS of 0 or 1: V < 1 => V == 0, V <= 0 => V == 0
Definition: ruleaction.hh:322
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:4006
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:3476
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:1374
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:3041
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:1130
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:282
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:750
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:1289
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:646
Commute SUBPIECE and INT_ZEXT: sub(zext(V),c) => zext(sub(V,c))
Definition: ruleaction.hh:777
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:375
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:2512
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:325
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:629
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:4809
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:1133
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:4047
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:405
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:780
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:238
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:8612
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:3298
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:1256
Simplify INT_EQUAL applied to 0: 0 == V + W * -1 => V == W or 0 == V + c => V == -c
Definition: ruleaction.hh:1009
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:2908
A basic block for p-code operations.
Definition: block.hh:365
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:5313
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:8154
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:2301
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:302
Distribute BOOL_NEGATE: !(V && W) => !V || !W
Definition: ruleaction.hh:292
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:3548
Lowest level operation of the p-code language.
Definition: op.hh:58
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:622
Convert "shift and add" to PIECE: (zext(V) << 16) + zext(W) => concat(V,W)
Definition: ruleaction.hh:643
static PcodeOp * detectThreeWay(PcodeOp *op, bool &isPartial)
Detect a three-way calculation.
Definition: ruleaction.cc:8510
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:3936
Manager for all the major decompiler subsystems.
Definition: architecture.hh:119
Merge range conditions of the form: V s< c, c s< V, V == c, V != c
Definition: ruleaction.hh:332
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:8148
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:1060
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:3234
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:1267
Replace (casttosmall)(casttobig)V with identity or with single cast.
Definition: ruleaction.hh:1410
Look for common sub-expressions (built out of a restricted set of ops)
Definition: ruleaction.hh:105
Convert PIECE to INT_ZEXT where appropriate: V & concat(W,X) => zext(X)
Definition: ruleaction.hh:362
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:178
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:9093
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:1096
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:2380
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:2481
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:4389
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:1442
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:726
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:2191
Normalize sign-bit extraction: V >> 0x1f => (V s>> 0x1f) * -1
Definition: ruleaction.hh:602
bool apply(void)
Attempt to transform the pointer expression.
Definition: ruleaction.cc:6011
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:1141
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:4946
Convert logical to boolean operations: V & W => V && W, V | W => V || W
Definition: ruleaction.hh:552
static bool cancelExtensions(PcodeOp *longform, PcodeOp *subOp, Varnode *ext0In, Varnode *ext1In, Funcdata &data)
Eliminate input extensions on given binary PcodeOp.
Definition: ruleaction.cc:4062
Merge range conditions of the form: V f< c, c f< V, V f== c etc.
Definition: ruleaction.hh:342
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:5475
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:3336
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:1278
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:228
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:23
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:2006
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:3127
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:1333
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:8371
Simplify INT_OR with full mask: V = W | 0xffff => V = W
Definition: ruleaction.hh:145
static PcodeOp * findSubshift(PcodeOp *op, int4 &n, OpCode &shiftopc)
Check for shift form of expression.
Definition: ruleaction.cc:6809
Transform shifts in comparisons: V >> c == d => V == (d << c)
Definition: ruleaction.hh:432
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:676
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:5173
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:7439
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:425
A low-level variable or contiguous set of bytes described by an Address and a size.
Definition: varnode.hh:65
Simplify division form: (V + (V s>> 0x1f)>>(32-n)) & (-1<<n) => (V s/ 2^n) * 2^n
Definition: ruleaction.hh:1231
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:3930
Simplify INT_LESS applied to extremal constants.
Definition: ruleaction.hh:978
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:571
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:6708
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:1402
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:285
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:1188
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:3157
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:4869
Convert INT_SLESS to INT_LESS when comparing positive values.
Definition: ruleaction.hh:502
Simplify expressions that optimize INT_REM and INT_SREM.
Definition: ruleaction.hh:1242
Remove a CPUI_INDIRECT if its blocking PcodeOp is dead.
Definition: ruleaction.hh:562
Convert LOAD operations using a constant offset to COPY.
Definition: ruleaction.hh:743
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:5547
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:686
Concatenation with sign bits becomes an extension: concat( V s>> #0x1f , V) => sext(V)
Definition: ruleaction.hh:125
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:4345
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:801
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:3711
Simplify PIECE intended as embedding: concat(V, sub(W,0)) => W & 0xff | (zext(W) << 8)
Definition: ruleaction.hh:938
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:6381
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:118
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:351
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:981
Simplify join and break apart: sub( concat(V,W), c) => sub(W,c)
Definition: ruleaction.hh:918
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:488
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:8401
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:1252
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:656
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:5026
Collapse MULTIEQUAL whose inputs all trace to the same value.
Definition: ruleaction.hh:572
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:6265
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:5167
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:6464
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:991
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:3670
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:98
Collapse unnecessary INT_AND.
Definition: ruleaction.hh:155
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:7311
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:3677
Pull-back SUBPIECE through INT_RIGHT and INT_SRIGHT.
Definition: ruleaction.hh:1138
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:6158
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:4078
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:485
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:138
Simplify various conditional move situations.
Definition: ruleaction.hh:1382
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:4462
Convert sign-bit test to signed comparison: (V s>> 0x1f) != 0 => V s< 0
Definition: ruleaction.hh:612
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:861
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:4012
Eliminate INT_ZEXT in comparisons: zext(V) == c => V == c
Definition: ruleaction.hh:492
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:6152
bool contains(const string &nm) const
Check if this ActionGroupList contains a given group.
Definition: action.hh:37
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:7523
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:7619
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:211
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:4416
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:1786
Simplify boolean expressions that are combined through POPCOUNT.
Definition: ruleaction.hh:1456
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:475
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:1435
Convert BRANCHIND with only one computed destination to a BRANCH.
Definition: ruleaction.hh:948
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:878
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:2914
Container for data structures associated with a single function.
Definition: funcdata.hh:45
The base datatype class for the decompiler.
Definition: type.hh:62
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:395
Simplify chained shifts INT_LEFT and INT_RIGHT.
Definition: ruleaction.hh:392
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:6561
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:7478
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:403
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:575
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:7813
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:6850
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:4227
Simplify boolean expressions when one side is constant.
Definition: ruleaction.hh:482
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:238
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:7931
Simplify masked pieces INT_ORed together: (V & ff00) | (V & 00ff) => V
Definition: ruleaction.hh:928
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:841
Perform SubVariableFlow analysis triggered by INT_AND.
Definition: ruleaction.hh:1264
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:2562
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:259
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:3647
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:376
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:2428
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:148
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:198
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:7484
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:7163
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:1328
Try to detect and split artificially joined Varnodes.
Definition: ruleaction.hh:1286
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:4729
Eliminate INT_2COMP: -V => V * -1
Definition: ruleaction.hh:683
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:901
Commute INT_AND with INT_LEFT and INT_RIGHT: (V << W) & d => (V & (W >> c)) << c
Definition: ruleaction.hh:352
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:1632
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:7925
static void replaceDescendants(Varnode *origVn, Varnode *newVn, int4 maxByte, int4 minByte, Funcdata &data)
Definition: ruleaction.cc:717
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:315
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:891
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:2488
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:1518
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:5088
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:6271
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:218
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:232
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:365
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:3609
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:3206
Simplify INT_SLESS applied to 0 or -1.
Definition: ruleaction.hh:998
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:1699
Convert STORE operations using a constant offset to COPY.
Definition: ruleaction.hh:757
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:344
Distribute INT_AND through INT_OR if result is simpler.
Definition: ruleaction.hh:312
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:2845
Simplify INT_LESSEQUAL && INT_NOTEQUAL: V <= W && V != W => V < W
Definition: ruleaction.hh:462
Simply OR with unconsumed input: `V = A | B => V = B if nzm(A) & consume(V) == 0.
Definition: ruleaction.hh:165
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:3641
OpCode
The op-code defining a specific p-code operation (PcodeOp)
Definition: opcodes.hh:35
Eliminate INT_XOR in comparisons: (V ^ W) == 0 => V == W
Definition: ruleaction.hh:713
Convert INT_SRIGHT form into INT_SDIV: (V + -1*(V s>> 31)) s>> 1 => V s/ 2
Definition: ruleaction.hh:1209
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:6555
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:7372
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:1066
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:7379
Collapse operations using identity element: V + 0 => V
Definition: ruleaction.hh:623
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:4524
Simplify trivial arithmetic expressions.
Definition: ruleaction.hh:472
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:2851
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:9099
Order the inputs to commutative operations.
Definition: ruleaction.hh:246
Perform SubvariableFlow analysis triggered by INT_RIGHT.
Definition: ruleaction.hh:1325
Collapse unnecessary INT_OR.
Definition: ruleaction.hh:175
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:1212
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:185
Transform INT_CARRY using a constant: carry(V,c) => -c <= V
Definition: ruleaction.hh:693
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:3594
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:6402
Collect terms in a sum: V * c + V * d => V * (c + d)
Definition: ruleaction.hh:94
Signed division of positive values is unsigned division.
Definition: ruleaction.hh:1160
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:1872
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:7988
Structure for sorting out pointer expression trees.
Definition: ruleaction.hh:42
Treat FLOAT_NAN as always evaluating to false.
Definition: ruleaction.hh:1421
Simplify signed comparisons using INT_SBORROW.
Definition: ruleaction.hh:582
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:6700
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:1306
Perform SubvariableFlow analysis triggered by INT_ZEXT.
Definition: ruleaction.hh:1336
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:2637
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:7227
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:4383
Mark Varnode and PcodeOp objects that are carrying or operating on pointers.
Definition: ruleaction.hh:1297
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:555
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:6677
Action, Rule, and other associates classes supporting transformations on function data-flow.
Rule(const string &g, uint4 fl, const string &nm)
Construct given group, properties name.
Definition: action.cc:620
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:5125
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:3385
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:6470
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:1002
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:2243
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:565
Simplify comparisons with boolean values: V == false => !V, V == true => V
Definition: ruleaction.hh:532
virtual void reset(Funcdata &data)
Reset this Rule.
Definition: ruleaction.cc:7944
Simplify INT_EQUAL applied to arithmetic expressions.
Definition: ruleaction.hh:1019
Simplify INT_RIGHT and INT_SRIGHT ops where an INT_AND mask becomes unnecessary.
Definition: ruleaction.hh:215
static Varnode * buildSubpiece(Varnode *basevn, uint4 outsize, uint4 shift, Funcdata &data)
Build a SUBPIECE of given base Varnode.
Definition: ruleaction.cc:774
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:249
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:5032
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:7982
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:1317
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:525
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:1107
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:5307
Shifting away all non-zero bits of one-side of a logical/arithmetic op.
Definition: ruleaction.hh:205
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:872
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:1118
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:951
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:545
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:4518
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:261
static Varnode * findSubpiece(Varnode *basevn, uint4 outsize, uint4 shift)
Find a predefined SUBPIECE of a base Varnode.
Definition: ruleaction.cc:847
Push a Varnode with known pointer data-type to the bottom of its additive expression.
Definition: ruleaction.hh:1050
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:1053
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:821
Convert LESSEQUAL to LESS: V <= c => V < (c+1)
Definition: ruleaction.hh:225
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:716
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:5094
Perform SubVariableFlow analysis triggered by SUBPIECE.
Definition: ruleaction.hh:1275
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:188
Cleanup: Convert INT_2COMP from INT_MULT: V * -1 => -V
Definition: ruleaction.hh:1082
Concatenation with 0 becomes an extension: V = concat(#0,W) => V = zext(W)
Definition: ruleaction.hh:115
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:4551
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:295
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:2686
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:609
Apply a set of identities involving BOOL_NEGATE.
Definition: ruleaction.hh:968
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:3330
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:4221
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:2249
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:1012
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:455
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:949
Transform canceling INT_RIGHT or INT_SRIGHT of INT_LEFT.
Definition: ruleaction.hh:422
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:515
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:3120
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:931
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:6364
Pull SUBPIECE back through MULTIEQUAL.
Definition: ruleaction.hh:256
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:4422
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:7733
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:6387
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:2185
static Varnode * getBooleanResult(Varnode *vn, int4 bitPos, int4 &constRes)
Extract boolean Varnode producing bit at given Varnode and position.
Definition: ruleaction.cc:8810
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:2373
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:4735
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:941
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:911
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:1959
Convert INT_MULT and shift forms into INT_DIV or INT_SDIV.
Definition: ruleaction.hh:1194
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:335
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:1351
Remove PTRADD operations with mismatched data-type information.
Definition: ruleaction.hh:1060
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:9054
Simplify INT_LESSEQUAL applied to extremal constants.
Definition: ruleaction.hh:988
Simplify break and rejoin: concat( sub(V,c), sub(V,0) ) => V
Definition: ruleaction.hh:908
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:585
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:4590
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:4470
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:6325
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:790
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:267
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:3290
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:465
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:6844
Commute SUBPIECE operations with earlier operations where possible.
Definition: ruleaction.hh:787
Simplify limited chains of XOR operations.
Definition: ruleaction.hh:1481
Apply INT_NEGATE identities: V & ~V => #0, V | ~V -> #-1
Definition: ruleaction.hh:195
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:1043
Eliminate any INT_AND when the bits it zeroes out are discarded by a shift.
Definition: ruleaction.hh:848
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:385
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:99
Simplify composition of SUBPIECE with INT_ZEXT or INT_SEXT.
Definition: ruleaction.hh:888
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:8377
Perform SubvariableFlow analysis triggered by testing of a single bit.
Definition: ruleaction.hh:1314
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:605
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:495
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:2680
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:1908
static bool acceptableSize(int4 size)
Return true if given size is a suitable truncated size.
Definition: ruleaction.cc:756
Simplify SUBPIECE applied to INT_LEFT: sub( V << 8*c, c) => sub(V,0)
Definition: ruleaction.hh:898
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:8751
Cleanup: Convert INT_ADD back to INT_SUB: V + -W ==> V - W
Definition: ruleaction.hh:1104
Simplify INT_ZEXT and SUBPIECE in masked comparison: zext(V) & c == 0 => V & (c & mask) == 0
Definition: ruleaction.hh:372
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:1310
virtual int4 applyOp(PcodeOp *op, Funcdata &data)
Attempt to apply this Rule.
Definition: ruleaction.cc:308
virtual void getOpList(vector< uint4 > &oplist) const
List of op codes this rule operates on.
Definition: ruleaction.cc:8315
virtual Rule * clone(const ActionGroupList &grouplist) const
Clone the Rule.
Definition: ruleaction.hh:636