decompiler
1.0.0
|
A special form of ValueSet associated with the read point of a Varnode. More...
#include <rangeutil.hh>
Public Member Functions | |
void | compute (void) |
Compute this value set. More... | |
void | printRaw (ostream &s) const |
Write a text description of to the given stream. More... | |
Private Member Functions | |
void | setPcodeOp (PcodeOp *o, int4 slt) |
Establish read this value set corresponds to. More... | |
void | addEquation (int4 slt, int4 type, const CircleRange &constraint) |
Insert an equation restricting this value set. More... | |
Private Attributes | |
int4 | typeCode |
0=pure constant 1=stack relative | |
int4 | slot |
The slot being read. | |
PcodeOp * | op |
The PcodeOp at the point of the value set read. | |
CircleRange | range |
Range of values or offsets in this set. | |
CircleRange | equationConstraint |
Constraint associated with the equation. | |
int4 | equationTypeCode |
Type code of the associated equation. | |
bool | leftIsStable |
Set to true if left boundary of range didn't change (last iteration) | |
bool | rightIsStable |
Set to true if right boundary of range didn't change (last iteration) | |
Friends | |
class | ValueSetSolver |
A special form of ValueSet associated with the read point of a Varnode.
When a Varnode is read, it may have a more restricted range at the point of the read compared to the full scope. This class officially stores the value set at the point of the read (specified by PcodeOp and slot). It is computed as a final step after the main iteration has completed.
|
private |
Insert an equation restricting this value set.
slt | is the given slot |
type | is the constraint characteristic |
constraint | is the given range |
References equationConstraint, equationTypeCode, and slot.
void ValueSetRead::compute | ( | void | ) |
Compute this value set.
This value set will be the same as the ValueSet of the Varnode being read but may be modified due to additional control-flow constraints
References equationConstraint, equationTypeCode, CircleRange::intersect(), leftIsStable, op, range, rightIsStable, slot, and typeCode.
void ValueSetRead::printRaw | ( | ostream & | s | ) | const |
Write a text description of to the given stream.
s | is the stream to print to |
References get_opname(), op, CircleRange::printRaw(), range, and typeCode.
|
private |
Establish read this value set corresponds to.
o | is the PcodeOp reading the value set |
slt | is the input slot the values are coming in from |
References equationTypeCode, op, slot, and typeCode.