Package ghidra.program.model.address
Class SegmentedAddressSpace
- java.lang.Object
-
- ghidra.program.model.address.GenericAddressSpace
-
- ghidra.program.model.address.SegmentedAddressSpace
-
- All Implemented Interfaces:
AddressSpace,java.lang.Comparable<AddressSpace>
- Direct Known Subclasses:
ProtectedAddressSpace
public class SegmentedAddressSpace extends GenericAddressSpace
Address Space for dealing with (intel) segmented address spaces. It understands the mapping between the segmented encoding (seg:offset) and the flat address encoding necessary to produce an Address object that can be used by other analyses. This mapping is inherent in protected methods: - getDefaultOffsetFromFlat - getDefaultSegmentFromFlat - getFlatOffset - getOffsetFromFlat - getAddressInSegment These 5 methods can be overridden to get a different mapping. This base class is set up to map as for x86 16-bit real-mode.
-
-
Field Summary
Fields Modifier and Type Field Description protected AddressmaxAddressprotected longmaxOffsetprotected AddressminAddressprotected longminOffsetprotected java.lang.Stringnameprotected booleansignedprotected intsizeprotected intspaceIDprotected longspaceSizeprotected inttypeprotected intunitSize-
Fields inherited from interface ghidra.program.model.address.AddressSpace
DEFAULT_REGISTER_SPACE, EXTERNAL_SPACE, HASH_SPACE, ID_SIZE_MASK, ID_SIZE_SHIFT, ID_TYPE_MASK, ID_UNIQUE_SHIFT, OTHER_SPACE, TYPE_CODE, TYPE_CONSTANT, TYPE_DELETED, TYPE_EXTERNAL, TYPE_IPTR_CONSTANT, TYPE_IPTR_INTERNAL, TYPE_IPTR_SPACEBASE, TYPE_JOIN, TYPE_NONE, TYPE_OTHER, TYPE_RAM, TYPE_REGISTER, TYPE_STACK, TYPE_SYMBOL, TYPE_UNIQUE, TYPE_UNKNOWN, TYPE_VARIABLE, VARIABLE_SPACE
-
-
Constructor Summary
Constructors Modifier Constructor Description SegmentedAddressSpace(java.lang.String name, int unique)Constructs a new Segmented AddressSpace for x86 real-mode, with 21-bit addresses.protectedSegmentedAddressSpace(java.lang.String name, int size, int unique)Constructor for larger size address spaces (than the real-mode space)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description Addressadd(Address addr, long displacement)Creates a new address (possibly in a new space) by adding the given displacement from the given address.AddressaddNoWrap(Address addr, long displacement)Creates a new address by adding displacement to the given address.AddressaddNoWrap(GenericAddress addr, java.math.BigInteger displacement)Creates a new address by adding displacement to the given address.AddressaddWrap(Address addr, long displacement)Creates a new address by adding displacement to the given address.AddressaddWrapSpace(Address addr, long displacement)Creates a new address by adding the displacement to the given address.intcompareTo(AddressSpace space)booleanequals(java.lang.Object obj)SegmentedAddressgetAddress(int segment, int segmentOffset)Generates a segmented address with the given segment, offset, and overlay id.SegmentedAddressgetAddress(long byteOffset)Returns a new address in this space with the given byte offset.AddressgetAddress(long offset, boolean isAddressableWordOffset)Returns a new address in this space with the given offset.AddressgetAddress(java.lang.String addrString)Parses the String into an address.AddressgetAddress(java.lang.String addrString, boolean caseSensitive)Parses the String into an address.intgetAddressableUnitSize()Returns the number of data bytes which correspond to each addressable location within this space (i.e., word-size in bytes).longgetAddressableWordOffset(long byteOffset)Get the addressable memory word offset which corresponds to the specified memory byte offset.protected SegmentedAddressgetAddressInSegment(long flat, int preferredSegment)Given a flat address offset and a preferred segment, try to create an address that maps to the offset and is in the segment.SegmentedAddressgetAddressInThisSpaceOnly(long byteOffset)Get a byte address from this address space.protected longgetDefaultOffsetFromFlat(long flat)Given a flat address offset, extract the offset portion assuming the default segment.protected intgetDefaultSegmentFromFlat(long flat)Given a flat address offset, extract the default 16-bit segment portionprotected longgetFlatOffset(int segment, long offset)Given a 16-bit segment and an offset, produce the flat address offsetAddressgetMaxAddress()Get the max address allowed for this AddressSpace.AddressgetMinAddress()Get the min address allowed for this AddressSpacejava.lang.StringgetName()Returns the name of this address space.intgetNextOpenSegment(Address addr)Get the segment index for the first segment whose start address comes after the given addressprotected longgetOffsetFromFlat(long flat, int segment)Given a flat address offset, extract a segment offset assuming a specific segment value.AddressgetOverlayAddress(Address addr)No overlay translation necessary, this is a base addressSpace.SegmentedAddressSpacegetPhysicalSpace()Returns the physical space associated with an address space.intgetPointerSize()Returns the absolute size of a pointer into this space (in bytes).intgetSize()Returns the number of bits that are used to form the address.intgetSpaceID()Get the ID for this spaceAddressgetTruncatedAddress(long offset, boolean isAddressableWordOffset)Returns a new address in this space with the given offset.intgetType()Returns the type of this address spaceprotected SegmentedAddressgetUncheckedAddress(long byteOffset)Instantiates an address within this space.intgetUnique()Returns the unique id value for this space.inthashCode()booleanhasMappedRegisters()Returns true if this space has registers that are mapped into it.booleanhasSignedOffset()Returns true if space uses signed offsetbooleanisConstantSpace()Returns true if this space in the constant spacebooleanisExternalSpace()Returns true if this space in the EXTERNAL_SPACEbooleanisHashSpace()Returns true if this space represents a location in the HASH space.booleanisLoadedMemorySpace()Returns true if this space represents represents a Loaded Memory region (e.g., processor RAM).booleanisMemorySpace()Returns true if this space represents a memory address.booleanisNonLoadedMemorySpace()Returns true if this space represents represents a Non-Loaded storage region for retaining non-loaded file data (e.g., OTHER)booleanisOverlaySpace()Returns true if this addressSpace is an OverlayAddressSpacebooleanisRegisterSpace()Returns true if this space represents a register locationbooleanisStackSpace()Returns true if this space represents a stack locationbooleanisSuccessor(Address addr1, Address addr2)Tests whether addr2 immediately follows addr1.booleanisUniqueSpace()Returns true if this space in the unique spacebooleanisValidRange(long byteOffset, long length)Check the specified address range for validity within this space.booleanisVariableSpace()Returns true if this space represents a variable locationlongmakeValidOffset(long offset)Tests if the offset if valid.voidsetHasMappedRegisters(boolean hasRegisters)Tag this memory space as having memory mapped registersvoidsetShowSpaceName(boolean b)booleanshowSpaceName()Returns true if the address should display its addressSpace name.Addresssubtract(Address addr, long displacement)Creates a new address (possibly in a new space) by subtracting the given displacement from the given address.longsubtract(Address addr1, Address addr2)Calculates the displacement between addr1 and addr2 (addr1 - addr2)AddresssubtractNoWrap(Address addr, long displacement)Creates a new address by subtracting displacement from addr's offset.AddresssubtractWrap(Address addr, long displacement)Creates a new address by subtracting displacement from addr's offset.AddresssubtractWrapSpace(Address addr, long displacement)Creates a new address by subtracting the displacement from the given address.protected voidtestAddressSpace(Address addr)java.lang.StringtoString()longtruncateAddressableWordOffset(long wordOffset)Truncate the specified addressable unit/word offset within this space to produce a valid offset.longtruncateOffset(long offset)Truncate the specified byte offset within this space to produce a valid offset.
-
-
-
Field Detail
-
name
protected java.lang.String name
-
size
protected int size
-
unitSize
protected int unitSize
-
type
protected int type
-
spaceSize
protected long spaceSize
-
signed
protected boolean signed
-
minOffset
protected long minOffset
-
maxOffset
protected long maxOffset
-
minAddress
protected Address minAddress
-
maxAddress
protected Address maxAddress
-
spaceID
protected int spaceID
-
-
Constructor Detail
-
SegmentedAddressSpace
protected SegmentedAddressSpace(java.lang.String name, int size, int unique)Constructor for larger size address spaces (than the real-mode space)- Parameters:
name- is the name of the spacesize- is the number of bits in a (flat) addressunique- is the unique id for the space
-
SegmentedAddressSpace
public SegmentedAddressSpace(java.lang.String name, int unique)Constructs a new Segmented AddressSpace for x86 real-mode, with 21-bit addresses.- Parameters:
name- is the name of the spaceunique- is the unique id for the space.
-
-
Method Detail
-
getFlatOffset
protected long getFlatOffset(int segment, long offset)Given a 16-bit segment and an offset, produce the flat address offset- Parameters:
segment- is the segment valueoffset- is the 16-bit offset into the segment- Returns:
- the encoded flat offset
-
getDefaultSegmentFromFlat
protected int getDefaultSegmentFromFlat(long flat)
Given a flat address offset, extract the default 16-bit segment portion- Parameters:
flat- is the flat offset- Returns:
- the segment value
-
getDefaultOffsetFromFlat
protected long getDefaultOffsetFromFlat(long flat)
Given a flat address offset, extract the offset portion assuming the default segment.- Parameters:
flat- is the flat offset- Returns:
- the offset value
-
getOffsetFromFlat
protected long getOffsetFromFlat(long flat, int segment)Given a flat address offset, extract a segment offset assuming a specific segment value.- Parameters:
flat- is the flat offsetsegment- is the specific segment value- Returns:
- the segment offset
-
getAddressInSegment
protected SegmentedAddress getAddressInSegment(long flat, int preferredSegment)
Given a flat address offset and a preferred segment, try to create an address that maps to the offset and is in the segment. For architectures like x86 real-mode, multiple address encodings can map to the same flat address offset. This method tries to select between the different encodings. If the flat offset cannot be encoded with the preferred segment, null is returned.- Parameters:
flat- is the flat offsetpreferredSegment- is the 16-bit preferred segment value- Returns:
- the segment encoded address or null
-
getAddress
public Address getAddress(java.lang.String addrString) throws AddressFormatException
Description copied from interface:AddressSpaceParses the String into an address.- Specified by:
getAddressin interfaceAddressSpace- Parameters:
addrString- the string to parse as an address.- Returns:
- an address if the string parsed successfully or null if the AddressSpace specified in the addrString is not this space.
- Throws:
AddressFormatException- if the string cannot be parsed or the parsed offset is larger than the size for this space.- See Also:
AddressSpace.getAddress(java.lang.String)
-
getAddress
public Address getAddress(java.lang.String addrString, boolean caseSensitive) throws AddressFormatException
Description copied from interface:AddressSpaceParses the String into an address.- Specified by:
getAddressin interfaceAddressSpace- Parameters:
addrString- the string to parse as an address.caseSensitive- specifies if addressSpace names must match case.- Returns:
- an address if the string parsed successfully or null if the AddressSpace specified in the addrString is not this space.
- Throws:
AddressFormatException- if the string cannot be parsed or the parsed offset is larger than the size for this space.
-
subtract
public Address subtract(Address addr, long displacement)
Description copied from interface:AddressSpaceCreates a new address (possibly in a new space) by subtracting the given displacement from the given address.- Specified by:
subtractin interfaceAddressSpace- Parameters:
addr- original address being subtracted fromdisplacement- amount to subtract- Returns:
- the new address
- See Also:
AddressSpace.subtract(ghidra.program.model.address.Address, long)
-
add
public Address add(Address addr, long displacement)
Description copied from interface:AddressSpaceCreates a new address (possibly in a new space) by adding the given displacement from the given address.- Specified by:
addin interfaceAddressSpace- Parameters:
addr- original address being subtracted fromdisplacement- amount to subtract- Returns:
- the new address
- See Also:
AddressSpace.add(ghidra.program.model.address.Address, long)
-
getAddress
public SegmentedAddress getAddress(long byteOffset)
Description copied from interface:AddressSpaceReturns a new address in this space with the given byte offset. NOTE: This method is the same as invoking getAddress(long byteOffset, false).- Specified by:
getAddressin interfaceAddressSpace- Overrides:
getAddressin classGenericAddressSpace- Parameters:
byteOffset- the byte offset for the new address.- Returns:
- address with given byte offset
- See Also:
AddressSpace.getAddress(long)
-
getAddressInThisSpaceOnly
public SegmentedAddress getAddressInThisSpaceOnly(long byteOffset)
Description copied from interface:AddressSpaceGet a byte address from this address space. Don't allow overlay spaces to remap the address into a base space when the address is not contained in the bounds of the overlay region.- Specified by:
getAddressInThisSpaceOnlyin interfaceAddressSpace- Overrides:
getAddressInThisSpaceOnlyin classGenericAddressSpace- Parameters:
byteOffset- the byte offset for the new address.- Returns:
- an address if the offset is valid.
- See Also:
AddressSpace.getAddressInThisSpaceOnly(long)
-
getUncheckedAddress
protected SegmentedAddress getUncheckedAddress(long byteOffset)
Instantiates an address within this space. No offset validation should be performed.- Overrides:
getUncheckedAddressin classGenericAddressSpace- See Also:
AbstractAddressSpace.getUncheckedAddress(long)
-
getAddress
public SegmentedAddress getAddress(int segment, int segmentOffset)
Generates a segmented address with the given segment, offset, and overlay id.- Parameters:
segment- the segmentsegmentOffset- the offset in the segment- Returns:
- SegmentedAddress the newly created segmented address.
-
getNextOpenSegment
public int getNextOpenSegment(Address addr)
Get the segment index for the first segment whose start address comes after the given address- Parameters:
addr- is the given address- Returns:
- the segment index
-
getPhysicalSpace
public SegmentedAddressSpace getPhysicalSpace()
Description copied from interface:AddressSpaceReturns the physical space associated with an address space. There is always exactly one physical space associated with an address space (it may be its own physical space).- Specified by:
getPhysicalSpacein interfaceAddressSpace- Returns:
- the associated physical space.
- See Also:
AddressSpace.getPhysicalSpace()
-
getPointerSize
public int getPointerSize()
Description copied from interface:AddressSpaceReturns the absolute size of a pointer into this space (in bytes).- Specified by:
getPointerSizein interfaceAddressSpace- See Also:
AddressSpace.getPointerSize()
-
hasSignedOffset
public boolean hasSignedOffset()
Description copied from interface:AddressSpaceReturns true if space uses signed offset- Specified by:
hasSignedOffsetin interfaceAddressSpace
-
getName
public java.lang.String getName()
Description copied from interface:AddressSpaceReturns the name of this address space.- Specified by:
getNamein interfaceAddressSpace
-
getSize
public int getSize()
Description copied from interface:AddressSpaceReturns the number of bits that are used to form the address. Thus the maximum offset for this address space will be 2^size-1.- Specified by:
getSizein interfaceAddressSpace
-
getAddressableUnitSize
public int getAddressableUnitSize()
Description copied from interface:AddressSpaceReturns the number of data bytes which correspond to each addressable location within this space (i.e., word-size in bytes). NOTE: When transforming a byte-offset to an addressable word offset the methodAddressSpace.getAddressableWordOffset(long)should be used instead of simple division. When transforming an addressable word-offset to a byte-offset simple multiplication may be used. Neither of these transformations perform address space bounds checking.byteOffset = wordOffset * addressUnitSize wordOffset = getAddressableWordOffset(byteOffset)
- Specified by:
getAddressableUnitSizein interfaceAddressSpace
-
getAddressableWordOffset
public long getAddressableWordOffset(long byteOffset)
Description copied from interface:AddressSpaceGet the addressable memory word offset which corresponds to the specified memory byte offset. This method handles some of the issues of unsigned math when stuck using Java's signed long primitives. No space bounds checking is performed.- Specified by:
getAddressableWordOffsetin interfaceAddressSpace- Parameters:
byteOffset- memory byte offset- Returns:
- addressable memory word offset
-
getType
public int getType()
Description copied from interface:AddressSpaceReturns the type of this address space- Specified by:
getTypein interfaceAddressSpace
-
getUnique
public int getUnique()
Returns the unique id value for this space.- Specified by:
getUniquein interfaceAddressSpace
-
getAddress
public Address getAddress(long offset, boolean isAddressableWordOffset) throws AddressOutOfBoundsException
Description copied from interface:AddressSpaceReturns a new address in this space with the given offset. NOTE: for those spaces with an addressable unit size other than 1, the address returned may not correspond to an addressable unit/word boundary if a byte-offset is specified.- Specified by:
getAddressin interfaceAddressSpace- Parameters:
offset- the offset for the new address.isAddressableWordOffset- if true the specified offset is an addressable unit/word offset, otherwise offset is a byte offset. SeeAddressSpace.getAddressableUnitSize()to understand the distinction (i.e., wordOffset = byteOffset * addressableUnitSize).- Returns:
- address with given offset
- Throws:
AddressOutOfBoundsException- if the offset is less than 0 or greater than the max offset allowed for this space.
-
getTruncatedAddress
public Address getTruncatedAddress(long offset, boolean isAddressableWordOffset)
Description copied from interface:AddressSpaceReturns a new address in this space with the given offset. The specified offset will be truncated within the space and will not throw an exception. NOTE: for those spaces with an addressable unit size other than 1, the address returned may not correspond to a word boundary (addressable unit) if a byte-offset is specified.- Specified by:
getTruncatedAddressin interfaceAddressSpace- Parameters:
offset- the offset for the new address.isAddressableWordOffset- if true the specified offset is an addressable unit/word offset, otherwise offset is a byte offset. SeeAddressSpace.getAddressableUnitSize()to understand the distinction (i.e., wordOffset = byteOffset * addressableUnitSize).- Returns:
- address with given byte offset truncated to the physical space size
-
subtract
public long subtract(Address addr1, Address addr2)
Description copied from interface:AddressSpaceCalculates the displacement between addr1 and addr2 (addr1 - addr2)- Specified by:
subtractin interfaceAddressSpace- Parameters:
addr1- the address to subtract from.addr2- the address to subtract.- Returns:
- the difference. (
addr1.offset - addr2.offset).
-
subtractWrap
public Address subtractWrap(Address addr, long displacement)
Description copied from interface:AddressSpaceCreates a new address by subtracting displacement from addr's offset.- Specified by:
subtractWrapin interfaceAddressSpace- Parameters:
addr- the original address. The new address will wrap in a manner that depends on the address space. For a generic address space this will wrap at the extents of the address space. For a segmented address space it will wrap at the extents of the segment.displacement- the displacement to subtract.- Returns:
- a new address created by subtracting the displacement from addr.offset.
-
subtractWrapSpace
public Address subtractWrapSpace(Address addr, long displacement)
Description copied from interface:AddressSpaceCreates a new address by subtracting the displacement from the given address. If the offset is greater than the max offset of the address space, the high order bits are masked off, making the address wrap. For non-segmented addresses this will be the same as subtractWrap(). For segmented addresses, the address will wrap when the 20 bit (oxfffff) offset is exceeded, as opposed to when the segment offset is exceeded.- Specified by:
subtractWrapSpacein interfaceAddressSpace- Parameters:
addr- the address to subtract the displacement from.displacement- the displacement to subtract.- Returns:
- The new Address formed by subtracting the displacement from the specified address.
-
subtractNoWrap
public Address subtractNoWrap(Address addr, long displacement) throws AddressOverflowException
Description copied from interface:AddressSpaceCreates a new address by subtracting displacement from addr's offset. The new offset will NOT wrap!- Specified by:
subtractNoWrapin interfaceAddressSpace- Parameters:
addr- the original addressdisplacement- the displacement to subtract.- Returns:
- The new address created by subtracting displacement from addr.offset.
- Throws:
AddressOverflowException- if the subtraction would cause a wrap,
-
addWrap
public Address addWrap(Address addr, long displacement)
Description copied from interface:AddressSpaceCreates a new address by adding displacement to the given address. The resulting address may wrap. The new address will wrap in a manner that depends on the address space. For a generic address space this will wrap at the extents of the address space. For a segmented address space it will wrap at the extents of the segment.- Specified by:
addWrapin interfaceAddressSpace- Parameters:
addr- the original address.displacement- the displacement to add.- Returns:
- the new address created by adding displacement to addr.offset.
-
addWrapSpace
public Address addWrapSpace(Address addr, long displacement)
Description copied from interface:AddressSpaceCreates a new address by adding the displacement to the given address. If the offset is greater than the max offset of the address space, the high order bits are masked off, making the address wrap. For non-segmented addresses this will be the same as addWrap(). For segmented addresses, the address will wrap when the 20 bit (oxfffff) offset is exceeded, as opposed to when the segment offset is exceeded.- Specified by:
addWrapSpacein interfaceAddressSpace- Parameters:
addr- the address to add the displacement to.displacement- the displacement to add.- Returns:
- The new Address formed by adding the displacement to the specified addresst.
-
addNoWrap
public Address addNoWrap(Address addr, long displacement) throws AddressOverflowException
Description copied from interface:AddressSpaceCreates a new address by adding displacement to the given address. The new address will NOT wrap!- Specified by:
addNoWrapin interfaceAddressSpace- Parameters:
addr- the original address.displacement- the displacement to add.- Returns:
- The new address created by adding displacement to addr.offset.
- Throws:
AddressOverflowException- if the addition would cause a wrap,
-
addNoWrap
public Address addNoWrap(GenericAddress addr, java.math.BigInteger displacement) throws AddressOverflowException
Description copied from interface:AddressSpaceCreates a new address by adding displacement to the given address. The new address will NOT wrap!- Specified by:
addNoWrapin interfaceAddressSpace- Parameters:
addr- the original address.displacement- the displacement to add.- Returns:
- The new address created by adding displacement to addr.offset.
- Throws:
AddressOverflowException- if the addition would cause a wrap,
-
isValidRange
public boolean isValidRange(long byteOffset, long length)Description copied from interface:AddressSpaceCheck the specified address range for validity within this space. Segmented spaces will restrict a range to a single segment.- Specified by:
isValidRangein interfaceAddressSpace- Returns:
- true if range is valid for this space
-
isSuccessor
public boolean isSuccessor(Address addr1, Address addr2)
Description copied from interface:AddressSpaceTests whether addr2 immediately follows addr1.- Specified by:
isSuccessorin interfaceAddressSpace- Parameters:
addr1- the first address.addr2- the second address.
-
getMaxAddress
public Address getMaxAddress()
Description copied from interface:AddressSpaceGet the max address allowed for this AddressSpace.- Specified by:
getMaxAddressin interfaceAddressSpace
-
getMinAddress
public Address getMinAddress()
Description copied from interface:AddressSpaceGet the min address allowed for this AddressSpace- Specified by:
getMinAddressin interfaceAddressSpace
-
compareTo
public int compareTo(AddressSpace space)
- Specified by:
compareToin interfacejava.lang.Comparable<AddressSpace>
-
equals
public boolean equals(java.lang.Object obj)
- Overrides:
equalsin classjava.lang.Object
-
hashCode
public int hashCode()
- Overrides:
hashCodein classjava.lang.Object
-
getSpaceID
public int getSpaceID()
Description copied from interface:AddressSpaceGet the ID for this space- Specified by:
getSpaceIDin interfaceAddressSpace- Returns:
- space ID
-
testAddressSpace
protected void testAddressSpace(Address addr)
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
showSpaceName
public boolean showSpaceName()
Description copied from interface:AddressSpaceReturns true if the address should display its addressSpace name.- Specified by:
showSpaceNamein interfaceAddressSpace
-
getOverlayAddress
public Address getOverlayAddress(Address addr)
No overlay translation necessary, this is a base addressSpace. (non-Javadoc)- Specified by:
getOverlayAddressin interfaceAddressSpace- Parameters:
addr- address possibly falling within this overlay space.- Returns:
- an address relative to this overlay
- See Also:
AddressSpace.getOverlayAddress(ghidra.program.model.address.Address)
-
makeValidOffset
public long makeValidOffset(long offset) throws AddressOutOfBoundsExceptionDescription copied from interface:AddressSpaceTests if the offset if valid. If the space is signed, then it sign extends the offset.- Specified by:
makeValidOffsetin interfaceAddressSpace- Parameters:
offset- the offset to test and/or sign extend- Returns:
- the valid positive offset or appropriate sign extended offset.
- Throws:
AddressOutOfBoundsException- if offset is invalid
-
truncateOffset
public long truncateOffset(long offset)
Description copied from interface:AddressSpaceTruncate the specified byte offset within this space to produce a valid offset.- Specified by:
truncateOffsetin interfaceAddressSpace- Parameters:
offset- any byte offset- Returns:
- truncated byte offset
-
truncateAddressableWordOffset
public long truncateAddressableWordOffset(long wordOffset)
Description copied from interface:AddressSpaceTruncate the specified addressable unit/word offset within this space to produce a valid offset.- Specified by:
truncateAddressableWordOffsetin interfaceAddressSpace- Parameters:
wordOffset- any addressable unit/word offset- Returns:
- truncated word offset
-
isMemorySpace
public boolean isMemorySpace()
Description copied from interface:AddressSpaceReturns true if this space represents a memory address. NOTE: It is important to make the distinction between Loaded and Non-Loaded memory addresses. Program importers may create memory blocks associated with Non-Loaded file content which are not associated with processor defined memory regions. While Loaded file content is placed into memory blocks which are associated with specific memory address spaces defined by the processor language specification.- Specified by:
isMemorySpacein interfaceAddressSpace- See Also:
AddressSpace.isLoadedMemorySpace(),AddressSpace.isNonLoadedMemorySpace()
-
isLoadedMemorySpace
public boolean isLoadedMemorySpace()
Description copied from interface:AddressSpaceReturns true if this space represents represents a Loaded Memory region (e.g., processor RAM).- Specified by:
isLoadedMemorySpacein interfaceAddressSpace
-
isNonLoadedMemorySpace
public boolean isNonLoadedMemorySpace()
Description copied from interface:AddressSpaceReturns true if this space represents represents a Non-Loaded storage region for retaining non-loaded file data (e.g., OTHER)- Specified by:
isNonLoadedMemorySpacein interfaceAddressSpace
-
isHashSpace
public boolean isHashSpace()
Description copied from interface:AddressSpaceReturns true if this space represents a location in the HASH space.- Specified by:
isHashSpacein interfaceAddressSpace
-
isRegisterSpace
public boolean isRegisterSpace()
Description copied from interface:AddressSpaceReturns true if this space represents a register location- Specified by:
isRegisterSpacein interfaceAddressSpace
-
isStackSpace
public boolean isStackSpace()
Description copied from interface:AddressSpaceReturns true if this space represents a stack location- Specified by:
isStackSpacein interfaceAddressSpace
-
isUniqueSpace
public boolean isUniqueSpace()
Description copied from interface:AddressSpaceReturns true if this space in the unique space- Specified by:
isUniqueSpacein interfaceAddressSpace
-
isConstantSpace
public boolean isConstantSpace()
Description copied from interface:AddressSpaceReturns true if this space in the constant space- Specified by:
isConstantSpacein interfaceAddressSpace
-
isVariableSpace
public boolean isVariableSpace()
Description copied from interface:AddressSpaceReturns true if this space represents a variable location- Specified by:
isVariableSpacein interfaceAddressSpace
-
isExternalSpace
public boolean isExternalSpace()
Description copied from interface:AddressSpaceReturns true if this space in the EXTERNAL_SPACE- Specified by:
isExternalSpacein interfaceAddressSpace
-
isOverlaySpace
public boolean isOverlaySpace()
Description copied from interface:AddressSpaceReturns true if this addressSpace is an OverlayAddressSpace- Specified by:
isOverlaySpacein interfaceAddressSpace
-
setShowSpaceName
public void setShowSpaceName(boolean b)
-
hasMappedRegisters
public boolean hasMappedRegisters()
Description copied from interface:AddressSpaceReturns true if this space has registers that are mapped into it. This means that registers could actually have pointers to them.- Specified by:
hasMappedRegistersin interfaceAddressSpace- Returns:
- true if this space has any registers mapped in it.
-
setHasMappedRegisters
public void setHasMappedRegisters(boolean hasRegisters)
Tag this memory space as having memory mapped registers- Parameters:
hasRegisters- true if it has registers, false otherwise
-
-