decompiler
1.0.0
|
The PcodeOp and PcodeOpBank classes. More...
#include "typeop.hh"
Classes | |
class | IopSpace |
Space for storing internal PcodeOp pointers as addresses. More... | |
class | PcodeOp |
Lowest level operation of the p-code language. More... | |
class | PcodeOpBank |
Container class for PcodeOps associated with a single function. More... | |
Typedefs | |
typedef map< SeqNum, PcodeOp * > | PcodeOpTree |
A map from sequence number (SeqNum) to PcodeOp. | |
Functions | |
int4 | functionalEqualityLevel (Varnode *vn1, Varnode *vn2, Varnode **res1, Varnode **res2) |
Try to determine if vn1 and vn2 contain the same value. More... | |
bool | functionalEquality (Varnode *vn1, Varnode *vn2) |
Determine if two Varnodes hold the same value. More... | |
bool | functionalDifference (Varnode *vn1, Varnode *vn2, int4 depth) |
Return true if vn1 and vn2 are verifiably different values. More... | |
The PcodeOp and PcodeOpBank classes.
Return true if vn1 and vn2 are verifiably different values.
This is actually a rather speculative test
vn1 | is the first Varnode to compare |
vn2 | is the second Varnode |
depth | is the maximum level to recurse while testing |
References PcodeOp::code(), Varnode::getAddr(), Varnode::getDef(), PcodeOp::getIn(), Varnode::isConstant(), Varnode::isFree(), Varnode::isInput(), Varnode::isWritten(), and PcodeOp::numInput().
Referenced by PcodeOpBank::endDead().
Determine if two Varnodes hold the same value.
Only return true if it can be immediately determined they are equivalent
References functionalEqualityLevel().
Referenced by RuleEquality::applyOp(), RuleRangeMeld::applyOp(), RuleMultiCollapse::applyOp(), RuleSborrow::applyOp(), PcodeOpBank::endDead(), and ActionMarkImplied::isPossibleAlias().
Try to determine if vn1 and vn2 contain the same value.
Return:
vn1 | is the first Varnode to compare |
vn2 | is the second Varnode |
res1 | is a reference to the first returned Varnode |
res2 | is a reference to the second returned Varnode |
References PcodeOp::code(), CPUI_LOAD, CPUI_PTRADD, PcodeOp::getAddr(), Varnode::getDef(), PcodeOp::getIn(), Varnode::getOffset(), PcodeOp::isCall(), PcodeOp::isCommutative(), PcodeOp::isMarker(), and PcodeOp::numInput().
Referenced by RulePushMulti::applyOp(), cseFindInBlock(), PcodeOpBank::endDead(), ConditionalJoin::findDups(), ActionMultiCse::findMatch(), RulePushMulti::findSubstitute(), and functionalEquality().