decompiler
1.0.0
|
The pool of temporary storage registers. More...
#include <space.hh>
Public Member Functions | |
UniqueSpace (AddrSpaceManager *m, const Translate *t, int4 ind, uint4 fl) | |
Constructor. More... | |
UniqueSpace (AddrSpaceManager *m, const Translate *t) | |
For use with decode. | |
virtual void | saveXml (ostream &s) const |
Write the details of this space as XML. More... | |
Public Member Functions inherited from ghidra::AddrSpace | |
AddrSpace (AddrSpaceManager *m, const Translate *t, spacetype tp, const string &nm, uint4 size, uint4 ws, int4 ind, uint4 fl, int4 dl) | |
AddrSpace (AddrSpaceManager *m, const Translate *t, spacetype tp) | |
For use with decode. More... | |
virtual | ~AddrSpace (void) |
The address space destructor. | |
const string & | getName (void) const |
Get the name. More... | |
AddrSpaceManager * | getManager (void) const |
Get the space manager. More... | |
const Translate * | getTrans (void) const |
Get the processor translator. More... | |
spacetype | getType (void) const |
Get the type of space. More... | |
int4 | getDelay (void) const |
Get number of heritage passes being delayed. More... | |
int4 | getDeadcodeDelay (void) const |
Get number of passes before deadcode removal is allowed. More... | |
int4 | getIndex (void) const |
Get the integer identifier. More... | |
uint4 | getWordSize (void) const |
Get the addressable unit size. More... | |
uint4 | getAddrSize (void) const |
Get the size of the space. More... | |
uintb | getHighest (void) const |
Get the highest byte-scaled address. More... | |
uintb | getPointerLowerBound (void) const |
Get lower bound for assuming an offset is a pointer. More... | |
uintb | getPointerUpperBound (void) const |
Get upper bound for assuming an offset is a pointer. More... | |
int4 | getMinimumPtrSize (void) const |
Get the minimum pointer size for this space. More... | |
uintb | wrapOffset (uintb off) const |
Wrap -off- to the offset that fits into this space. More... | |
char | getShortcut (void) const |
Get the shortcut character. More... | |
bool | isHeritaged (void) const |
Return true if dataflow has been traced. More... | |
bool | doesDeadcode (void) const |
Return true if dead code analysis should be done on this space. More... | |
bool | hasPhysical (void) const |
Return true if data is physically stored in this. More... | |
bool | isBigEndian (void) const |
Return true if values in this space are big endian. More... | |
bool | isReverseJustified (void) const |
Return true if alignment justification does not match endianness. More... | |
bool | isFormalStackSpace (void) const |
Return true if this is attached to the formal stack pointer. More... | |
bool | isOverlay (void) const |
Return true if this is an overlay space. | |
bool | isOverlayBase (void) const |
Return true if other spaces overlay this space. | |
bool | isOtherSpace (void) const |
Return true if this is the other address space. | |
bool | isTruncated (void) const |
Return true if this space is truncated from its original size. More... | |
bool | hasNearPointers (void) const |
Return true if near (truncated) pointers into this space are possible. | |
void | printOffset (ostream &s, uintb offset) const |
Write an address offset to a stream. More... | |
virtual int4 | numSpacebase (void) const |
Number of base registers associated with this space. More... | |
virtual const VarnodeData & | getSpacebase (int4 i) const |
Get a base register that creates this virtual space. More... | |
virtual const VarnodeData & | getSpacebaseFull (int4 i) const |
Return original spacebase register before truncation. More... | |
virtual bool | stackGrowsNegative (void) const |
Return true if a stack in this space grows negative. More... | |
virtual AddrSpace * | getContain (void) const |
Return this space's containing space (if any) More... | |
virtual int4 | overlapJoin (uintb offset, int4 size, AddrSpace *pointSpace, uintb pointOff, int4 pointSkip) const |
Determine if a given point is contained in an address range in this address space. More... | |
virtual void | encodeAttributes (Encoder &encoder, uintb offset) const |
Encode address attributes to a stream. More... | |
virtual void | encodeAttributes (Encoder &encoder, uintb offset, int4 size) const |
Encode an address and size attributes to a stream. More... | |
virtual uintb | decodeAttributes (Decoder &decoder, uint4 &size) const |
Recover an offset and size. More... | |
virtual void | printRaw (ostream &s, uintb offset) const |
Write an address in this space to a stream. More... | |
virtual uintb | read (const string &s, int4 &size) const |
Read in an address (and possible size) from a string. More... | |
virtual void | decode (Decoder &decoder) |
Recover the details of this space from XML. | |
Static Public Attributes | |
static const string | NAME = "unique" |
Reserved name for the unique space. | |
static const uint4 | SIZE = 4 |
Fixed size (in bytes) for unique space offsets. | |
Additional Inherited Members | |
Public Types inherited from ghidra::AddrSpace | |
enum | { big_endian = 1, heritaged = 2, does_deadcode = 4, programspecific = 8, reverse_justification = 16, formal_stackspace = 0x20, overlay = 0x40, overlaybase = 0x80, truncated = 0x100, hasphysical = 0x200, is_otherspace = 0x400, has_nearpointers = 0x800 } |
Static Public Member Functions inherited from ghidra::AddrSpace | |
static uintb | addressToByte (uintb val, uint4 ws) |
Scale from addressable units to byte units. More... | |
static uintb | byteToAddress (uintb val, uint4 ws) |
Scale from byte units to addressable units. More... | |
static int8 | addressToByteInt (int8 val, uint4 ws) |
Scale int4 from addressable units to byte units. More... | |
static int8 | byteToAddressInt (int8 val, uint4 ws) |
Scale int4 from byte units to addressable units. More... | |
static bool | compareByIndex (const AddrSpace *a, const AddrSpace *b) |
Compare two spaces by their index. More... | |
Protected Member Functions inherited from ghidra::AddrSpace | |
void | calcScaleMask (void) |
Calculate scale and mask. More... | |
void | setFlags (uint4 fl) |
Set a cached attribute. More... | |
void | clearFlags (uint4 fl) |
Clear a cached attribute. More... | |
void | saveBasicAttributes (ostream &s) const |
Write the XML attributes of this space. More... | |
void | decodeBasicAttributes (Decoder &decoder) |
Read attributes for this space from an open XML element. More... | |
void | truncateSpace (uint4 newsize) |
Protected Attributes inherited from ghidra::AddrSpace | |
string | name |
Name of this space. | |
uint4 | addressSize |
Size of an address into this space in bytes. | |
uint4 | wordsize |
Size of unit being addressed (1=byte) | |
int4 | minimumPointerSize |
Smallest size of a pointer into this space (in bytes) | |
int4 | index |
An integer identifier for the space. | |
int4 | delay |
Delay in heritaging this space. | |
int4 | deadcodedelay |
Delay before deadcode removal is allowed on this space. | |
The pool of temporary storage registers.
It is convenient both for modelling processor instructions in an RTL and for later transforming of the RTL to have a pool of temporary registers that can hold data but that aren't a formal part of the state of the processor. The UniqueSpace provides a specific location for this pool. The analysis engine always creates exactly one of these spaces named unique.
ghidra::UniqueSpace::UniqueSpace | ( | AddrSpaceManager * | m, |
const Translate * | t, | ||
int4 | ind, | ||
uint4 | fl | ||
) |
Constructor.
This is the constructor for the unique space, which is automatically constructed by the analysis engine, and constructed only once. The name should always be unique.
m | is the associated address space manager |
t | is the associated processor translator |
ind | is the integer identifier |
fl | are attribute flags (currently unused) |
References ghidra::AddrSpace::hasphysical, ghidra::IPTR_INTERNAL, and ghidra::AddrSpace::setFlags().
|
virtual |
Write the details of this space as XML.
Write a tag fully describing the details of this space suitable for later recovery via decode.
s | is the stream being written |
Reimplemented from ghidra::AddrSpace.
References ghidra::JoinSpace::NAME, and ghidra::AddrSpace::saveBasicAttributes().