decompiler
1.0.0
|
Description of the indirect effect a sub-function has on a memory range. More...
#include <fspec.hh>
Public Types | |
enum | { unaffected = 1, killedbycall = 2, return_address = 3, unknown_effect = 4 } |
Public Member Functions | |
EffectRecord (void) | |
Constructor for use with decode() | |
EffectRecord (const EffectRecord &op2) | |
Copy constructor. | |
EffectRecord (const Address &addr, int4 size) | |
Construct a memory range with an unknown effect. More... | |
EffectRecord (const ParamEntry &entry, uint4 t) | |
Construct an effect on a parameter storage location. More... | |
EffectRecord (const VarnodeData &addr, uint4 t) | |
Construct an effect on a memory range. More... | |
uint4 | getType (void) const |
Get the type of effect. | |
Address | getAddress (void) const |
Get the starting address of the affected range. | |
int4 | getSize (void) const |
Get the size of the affected range. | |
bool | operator== (const EffectRecord &op2) const |
Equality operator. | |
bool | operator!= (const EffectRecord &op2) const |
Inequality operator. | |
void | encode (Encoder &encoder) const |
Encode the record to a stream. More... | |
void | decode (uint4 grouptype, Decoder &decoder) |
Decode the record from a stream. More... | |
Static Public Member Functions | |
static bool | compareByAddress (const EffectRecord &op1, const EffectRecord &op2) |
Compare two EffectRecords by their start Address. More... | |
Private Attributes | |
VarnodeData | range |
The memory range affected. | |
uint4 | type |
The type of effect. | |
Description of the indirect effect a sub-function has on a memory range.
This object applies only to the specific memory range, which is seen from the point of view of the calling function as a particular sub-function gets called. The main enumeration below lists the possible effects.
anonymous enum |
Enumerator | |
---|---|
unaffected | The sub-function does not change the value at all. |
killedbycall | The memory is changed and is completely unrelated to its original value. |
return_address | The memory is being used to store the return address. |
unknown_effect | An unknown effect (indicates the absence of an EffectRecord) |
ghidra::EffectRecord::EffectRecord | ( | const Address & | addr, |
int4 | size | ||
) |
Construct a memory range with an unknown effect.
The type is set to unknown_effect
addr | is the start of the memory range |
size | is the number of bytes in the memory range |
References ghidra::Address::getOffset(), ghidra::Address::getSpace(), and ghidra::AddrSpace::type.
ghidra::EffectRecord::EffectRecord | ( | const ParamEntry & | entry, |
uint4 | t | ||
) |
Construct an effect on a parameter storage location.
entry | is a model of the parameter storage |
t | is the effect type |
References ghidra::ParamEntry::getBase(), ghidra::ParamEntry::getSize(), ghidra::ParamEntry::getSpace(), and ghidra::AddrSpace::type.
ghidra::EffectRecord::EffectRecord | ( | const VarnodeData & | data, |
uint4 | t | ||
) |
Construct an effect on a memory range.
data | is the memory range affected |
t | is the effect type |
References ghidra::AddrSpace::type.
|
inlinestatic |
Compare two EffectRecords by their start Address.
op1 | is the first record to compare |
op2 | is the other record to compare |
References ghidra::AddrSpace::getIndex(), ghidra::VarnodeData::offset, range, and ghidra::VarnodeData::space.
Referenced by ghidra::ProtoModel::decode(), ghidra::FuncProto::decodeEffect(), ghidra::ProtoModelMerged::intersectEffects(), ghidra::ProtoModel::lookupEffect(), and ghidra::ProtoModel::lookupRecord().
void ghidra::EffectRecord::decode | ( | uint4 | grouptype, |
Decoder & | decoder | ||
) |
Decode the record from a stream.
Parse an <addr> element to get the memory range. The effect type is inherited from the parent.
grouptype | is the effect inherited from the parent |
decoder | is the stream decoder |
References ghidra::AddrSpace::type.
void ghidra::EffectRecord::encode | ( | Encoder & | encoder | ) | const |
Encode the record to a stream.
Encode just an <addr> element. The effect type is indicated by the parent element.
encoder | is the stream encoder |
References ghidra::Address::encode(), and ghidra::AddrSpace::type.
Referenced by ghidra::FuncProto::encodeEffect().