decompiler
1.0.0
|
Data defining a specific memory location. More...
#include <pcoderaw.hh>
Public Member Functions | |
bool | operator< (const VarnodeData &op2) const |
An ordering for VarnodeData. More... | |
bool | operator== (const VarnodeData &op2) const |
Compare for equality. More... | |
bool | operator!= (const VarnodeData &op2) const |
Compare for inequality. More... | |
Address | getAddr (void) const |
Get the location of the varnode as an address. More... | |
void | restoreXml (const Element *el, const AddrSpaceManager *manage) |
Recover this object from an XML tag. More... | |
bool | contains (const VarnodeData &op2) const |
Does this container another given VarnodeData. More... | |
Public Attributes | |
AddrSpace * | space |
The address space. | |
uintb | offset |
The offset within the space. | |
uint4 | size |
The number of bytes in the location. | |
Data defining a specific memory location.
Within the decompiler's model of a processor, any register, memory location, or other variable can always be represented as an address space, an offset within the space, and the size of the sequence of bytes. This is more commonly referred to as a Varnode, but this is a bare-bones container for the data that doesn't have the cached attributes and the dataflow links of the Varnode within its syntax tree.
bool VarnodeData::contains | ( | const VarnodeData & | op2 | ) | const |
Does this container another given VarnodeData.
Return true, if this, as an address range, contains the other address range
op2 | is the other VarnodeData to test for containment |
|
inline |
Get the location of the varnode as an address.
This is a convenience function to construct a full Address from the VarnodeData's address space and offset
Referenced by ActionUnjustifiedParams::apply(), AddrSpaceManager::constructFloatExtensionAddress(), AddrSpaceManager::constructJoinAddress(), EmulatePcodeCache::executeBranch(), ActionPrototypeTypes::extendInput(), ActionFuncLink::funcLinkOutput(), and ParamEntry::justifiedContain().
|
inline |
Compare for inequality.
Compare VarnodeData for inequality. If either the space, offset, or size is not equal, return true.
op2 | is the object being compared to |
|
inline |
An ordering for VarnodeData.
VarnodeData can be sorted in terms of the space its in (the space's index), the offset within the space, and finally by the size.
op2 | is the object being compared to |
References AddrSpace::getIndex(), offset, size, and space.
|
inline |
Compare for equality.
Compare VarnodeData for equality. The space, offset, and size must all be exactly equal
op2 | is the object being compared to |
void VarnodeData::restoreXml | ( | const Element * | el, |
const AddrSpaceManager * | manage | ||
) |
Recover this object from an XML tag.
Build this VarnodeData from an <addr> tag
el | is the parsed tag |
manage | is the address space manager |
References Element::getAttributeName(), Element::getAttributeValue(), AddrSpaceManager::getDefaultCodeSpace(), Element::getNumAttributes(), Translate::getRegister(), AddrSpaceManager::getSpaceByName(), AddrSpace::getTrans(), offset, AddrSpace::restoreXmlAttributes(), size, and space.
Referenced by Architecture::parseIncidentalCopy(), Architecture::parsePreferSplit(), Address::restoreXml(), LanedRegister::restoreXml(), and PcodeEmit::restoreXmlOp().