Package ghidra.app.util
Class PseudoData
java.lang.Object
ghidra.app.util.PseudoData
- All Implemented Interfaces:
Settings,CodeUnit,Data,MemBuffer,PropertySet
"Fake" data generated by the PseudoDisassembler.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected Addressprotected DataTypeprotected byte[]protected Map<CommentType, String> protected ProgramDataTypeManagerprotected DataTypeprotected static final Address[]protected static final Reference[]protected intprotected booleanprotected intprotected intprotected Addressprotected static final intprotected Programprotected ReferenceManagerFields inherited from interface ghidra.program.model.listing.CodeUnit
COMMENT_PROPERTY, DEFINED_DATA_PROPERTY, EOL_COMMENT, INSTRUCTION_PROPERTY, MNEMONIC, PLATE_COMMENT, POST_COMMENT, PRE_COMMENT, REPEATABLE_COMMENT, SPACE_PROPERTYFields inherited from interface ghidra.docking.settings.Settings
EMPTY_STRING_ARRAY -
Constructor Summary
ConstructorsConstructorDescriptionPseudoData(Address address, DataType dataType, MemBuffer memBuffer) PseudoData(Program program, Address address, DataType dataType, MemBuffer memBuffer) -
Method Summary
Modifier and TypeMethodDescriptionvoidaddMnemonicReference(Address refAddr, RefType refType, SourceType sourceType) Add a reference to the mnemonic for this code unit.voidaddOperandReference(int opIndex, Address refAddr, RefType type, SourceType sourceType) Add a user defined reference to the operand at the given index.voidaddValueReference(Address refAddr, RefType type) Add a memory reference to the value.voidRemoves all name-value pairs from this settings objectvoidclearSetting(String name) Removes any value associated with the given nameintCompares the given address to the address range of this node.protected static intcomputeLength(DataType dataType, Address address) booleanDetermines if this code unit contains the indicated address.booleanGet the Address which corresponds to the offset 0.getAddress(int opIndex) Get the Address for the given operand index if one exists.getAddressString(boolean showBlockName, boolean pad) Get the string representation of the starting address for this code unit.If the dataType is a typeDef, then the typeDef's base type is returned, otherwise, the datatType is returned.protected static DataTypegetBaseDataType(DataType dataType) getBigInteger(int offset, int size, boolean signed) returns the value at the given offset, taking into account the endianness.bytegetByte(int offset) Get one byte from memory at the current position plus offset.byte[]getBytes()Gets the bytes for this code unit.intgetBytes(byte[] b, int offset) Readsb.lengthbytes from this memory buffer starting at the address of this memory buffer plus the given memoryBufferOffset from that position.voidgetBytesInCodeUnit(byte[] buffer, int bufferOffset) Copies max(buffer.length, code unit length) bytes into buffer starting at location offset in buffer.getComment(CommentType commentType) Get the comment for the given typeString[]getCommentAsArray(CommentType commentType) Get the comment as an array where each element is a single line for the given type.getComponent(int index) Returns the immediate n'th component or null if none exists.getComponent(int[] componentPath) Get a data item given the index path.getComponentAt(int offset) Deprecated.getComponentContaining(int offset) Return the first immediate child component that contains the byte at the given offset.intGet the index of this component in its parentintGet this data's component level in its hierarchy of components.int[]Get the component path if this is a component.Returns the component path name (dot notation) for this fieldgetComponentsContaining(int offset) Returns a list of all the immediate child components that contain the byte at the given offset.Get the Data type for the data.Returns the appropriate string to use as the default label prefix or null if it has no preferred default label prefix;Returns the underlying default settings for these settings or null if there are noneReturns a string that represents the data value without markup.getExternalReference(int opIndex) Gets the external reference (if any) at the opIndexGet the field name of this data item if it is "inside" another data item, otherwise return null.intgetInt(int offset) returns the int at the given offset, taking into account the endianness.intgetIntProperty(String name) Get the int property for name.getLabel()Deprecated.final intGet the length of the code unit.longgetLong(int offset) returns the long at the given offset, taking into account the endianness.Gets the Long value associated with the given nameGet the ending address for this code unit.Get the Memory object actually used by the MemBuffer.Get the starting address for this code unit.Get references for the mnemonic for this instruction.Returns the mnemonic for this code unit, e.g., MOV, JMP.String[]getNames()Get this list of keys that currently have values associated with themReturns the code unit after this code unit..intReturn the number of components that make up this data item.intReturns the number of operands for this code unit..getObjectProperty(String name) Get the object property for name; returns null if there is no name property for this code unit.getOperandReferences(int opIndex) Get the references for the operand index.Get the immediate parent data item of this data item or null if this data item is not contained in another data item.intGet the offset of this Data item from the start of its immediate parent.Returns the full path name (dot notation) for this field.Returns the code unit before this code unit..getPrimaryReference(int index) Returns the primary reference for the operand index..Get the primary Symbol for this code unit.getPrimitiveAt(int offset) Returns the primitive component containing this offset (i.e., one that does not have sub-components).Returns the program that generated this CodeUnit..Returns an iterator over all references TO this code unit..Get ALL reference FROM this code unit.getRoot()Get the highest level Data item in a hierarchy of structures containing this component.intGet the offset of this Data item from the start of the root data item of some hierarchy of structures.getScalar(int opIndex) Returns the scalar at the given operand index.shortgetShort(int offset) returns the short at the given offset, taking into account the endianness.getStackReference(int opIndex) Gets the String value associated with the given namegetStringProperty(String name) Get the string property for name; returns null if there is no name property for this code unit.Symbol[]Get the symbols for this code unit.getValue()Returns the value of the data item.Gets the object associated with the given nameClass<?> Get the class used to express the value of this data.Get the references for the value.booleangetVoidProperty(String name) Returns whether this code unit is marked as having the name property.inthashCode()booleanhasProperty(String name) Returns true if the codeunit has the given property defined.booleanReturns true if this data corresponds to string data.voidInvalidate memory bufferbooleanisArray()Returns true if this data item is an Array of DataTypesbooleanReturns true if the underlying bytes are in big-endian order, false if they are little endian.booleanisChangeAllowed(SettingsDefinition settingsDefinition) Determine if a settings change corresponding to the specified settingsDefinition is permitted.booleanDetermine if this data has explicitly been marked as constant.booleanReturns true if the data type is defined.booleanReturns true if this data item is a dynamic DataType.booleanisEmpty()Returns true if there are no key-value pairs stored in this settings object.booleanReturns true if this is a pointer, which implies getValue() will return an Object that is an Address.booleanReturns true if this data item is a Structure.booleanisUnion()Returns true if this data item is a Union.booleanisValid()booleanDetermine if this data has explicitly been marked as volatile.booleanDetermine if this data has explicitly been marked as writable.Get an iterator over the property names which have values applied.protected voidvoidremoveExternalReference(int opIndex) Remove external reference (if any) at the given opIndexvoidremoveMnemonicReference(Address refAddr) Remove a reference to the mnemonic for this instruction.voidremoveOperandReference(int opIndex, Address refAddr) Remove a user defined reference to the operand at opIndex.voidremoveProperty(String name) Remove the property value with the given name for this code unit.voidremoveStackReference(int opIndex) voidremoveValueReference(Address refAddr) Remove a reference to the value.voidsetComment(CommentType commentType, String comment) Set the comment for the given type.voidsetCommentAsArray(CommentType commentType, String[] comment) Set the comment for the given type.voidvoidAssociates the given long value with the name.voidsetMemoryReference(int opIndex, Address refAddr, RefType refType) voidSets a memory reference to be the primary reference at its address/opIndex location.voidsetProperty(String name) Mark the property name as having a value for this code unit.voidsetProperty(String name, int value) Set the property name with the given value for this code unit.voidsetProperty(String name, Saveable value) Set the property name with the given value for this code unit.voidsetProperty(String name, String value) Set the property name with the given value for this code unit.voidsetRegisterReference(int opIndex, Register reg, SourceType sourceType, RefType refType) Sets a register reference at theoffseton the specified operand index, which effectively substitutes the previous operation interpretation
NOTE: If another reference was previously set on the operand, then it will be replaced with this register referencevoidsetStackReference(int opIndex, int offset, SourceType sourceType, RefType refType) Sets a stack reference at theoffseton the specified operand index, which effectively substitutes the previous operation interpretation
NOTE: If another reference was previously set on the operand, then it will be replaced with this stack referencevoidAssociates the given String value with the name.voidAssociates the given object with the name.toString()Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface ghidra.program.model.listing.CodeUnit
addMnemonicReference, addOperandReference, compareTo, contains, getAddressString, getBytes, getBytesInCodeUnit, getComment, getComment, getCommentAsArray, getCommentAsArray, getExternalReference, getLabel, getLength, getMaxAddress, getMinAddress, getMnemonicReferences, getOperandReferences, getPrimaryReference, getPrimarySymbol, getProgram, getReferenceIteratorTo, getReferencesFrom, getSymbols, removeExternalReference, removeMnemonicReference, removeOperandReference, setComment, setComment, setCommentAsArray, setCommentAsArray, setPrimaryMemoryReference, setRegisterReference, setStackReferenceMethods inherited from interface ghidra.program.model.mem.MemBuffer
getAddress, getBigInteger, getByte, getBytes, getInputStream, getInputStream, getInt, getLong, getMemory, getShort, getUnsignedByte, getUnsignedInt, getUnsignedShort, getVarLengthInt, getVarLengthUnsignedInt, isBigEndian, isInitializedMemoryMethods inherited from interface ghidra.program.model.util.PropertySet
getIntProperty, getObjectProperty, getStringProperty, getVoidProperty, hasProperty, propertyNames, removeProperty, setProperty, setProperty, setProperty, setPropertyMethods inherited from interface ghidra.docking.settings.Settings
getSuggestedValues
-
Field Details
-
dataType
-
baseDataType
-
OP_INDEX
protected static final int OP_INDEX- See Also:
-
level
protected int level -
dataMgr
-
address
-
maxAddress
-
program
-
length
protected int length -
emptyAddrArray
-
hash
protected int hash -
bytes
protected byte[] bytes -
isBigEndian
protected boolean isBigEndian -
emptyMemRefs
-
comments
-
refMgr
-
-
Constructor Details
-
PseudoData
public PseudoData(Program program, Address address, DataType dataType, MemBuffer memBuffer) throws AddressOverflowException - Throws:
AddressOverflowException
-
PseudoData
public PseudoData(Address address, DataType dataType, MemBuffer memBuffer) throws AddressOverflowException - Throws:
AddressOverflowException
-
-
Method Details
-
getBaseDataType
-
computeLength
-
addValueReference
Description copied from interface:DataAdd a memory reference to the value.- Specified by:
addValueReferencein interfaceData- Parameters:
refAddr- address referenced.type- the type of reference to be added.
-
removeValueReference
Description copied from interface:DataRemove a reference to the value.- Specified by:
removeValueReferencein interfaceData- Parameters:
refAddr- address of reference to be removed.
-
getComponent
Description copied from interface:DataReturns the immediate n'th component or null if none exists.- Specified by:
getComponentin interfaceData- Parameters:
index- the index of the component to get.- Returns:
- the component
-
getAddress
Description copied from interface:CodeUnitGet the Address for the given operand index if one exists. Data objects have one operand (the value).- Specified by:
getAddressin interfaceCodeUnit- Parameters:
opIndex- index of the operand.- Returns:
- An addres if the operand represents a fully qualified address (given the context), or if the operand is a Scalar treated as an address. Null is returned if no address or scalar exists on that operand.
-
getByteCodeString
-
toString
-
getDefaultValueRepresentation
Description copied from interface:DataReturns a string that represents the data value without markup.- Specified by:
getDefaultValueRepresentationin interfaceData- Returns:
- the string
-
getMnemonicString
Description copied from interface:CodeUnitReturns the mnemonic for this code unit, e.g., MOV, JMP.- Specified by:
getMnemonicStringin interfaceCodeUnit- Returns:
- the mnemonic for this code unit, e.g., MOV, JMP
-
getNumOperands
public int getNumOperands()Description copied from interface:CodeUnitReturns the number of operands for this code unit..- Specified by:
getNumOperandsin interfaceCodeUnit- Returns:
- the number of operands for this code unit.
-
getScalar
Description copied from interface:CodeUnitReturns the scalar at the given operand index. Data objects have one operand (the value). -
getBaseDataType
Description copied from interface:DataIf the dataType is a typeDef, then the typeDef's base type is returned, otherwise, the datatType is returned.- Specified by:
getBaseDataTypein interfaceData- Returns:
- the data type
-
clearSetting
Description copied from interface:SettingsRemoves any value associated with the given name- Specified by:
clearSettingin interfaceSettings- Parameters:
name- the key to remove any association
-
getLong
Description copied from interface:SettingsGets the Long value associated with the given name -
isChangeAllowed
Description copied from interface:SettingsDetermine if a settings change corresponding to the specified settingsDefinition is permitted.- Specified by:
isChangeAllowedin interfaceSettings- Parameters:
settingsDefinition- settings definition- Returns:
- true if change permitted else false
-
getNames
Description copied from interface:SettingsGet this list of keys that currently have values associated with them -
getString
Description copied from interface:SettingsGets the String value associated with the given name -
getValue
Description copied from interface:SettingsGets the object associated with the given name -
setLong
Description copied from interface:SettingsAssociates the given long value with the name. Note that an attempted setting change may be ignored if prohibited (e.g., immutable Settings, undefined setting name). -
setString
Description copied from interface:SettingsAssociates the given String value with the name. Note that an attempted setting change may be ignored if prohibited (e.g., immutable Settings, undefined setting name). -
setValue
Description copied from interface:SettingsAssociates the given object with the name. Note that an attempted setting change may be ignored if prohibited (e.g., immutable Settings, undefined setting name). -
getComponent
Description copied from interface:DataGet a data item given the index path. Each integer in the array represents an index into the data item at that level.- Specified by:
getComponentin interfaceData- Parameters:
componentPath- the array of indexes to use to find the requested data item.- Returns:
- the component
-
getComponentAt
Deprecated.Description copied from interface:DataReturn the first immediate child component that contains the byte at the given offset. It is important to note that with certain datatypes there may be more than one component containing the specified offset (seeData.getComponentsContaining(int)).- Specified by:
getComponentAtin interfaceData- Parameters:
offset- the amount to add to this data items address to get the address of the requested data item.- Returns:
- first data component containing offset or null
-
getComponentContaining
Description copied from interface:DataReturn the first immediate child component that contains the byte at the given offset. It is important to note that with certain datatypes there may be more than one component containing the specified offset (seeData.getComponentsContaining(int)).- Specified by:
getComponentContainingin interfaceData- Parameters:
offset- the amount to add to this data items address to get the- Returns:
- first data component containing offset or null address of the requested data item.
-
getComponentsContaining
Description copied from interface:DataReturns a list of all the immediate child components that contain the byte at the given offset.For a union, this will return all the components (if the offset is 0). The presence of bit-fields or zero-length components may cause multiple components to be returned.
- Specified by:
getComponentsContainingin interfaceData- Parameters:
offset- the amount to add to this data items address to get the address of the requested data item.- Returns:
- a list of all the immediate child components that contain the byte at the given offset or null if offset is out of bounds.
-
getComponentIndex
public int getComponentIndex()Description copied from interface:DataGet the index of this component in its parent- Specified by:
getComponentIndexin interfaceData- Returns:
- -1 if this data item is not a component of another data item.
-
getComponentLevel
public int getComponentLevel()Description copied from interface:DataGet this data's component level in its hierarchy of components.- Specified by:
getComponentLevelin interfaceData- Returns:
- the level of this data item with 0 being the level of top data items.
-
getComponentPath
public int[] getComponentPath()Description copied from interface:DataGet the component path if this is a component. The component path is an array of integers that represent each index in the tree of data items. Top level data items have an empty array for their component path.- Specified by:
getComponentPathin interfaceData- Returns:
- the path
-
getComponentPathName
Description copied from interface:DataReturns the component path name (dot notation) for this field- Specified by:
getComponentPathNamein interfaceData- Returns:
- the component path name
-
getDataType
Description copied from interface:DataGet the Data type for the data.- Specified by:
getDataTypein interfaceData- Returns:
- the data type
-
getFieldName
Description copied from interface:DataGet the field name of this data item if it is "inside" another data item, otherwise return null.- Specified by:
getFieldNamein interfaceData- Returns:
- the name of this data as known from some parent data item or null if this data item is not a component of another data item.
-
getNumComponents
public int getNumComponents()Description copied from interface:DataReturn the number of components that make up this data item. if this is an Array, return the number of elements in the array.- Specified by:
getNumComponentsin interfaceData- Returns:
- the number of components
-
getParent
Description copied from interface:DataGet the immediate parent data item of this data item or null if this data item is not contained in another data item. -
getParentOffset
public int getParentOffset()Description copied from interface:DataGet the offset of this Data item from the start of its immediate parent.- Specified by:
getParentOffsetin interfaceData- Returns:
- the offset
-
getPathName
Description copied from interface:DataReturns the full path name (dot notation) for this field. This includes the symbol name at this address.- Specified by:
getPathNamein interfaceData- Returns:
- the path name
-
getPrimitiveAt
Description copied from interface:DataReturns the primitive component containing this offset (i.e., one that does not have sub-components). This is useful for data items which are made up of multiple layers of other data items. This method immediately goes to the lowest level data item. If the minimum offset of a component is specified, the only first component containing the offset will be considered (e.g., 0-element array).- Specified by:
getPrimitiveAtin interfaceData- Parameters:
offset- the offset- Returns:
- primitive component containing this offset
-
getRoot
Description copied from interface:DataGet the highest level Data item in a hierarchy of structures containing this component. -
getRootOffset
public int getRootOffset()Description copied from interface:DataGet the offset of this Data item from the start of the root data item of some hierarchy of structures.- Specified by:
getRootOffsetin interfaceData- Returns:
- the offset
-
getValue
Description copied from interface:DataReturns the value of the data item. The value may be an address, a scalar, register or null if no value. -
getValueClass
Description copied from interface:DataGet the class used to express the value of this data.NOTE: This determination is made based upon data type and settings only and does not examine memory bytes which are used to construct the data value object.
- Specified by:
getValueClassin interfaceData- Returns:
- value class or null if a consistent class is not utilized.
-
hasStringValue
public boolean hasStringValue()Description copied from interface:DataReturns true if this data corresponds to string data. This is determined by the corresponding data type producing a String value.- Specified by:
hasStringValuein interfaceData- Returns:
- true if this data returns a String value and can be treated as string data.
-
getValueReferences
Description copied from interface:DataGet the references for the value.- Specified by:
getValueReferencesin interfaceData- Returns:
- the references
-
isArray
public boolean isArray()Description copied from interface:DataReturns true if this data item is an Array of DataTypes -
isDefined
public boolean isDefined()Description copied from interface:DataReturns true if the data type is defined. Any address that has not been defined to be code or data is treated as undefined data. -
isPointer
public boolean isPointer()Description copied from interface:DataReturns true if this is a pointer, which implies getValue() will return an Object that is an Address. -
isStructure
public boolean isStructure()Description copied from interface:DataReturns true if this data item is a Structure.- Specified by:
isStructurein interfaceData- Returns:
- true if a structure
-
isDynamic
public boolean isDynamic()Description copied from interface:DataReturns true if this data item is a dynamic DataType. -
isUnion
public boolean isUnion()Description copied from interface:DataReturns true if this data item is a Union. -
clearAllSettings
public void clearAllSettings()Description copied from interface:SettingsRemoves all name-value pairs from this settings object- Specified by:
clearAllSettingsin interfaceSettings
-
isEmpty
public boolean isEmpty()Description copied from interface:SettingsReturns true if there are no key-value pairs stored in this settings object. This is not a reflection of the underlying default settings which may still contain a key-value pair when this settings object is empty. -
getDefaultLabelPrefix
Description copied from interface:DataReturns the appropriate string to use as the default label prefix or null if it has no preferred default label prefix;- Specified by:
getDefaultLabelPrefixin interfaceData- Parameters:
options- the options- Returns:
- the prefix
-
equals
-
isConstant
public boolean isConstant()Description copied from interface:DataDetermine if this data has explicitly been marked as constant. NOTE: This is based upon explicitDataandDataTypemutability settings and does not reflect independent memory block or processor specification settings.- Specified by:
isConstantin interfaceData- Returns:
- true if data is constant, else false.
-
isWritable
public boolean isWritable()Description copied from interface:DataDetermine if this data has explicitly been marked as writable. NOTE: This is based upon explicitDataandDataTypemutability settings and does not reflect independent memory block or processor specification settings.- Specified by:
isWritablein interfaceData- Returns:
- true if data is writable, else false.
-
isVolatile
public boolean isVolatile()Description copied from interface:DataDetermine if this data has explicitly been marked as volatile. NOTE: This is based upon explicitDataandDataTypemutability settings and does not reflect independent memory block or processor specification settings.- Specified by:
isVolatilein interfaceData- Returns:
- true if data is volatile, else false.
-
getDefaultSettings
Description copied from interface:SettingsReturns the underlying default settings for these settings or null if there are none- Specified by:
getDefaultSettingsin interfaceSettings- Returns:
- underlying default settings or null
-
invalidate
public void invalidate()Invalidate memory buffer -
isValid
public boolean isValid() -
getAddressString
Description copied from interface:CodeUnitGet the string representation of the starting address for this code unit.- Specified by:
getAddressStringin interfaceCodeUnit- Parameters:
showBlockName- true if the string should include the memory block namepad- if true, the address will be padded with leading zeros. Even if pad is false, the string will be padded to make the address string contain at least 4 digits.- Returns:
- string representation of address
-
getLength
public final int getLength()Get the length of the code unit. -
refreshIfNeeded
protected void refreshIfNeeded() -
getBytes
Gets the bytes for this code unit.- Specified by:
getBytesin interfaceCodeUnit- Returns:
- an array of bytes that are in memory at the codeunits address. The array length is the same as the codeUnits length
- Throws:
MemoryAccessException- if the full number of bytes could not be read.
-
getBytes
public int getBytes(byte[] b, int offset) Description copied from interface:MemBufferReadsb.lengthbytes from this memory buffer starting at the address of this memory buffer plus the given memoryBufferOffset from that position. The actual number of bytes may be fewer if bytes can't be read.- Specified by:
getBytesin interfaceMemBuffer- Parameters:
b- the buffer into which bytes will be placedoffset- the offset in this memory buffer from which to start reading bytes.- Returns:
- the number of bytes read which may be fewer than b.length if available bytes are exhausted or no bytes are available at the specified offset.
-
getBytesInCodeUnit
Description copied from interface:CodeUnitCopies max(buffer.length, code unit length) bytes into buffer starting at location offset in buffer.- Specified by:
getBytesInCodeUnitin interfaceCodeUnit- Parameters:
buffer- byte array to copy intobufferOffset- offset in byte array the copy will start- Throws:
MemoryAccessException- if the full number of bytes could not be read.
-
isBigEndian
public boolean isBigEndian()Description copied from interface:MemBufferReturns true if the underlying bytes are in big-endian order, false if they are little endian.- Specified by:
isBigEndianin interfaceMemBuffer- Returns:
- true if the underlying bytes are in big-endian order, false if they are little endian.
-
getShort
Description copied from interface:MemBufferreturns the short at the given offset, taking into account the endianness.- Specified by:
getShortin interfaceMemBuffer- Parameters:
offset- the offset from the membuffers origin (the address that it is set at)- Returns:
- the short at the given offset, taking into account the endianness.
- Throws:
MemoryAccessException- if a 2-byte short value cannot be read at the specified offset
-
getInt
Description copied from interface:MemBufferreturns the int at the given offset, taking into account the endianness.- Specified by:
getIntin interfaceMemBuffer- Parameters:
offset- the offset from the membuffers origin (the address that it is set at)- Returns:
- the int at the given offset, taking into account the endianness.
- Throws:
MemoryAccessException- if a 4-byte integer value cannot be read at the specified offset
-
getLong
Description copied from interface:MemBufferreturns the long at the given offset, taking into account the endianness.- Specified by:
getLongin interfaceMemBuffer- Parameters:
offset- the offset from the membuffers origin (the address that it is set at)- Returns:
- the long at the given offset, taking into account the endianness.
- Throws:
MemoryAccessException- if a 8-byte long value cannot be read at the specified offset
-
getBigInteger
Description copied from interface:MemBufferreturns the value at the given offset, taking into account the endianness.- Specified by:
getBigIntegerin interfaceMemBuffer- Parameters:
offset- the offset from the membuffers origin (the address that it is set at)size- the number of bytes to include in the valuesigned- true if value should be treated as a signed twos-compliment value.- Returns:
- the value at the given offset, taking into account the endianness.
- Throws:
MemoryAccessException- if the request size value cannot be read at the specified offset
-
setProperty
Set the property name with the given value for this code unit.- Specified by:
setPropertyin interfacePropertySet- Parameters:
name- the name of the property to save.value- the value of the property to save.- Throws:
TypeMismatchException- if the property manager for name does not support object typesConcurrentModificationException- if this object is no longer valid.
-
setProperty
Set the property name with the given value for this code unit.- Specified by:
setPropertyin interfacePropertySet- Parameters:
name- the name of the property to save.value- the value of the property to save.- Throws:
TypeMismatchException- if the property manager for name does not support string typesConcurrentModificationException- if this object is no longer valid.
-
setProperty
Set the property name with the given value for this code unit.- Specified by:
setPropertyin interfacePropertySet- Parameters:
name- the name of the property to save.value- the value of the property to save.- Throws:
TypeMismatchException- if the property manager for name does not support int typesConcurrentModificationException- if this object is no longer valid.
-
setProperty
Mark the property name as having a value for this code unit.- Specified by:
setPropertyin interfacePropertySet- Parameters:
name- the name of the property to save.- Throws:
TypeMismatchException- if the property manager for name does not support void typesConcurrentModificationException- if this object is no longer valid.
-
getObjectProperty
Get the object property for name; returns null if there is no name property for this code unit.- Specified by:
getObjectPropertyin interfacePropertySet- Parameters:
name- the name of the property.- Returns:
Saveableproperty value, with map-specific implementation class, or null.- Throws:
TypeMismatchException- if the property manager for name does not support object typesConcurrentModificationException- if this object is no longer valid.
-
getStringProperty
Get the string property for name; returns null if there is no name property for this code unit.- Specified by:
getStringPropertyin interfacePropertySet- Parameters:
name- the name of the property.- Returns:
- string property value or null
- Throws:
TypeMismatchException- if the property manager for name does not support string typesConcurrentModificationException- if this object is no longer valid.
-
getIntProperty
Get the int property for name.- Specified by:
getIntPropertyin interfacePropertySet- Parameters:
name- the name of the property.- Returns:
- integer property value property has been set
- Throws:
NoValueException- if there is not name property for this code unitTypeMismatchException- if the property manager for name does not support int typesConcurrentModificationException- if this object is no longer valid.
-
hasProperty
Description copied from interface:PropertySetReturns true if the codeunit has the given property defined. This method works for all property map types.- Specified by:
hasPropertyin interfacePropertySet- Parameters:
name- the name of the property- Returns:
- true if property has been set, else false
-
getVoidProperty
Returns whether this code unit is marked as having the name property.- Specified by:
getVoidPropertyin interfacePropertySet- Parameters:
name- the name of the property.- Returns:
- true if property has been set, else false
- Throws:
TypeMismatchException- if the property manager for name does not support void typesConcurrentModificationException- if this object is no longer valid.
-
propertyNames
Description copied from interface:PropertySetGet an iterator over the property names which have values applied.- Specified by:
propertyNamesin interfacePropertySet- Returns:
- iterator of all property map names which have values applied
-
removeProperty
Remove the property value with the given name for this code unit.- Specified by:
removePropertyin interfacePropertySet- Parameters:
name- the name of the property.
-
getLabel
Deprecated.Get the label for this code unit.- Specified by:
getLabelin interfaceCodeUnit- Returns:
- the label for this code unit.
- Throws:
ConcurrentModificationException- if this object is no longer valid.
-
getSymbols
Get the symbols for this code unit.- Specified by:
getSymbolsin interfaceCodeUnit- Returns:
- the Symbols for this code unit.
- Throws:
ConcurrentModificationException- if this object is no longer valid.
-
getPrimarySymbol
Get the primary Symbol for this code unit.- Specified by:
getPrimarySymbolin interfaceCodeUnit- Returns:
- the Primary Symbol for this code unit.
- Throws:
ConcurrentModificationException- if this object is no longer valid.
-
getMinAddress
Get the starting address for this code unit.- Specified by:
getMinAddressin interfaceCodeUnit- Returns:
- the starting address for this code unit.
- Throws:
ConcurrentModificationException- if this object is no longer valid.
-
getMaxAddress
Get the ending address for this code unit.- Specified by:
getMaxAddressin interfaceCodeUnit- Returns:
- the ending address for this code unit.
- Throws:
ConcurrentModificationException- if this object is no longer valid.
-
getNextCodeUnit
Returns the code unit after this code unit..- Returns:
- the code unit after this code unit.
- Throws:
ConcurrentModificationException- if this object is no longer valid.
-
getPreviousCodeUnit
Returns the code unit before this code unit..- Returns:
- the code unit before this code unit.
- Throws:
ConcurrentModificationException- if this object is no longer valid.
-
getComment
Description copied from interface:CodeUnitGet the comment for the given type- Specified by:
getCommentin interfaceCodeUnit- Parameters:
commentType-comment type- Returns:
- the comment string of the appropriate type or null if no comment of that type exists for this code unit
-
getCommentAsArray
Get the comment as an array where each element is a single line for the given type.- Specified by:
getCommentAsArrayin interfaceCodeUnit- Parameters:
commentType- must be either EOL_COMMENT_TYPE, PRE_COMMENT_TYPE, POST_COMMENT_TYPE, or PLATE_COMMENT_TYPE- Returns:
- an array of strings where each item in the array is a line of text in the comment. If there is no comment of the requested type, an empty array is returned.
- Throws:
IllegalArgumentException- if type is not one of the three types of comments supportedConcurrentModificationException- if this object is no longer valid.
-
setCommentAsArray
Set the comment for the given type.- Specified by:
setCommentAsArrayin interfaceCodeUnit- Parameters:
commentType- must be either EOL_COMMENT, PRE_COMMENT, POST_COMMENT, or PLATE_COMMENTcomment- the lines that make up the comment- Throws:
IllegalArgumentException- if type is not one of the three types of comments supportedConcurrentModificationException- if this object is no longer valid.
-
setComment
Set the comment for the given type.- Specified by:
setCommentin interfaceCodeUnit- Parameters:
commentType- must be either EOL_COMMENT, PRE_COMMENT, POST_COMMENT, or PLATE_COMMENTcomment- the comment- Throws:
IllegalArgumentException- if type is not one of the three types of comments supportedConcurrentModificationException- if this object is no longer valid.
-
contains
Determines if this code unit contains the indicated address.- Specified by:
containsin interfaceCodeUnit- Parameters:
testAddr- the address to test- Returns:
- true if address is contained in the range.
- Throws:
ConcurrentModificationException- if this object is no longer valid.
-
compareTo
Compares the given address to the address range of this node.- Specified by:
compareToin interfaceCodeUnit- Parameters:
a- the address- Returns:
- a negative integer if addr is greater than the maximum range address zero if addr is in the range a positive integer if addr is less than minimum range address
- Throws:
ConcurrentModificationException- if this object is no longer valid.
-
getByte
Get one byte from memory at the current position plus offset.- Specified by:
getBytein interfaceMemBuffer- Parameters:
offset- the displacement from the current position.- Returns:
- the data at offset from the current position.
- Throws:
AddressOutOfBoundsException- if offset exceeds address spaceIndexOutOfBoundsException- if offset is negativeMemoryAccessException- if memory cannot be read
-
getAddress
Get the Address which corresponds to the offset 0.- Specified by:
getAddressin interfaceMemBuffer- Returns:
- the current address of offset 0.
-
getMemory
Get the Memory object actually used by the MemBuffer. return the Memory used by this MemBuffer. -
addMnemonicReference
Add a reference to the mnemonic for this code unit.- Specified by:
addMnemonicReferencein interfaceCodeUnit- Parameters:
refAddr- address of reference to addrefType- type of reference being addedsourceType- the source of this reference
-
getMnemonicReferences
Get references for the mnemonic for this instruction.- Specified by:
getMnemonicReferencesin interfaceCodeUnit- Returns:
- an array of memory references. A zero length array will be returned if there are no references for the mnemonic.
-
removeMnemonicReference
Remove a reference to the mnemonic for this instruction.- Specified by:
removeMnemonicReferencein interfaceCodeUnit- Parameters:
refAddr- the address to remove as a reference.
-
addOperandReference
Add a user defined reference to the operand at the given index.- Specified by:
addOperandReferencein interfaceCodeUnit- Parameters:
opIndex- operand indexrefAddr- reference addresstype- the reference type to be added.sourceType- the source of this reference- See Also:
-
getOperandReferences
Get the references for the operand index. If the operand type is a register, then the user defined references are returned; otherwise an array with the address for the operand value is returned.- Specified by:
getOperandReferencesin interfaceCodeUnit- Parameters:
opIndex- operand index (0 is the first operand)- Returns:
- the references for the operand index.
-
removeOperandReference
Remove a user defined reference to the operand at opIndex.- Specified by:
removeOperandReferencein interfaceCodeUnit- Parameters:
opIndex- operand indexrefAddr- address referencing the operand
-
getReferencesFrom
Get ALL reference FROM this code unit.- Specified by:
getReferencesFromin interfaceCodeUnit- Returns:
- an array of memory references from this codeUnit or an empty array if there are no references.
-
setExternalReference
-
setMemoryReference
-
setStackReference
Description copied from interface:CodeUnitSets a stack reference at theoffseton the specified operand index, which effectively substitutes the previous operation interpretation
NOTE: If another reference was previously set on the operand, then it will be replaced with this stack reference- Specified by:
setStackReferencein interfaceCodeUnit- Parameters:
opIndex- the index of the operand to set this stack referenceoffset- the (+/-) offset from stack base addresssourceType- the source of this referencerefType- type of reference, RefType.READ,WRITE,PTR...
-
setRegisterReference
Description copied from interface:CodeUnitSets a register reference at theoffseton the specified operand index, which effectively substitutes the previous operation interpretation
NOTE: If another reference was previously set on the operand, then it will be replaced with this register reference- Specified by:
setRegisterReferencein interfaceCodeUnit- Parameters:
opIndex- the index of the operand to set this register referencereg- a registersourceType- the source of this referencerefType- type of reference, RefType.READ,WRITE,PTR...
-
getPrimaryReference
Description copied from interface:CodeUnitReturns the primary reference for the operand index..- Specified by:
getPrimaryReferencein interfaceCodeUnit- Parameters:
index- operand index (0 is the first operand)- Returns:
- the primary reference for the operand index.
-
setPrimaryMemoryReference
Description copied from interface:CodeUnitSets a memory reference to be the primary reference at its address/opIndex location. The primary reference is the one that is used in the getOperandRepresentation() method.- Specified by:
setPrimaryMemoryReferencein interfaceCodeUnit- Parameters:
ref- the reference to be set as primary.
-
getStackReference
-
removeStackReference
public void removeStackReference(int opIndex) -
getExternalReference
Description copied from interface:CodeUnitGets the external reference (if any) at the opIndex- Specified by:
getExternalReferencein interfaceCodeUnit- Parameters:
opIndex- the operand index to look for external references- Returns:
- the external reference at the operand or null if none exists.
-
removeExternalReference
public void removeExternalReference(int opIndex) Description copied from interface:CodeUnitRemove external reference (if any) at the given opIndex- Specified by:
removeExternalReferencein interfaceCodeUnit- Parameters:
opIndex- the index of the operand from which to remove any external reference.
-
getReferenceIteratorTo
Description copied from interface:CodeUnitReturns an iterator over all references TO this code unit..- Specified by:
getReferenceIteratorToin interfaceCodeUnit- Returns:
- an iterator over all references TO this code unit.
-
getProgram
Description copied from interface:CodeUnitReturns the program that generated this CodeUnit..- Specified by:
getProgramin interfaceCodeUnit- Returns:
- the program that generated this CodeUnit.
-
hashCode
public int hashCode()
-