decompiler  1.0.0
Public Member Functions | Public Attributes | List of all members
ghidra::VarnodeData Struct Reference

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...
 
AddrSpacegetSpaceFromConst (void) const
 Treat this as a constant and recover encoded address space. More...
 
void decode (Decoder &decoder)
 Recover this object from a stream. More...
 
void decodeFromAttributes (Decoder &decoder)
 Recover this object from attributes of the current open element. More...
 
bool contains (const VarnodeData &op2) const
 Does this container another given VarnodeData. More...
 

Public Attributes

AddrSpacespace
 The address space.
 
uintb offset
 The offset within the space.
 
uint4 size
 The number of bytes in the location.
 

Detailed Description

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.

Member Function Documentation

◆ contains()

bool ghidra::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

Parameters
op2is the other VarnodeData to test for containment
Returns
true if this contains the other

References offset, size, and space.

◆ decode()

void ghidra::VarnodeData::decode ( Decoder decoder)

Recover this object from a stream.

Build this VarnodeData from an <addr>, <register>, or <varnode> element.

Parameters
decoderis the stream decoder

References ghidra::Decoder::closeElement(), decodeFromAttributes(), and ghidra::Decoder::openElement().

Referenced by ghidra::Address::decode(), ghidra::PcodeOpRaw::decode(), and ghidra::Architecture::decodeIncidentalCopy().

◆ decodeFromAttributes()

void ghidra::VarnodeData::decodeFromAttributes ( Decoder decoder)

◆ getAddr()

Address ghidra::VarnodeData::getAddr ( void  ) const
inline

◆ getSpaceFromConst()

AddrSpace * ghidra::VarnodeData::getSpaceFromConst ( void  ) const
inline

Treat this as a constant and recover encoded address space.

Returns
the encoded AddrSpace

References offset.

◆ operator!=()

bool ghidra::VarnodeData::operator!= ( const VarnodeData op2) const
inline

Compare for inequality.

Compare VarnodeData for inequality. If either the space, offset, or size is not equal, return true.

Parameters
op2is the object being compared to
Returns
true if this is not equal to op2

References offset, size, and space.

◆ operator<()

bool ghidra::VarnodeData::operator< ( const VarnodeData op2) const
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.

Parameters
op2is the object being compared to
Returns
true if this is less than op2

References ghidra::AddrSpace::getIndex(), offset, size, and space.

◆ operator==()

bool ghidra::VarnodeData::operator== ( const VarnodeData op2) const
inline

Compare for equality.

Compare VarnodeData for equality. The space, offset, and size must all be exactly equal

Parameters
op2is the object being compared to
Returns
true if this is equal to op2

References offset, size, and space.


The documentation for this struct was generated from the following files: