Ghidra Decompiler Analysis Engine
|
Go to the documentation of this file.
18 #ifndef __CPUI_COVER__
19 #define __CPUI_COVER__
41 const PcodeOp *getStart(
void)
const {
return start; }
42 const PcodeOp *getStop(
void)
const {
return stop; }
43 void clear(
void) { start = (
const PcodeOp *)0; stop = (
const PcodeOp *)0; }
46 void setBegin(
const PcodeOp *begin) {
47 start = begin;
if (stop==(
const PcodeOp *)0) stop = (
const PcodeOp *)1; }
48 void setEnd(
const PcodeOp *end) { stop = end; }
50 bool empty(
void)
const {
51 return ((start==(
const PcodeOp *)0)&&(stop==(
const PcodeOp *)0)); }
55 void print(ostream &s)
const;
69 map<int4,CoverBlock> cover;
73 void clear(
void) { cover.clear(); }
87 void print(ostream &s)
const;
88 map<int4,CoverBlock>::const_iterator begin(
void)
const {
return cover.begin(); }
89 map<int4,CoverBlock>::const_iterator end(
void)
const {
return cover.end(); }
const CoverBlock & getCoverBlock(int4 i) const
Get the CoverBlock corresponding to the i-th block.
Definition: cover.cc:251
int4 intersect(const CoverBlock &op2) const
Compute intersection with another CoverBlock.
Definition: cover.cc:57
Description of a control-flow block containing PcodeOps.
Definition: block.hh:60
int4 intersect(const Cover &op2) const
Characterize the intersection between this and another Cover.
Definition: cover.cc:267
static uintm getUIndex(const PcodeOp *op)
Get the comparison index for a PcodeOp.
Definition: cover.cc:27
bool contain(const PcodeOp *point) const
Check containment of given point.
Definition: cover.cc:105
void addRefPoint(const PcodeOp *ref, const Varnode *vn)
Add a variable read to this Cover.
Definition: cover.cc:504
void intersectList(vector< int4 > &listout, const Cover &op2, int4 level) const
Generate a list of blocks that intersect.
Definition: cover.cc:305
int4 intersectByBlock(int4 blk, const Cover &op2) const
Characterize the intersection on a specific block.
Definition: cover.cc:342
int4 boundary(const PcodeOp *point) const
Characterize given point as boundary.
Definition: cover.cc:127
Lowest level operation of the p-code language.
Definition: op.hh:58
void print(ostream &s) const
Dump a description of this cover to stream.
Definition: cover.cc:554
int4 containVarnodeDef(const Varnode *vn) const
Check the definition of a Varnode for containment.
Definition: cover.cc:391
The topological scope of a variable within a basic block.
Definition: cover.hh:35
A low-level variable or contiguous set of bytes described by an Address and a size.
Definition: varnode.hh:65
int4 compareTo(const Cover &op2) const
Give ordering of this and another Cover.
Definition: cover.cc:221
A description of the topological scope of a single variable object.
Definition: cover.hh:68
void merge(const Cover &op2)
Merge this with another Cover block by block.
Definition: cover.cc:415
void addDefPoint(const Varnode *vn)
Reset to the single point where the given Varnode is defined.
Definition: cover.cc:440
bool contain(const PcodeOp *op, int4 max) const
Does this contain the given PcodeOp.
Definition: cover.cc:363
Classes for describing and printing data-types.
void merge(const CoverBlock &op2)
Merge another CoverBlock into this.
Definition: cover.cc:145
void rebuild(const Varnode *vn)
Reset this based on def-use of a single Varnode.
Definition: cover.cc:427
void print(ostream &s) const
Dump a description to stream.
Definition: cover.cc:186