Package ghidra.program.model.address
Interface AddressFactory
- All Known Implementing Classes:
DefaultAddressFactory
,ProgramAddressFactory
public interface AddressFactory
-
Method Summary
Modifier and TypeMethodDescriptionboolean
getAddress
(int spaceID, long offset) Get an address using the addressSpace with the given id and having the given offset.getAddress
(String addrString) Create an address from String.Returns an addressSet containing all possible "real" addresses for this address factory.getAddressSet
(Address min, Address max) Computes an address set from a start and end address that may span address spaces.getAddressSpace
(int spaceID) Returns the space with the given spaceID or null if none existsgetAddressSpace
(String name) Returns the space with the given name or null if no space exists with that name.Get the array of all "physical" AddressSpaces.Address[]
getAllAddresses
(String addrString) Generates all reasonable addresses that can be interpreted from the given string.Address[]
getAllAddresses
(String addrString, boolean caseSensitive) Generates all reasonable addresses that can be interpreted from the given string.Returns an array of all address spaces, including analysis spaces.getConstantAddress
(long offset) Returns an address in "constant" space with the given offset.Returns the "constant" address space.Returns the default AddressSpacelong
Returns the index (old encoding) for the given address.int
Returns the number of physical AddressSpaces.getPhysicalSpace
(AddressSpace space) Gets the physical address space associated with the given address space.Returns an array of all the physical address spaces.Returns the "register" address space.Returns the "stack" address space.Returns the "unique" address space.boolean
Returns true if there is more than one memory address spacedefault boolean
Determine if this address factory contains a stale overlay address space whose name was recently changed.boolean
isValidAddress
(Address addr) Tests if the given address is valid for at least one of the Address Spaces in this factoryoldGetAddressFromLong
(long value) Returns the address using the old encoding format.
-
Method Details
-
getAddress
Create an address from String. Attempts to use the "default" address space first. Otherwise loops through each addressSpace, returning the first valid address that any addressSpace creates from the string. Returns an Address if the string is valid, otherwise null. -
getAllAddresses
Generates all reasonable addresses that can be interpreted from the given string. Each Address Space is given a change to parse the string and all the valid results are return in the array.- Parameters:
addrString
- the address string to parse.- Returns:
- Address[] The list of addresses generated from the string.
-
getAllAddresses
Generates all reasonable addresses that can be interpreted from the given string. Each Address Space is given a change to parse the string and all the valid results are return in the array.- Parameters:
addrString
- the address string to parse.caseSensitive
- determines if addressSpace names must be case sensitive to match.- Returns:
- Address[] The list of addresses generated from the string.
-
getDefaultAddressSpace
AddressSpace getDefaultAddressSpace()Returns the default AddressSpace -
getAddressSpaces
AddressSpace[] getAddressSpaces()Get the array of all "physical" AddressSpaces. -
getAllAddressSpaces
AddressSpace[] getAllAddressSpaces()Returns an array of all address spaces, including analysis spaces.- Returns:
- an array of all the address spaces.
-
getAddressSpace
Returns the space with the given name or null if no space exists with that name. -
getAddressSpace
Returns the space with the given spaceID or null if none exists -
getNumAddressSpaces
int getNumAddressSpaces()Returns the number of physical AddressSpaces. -
isValidAddress
Tests if the given address is valid for at least one of the Address Spaces in this factory- Parameters:
addr
- The address to test- Returns:
- boolean true if the address valid, false otherwise
-
equals
-
getIndex
Returns the index (old encoding) for the given address.- Parameters:
addr
- the address to encode.
-
getPhysicalSpace
Gets the physical address space associated with the given address space. If the given space is physical, then it will be returned.- Parameters:
space
- the addressSpace for which the physical space is requested.- Returns:
- the physical address space associated with the given address space.
-
getPhysicalSpaces
AddressSpace[] getPhysicalSpaces()Returns an array of all the physical address spaces.- Returns:
- an array of all the physical address spaces.
-
getAddress
Get an address using the addressSpace with the given id and having the given offset.- Parameters:
spaceID
- the id of the address space to use to create the new address.offset
- the offset of the new address to be created.- Returns:
- the new address.
-
getConstantSpace
AddressSpace getConstantSpace()Returns the "constant" address space. -
getUniqueSpace
AddressSpace getUniqueSpace()Returns the "unique" address space. -
getStackSpace
AddressSpace getStackSpace()Returns the "stack" address space. -
getRegisterSpace
AddressSpace getRegisterSpace()Returns the "register" address space. -
getConstantAddress
Returns an address in "constant" space with the given offset.- Parameters:
offset
- the offset in "constant" space for the new address.- Returns:
- a new address in the "constant" space with the given offset.
-
getAddressSet
Computes an address set from a start and end address that may span address spaces. Although in general, it is not meaningful to compare addresses from multiple spaces, but since there is an absolute ordering of address spaces it can be useful for iterating over all addresses in a program with multiple address spaces.- Parameters:
min
- the start addressmax
- the end address.- Returns:
- an addressSet containing ranges that don't span address spaces.
-
getAddressSet
AddressSet getAddressSet()Returns an addressSet containing all possible "real" addresses for this address factory. -
oldGetAddressFromLong
Returns the address using the old encoding format.- Parameters:
value
- to decode into an address.
-
hasMultipleMemorySpaces
boolean hasMultipleMemorySpaces()Returns true if there is more than one memory address space -
hasStaleOverlayCondition
default boolean hasStaleOverlayCondition()Determine if this address factory contains a stale overlay address space whose name was recently changed. When this condition occurs, issues may arise when comparingAddress
andAddressSpace
-related objects when overlay address spaces are involved. A common case for this is a Diff type operation.- Returns:
- true if this factory contains one or more stale overlay address space instances.
-