Package ghidra.pcode.exec
Class AbstractBytesPcodeExecutorStatePiece<S extends BytesPcodeExecutorStateSpace<?>>
java.lang.Object
ghidra.pcode.exec.AbstractLongOffsetPcodeExecutorStatePiece<byte[],byte[],S>
  
ghidra.pcode.exec.AbstractBytesPcodeExecutorStatePiece<S>
- Type Parameters:
- S- the type of an executor state space, internally associated with an address space
- All Implemented Interfaces:
- PcodeExecutorStatePiece<byte[],- byte[]> 
- Direct Known Subclasses:
- BytesPcodeExecutorStatePiece,- JitBytesPcodeExecutorStatePiece
public abstract class AbstractBytesPcodeExecutorStatePiece<S extends BytesPcodeExecutorStateSpace<?>>
extends AbstractLongOffsetPcodeExecutorStatePiece<byte[],byte[],S>  
An abstract p-code executor state piece for storing and retrieving bytes as arrays
- 
Nested Class SummaryNested ClassesModifier and TypeClassDescriptionprotected classA memory buffer bound to a given space in this stateNested classes/interfaces inherited from class ghidra.pcode.exec.AbstractLongOffsetPcodeExecutorStatePieceAbstractLongOffsetPcodeExecutorStatePiece.AbstractSpaceMap<S>, AbstractLongOffsetPcodeExecutorStatePiece.CacheingSpaceMap<B,S>, AbstractLongOffsetPcodeExecutorStatePiece.SimpleSpaceMap<S> Nested classes/interfaces inherited from interface ghidra.pcode.exec.PcodeExecutorStatePiecePcodeExecutorStatePiece.Reason
- 
Field SummaryFieldsModifier and TypeFieldDescriptionprotected final AbstractLongOffsetPcodeExecutorStatePiece.AbstractSpaceMap<S> Fields inherited from class ghidra.pcode.exec.AbstractLongOffsetPcodeExecutorStatePieceaddressArithmetic, arithmetic, language, uniqueSpace
- 
Constructor SummaryConstructorsModifierConstructorDescriptionAbstractBytesPcodeExecutorStatePiece(Language language) Construct a state for the given languageprotectedAbstractBytesPcodeExecutorStatePiece(Language language, AbstractLongOffsetPcodeExecutorStatePiece.AbstractSpaceMap<S> spaceMap) AbstractBytesPcodeExecutorStatePiece(Language language, PcodeArithmetic<byte[]> arithmetic) Construct a state for the given languageprotectedAbstractBytesPcodeExecutorStatePiece(Language language, PcodeArithmetic<byte[]> arithmetic, AbstractLongOffsetPcodeExecutorStatePiece.AbstractSpaceMap<S> spaceMap) 
- 
Method SummaryModifier and TypeMethodDescriptionvoidclear()Erase the entire state or piecegetConcreteBuffer(Address address, PcodeArithmetic.Purpose purpose) Bind a buffer of concrete bytes at the given start addressprotected SgetForSpace(AddressSpace space, boolean toWrite) Get the internal space for the given address spaceprotected byte[]getFromSpace(S space, long offset, int size, PcodeExecutorStatePiece.Reason reason) Get a value from the given spacegetRegisterValuesFromSpace(S s, List<Register> registers) Can the given space for register values, as inAbstractLongOffsetPcodeExecutorStatePiece.getRegisterValues()protected abstract AbstractLongOffsetPcodeExecutorStatePiece.AbstractSpaceMap<S> A factory method for this state's space map.protected voidsetInSpace(S space, long offset, int size, byte[] val) Set a value in the given spaceMethods inherited from class ghidra.pcode.exec.AbstractLongOffsetPcodeExecutorStatePiecegetAddressArithmetic, getArithmetic, getFromNullSpace, getLanguage, getRegisterValues, getUnique, getVar, getVar, setUnique, setVar, setVarMethods inherited from class java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface ghidra.pcode.exec.PcodeExecutorStatePiececheckRange, fork, getVar, getVar, getVar, quantizeOffset, setVar, setVar, setVar
- 
Field Details- 
spaceMapprotected final AbstractLongOffsetPcodeExecutorStatePiece.AbstractSpaceMap<S extends BytesPcodeExecutorStateSpace<?>> spaceMap
 
- 
- 
Constructor Details- 
AbstractBytesPcodeExecutorStatePieceConstruct a state for the given language- Parameters:
- language- the language, used for its memory model and arithmetic
 
- 
AbstractBytesPcodeExecutorStatePieceprotected AbstractBytesPcodeExecutorStatePiece(Language language, AbstractLongOffsetPcodeExecutorStatePiece.AbstractSpaceMap<S> spaceMap) 
- 
AbstractBytesPcodeExecutorStatePieceConstruct a state for the given language- Parameters:
- language- the language, used for its memory model
- arithmetic- the arithmetic
 
- 
AbstractBytesPcodeExecutorStatePieceprotected AbstractBytesPcodeExecutorStatePiece(Language language, PcodeArithmetic<byte[]> arithmetic, AbstractLongOffsetPcodeExecutorStatePiece.AbstractSpaceMap<S> spaceMap) 
 
- 
- 
Method Details- 
newSpaceMapA factory method for this state's space map.Because most of the special logic for extensions is placed in the "state space," i.e., an object assigned to a particular address space in the state's language, this factory method must provide the map to create and maintain those spaces. That map will in turn be the factory of the spaces themselves, allowing extensions to provide additional read/write logic. - Returns:
- the new space map
 
- 
getForSpaceDescription copied from class:AbstractLongOffsetPcodeExecutorStatePieceGet the internal space for the given address space- Specified by:
- getForSpacein class- AbstractLongOffsetPcodeExecutorStatePiece<byte[],- byte[], - S extends BytesPcodeExecutorStateSpace<?>> 
- Parameters:
- space- the address space
- toWrite- in case internal spaces are generated lazily, this indicates the space must be present, because it is going to be written to.
- Returns:
- the space, or null
- See Also:
 
- 
setInSpaceDescription copied from class:AbstractLongOffsetPcodeExecutorStatePieceSet a value in the given space- Specified by:
- setInSpacein class- AbstractLongOffsetPcodeExecutorStatePiece<byte[],- byte[], - S extends BytesPcodeExecutorStateSpace<?>> 
- Parameters:
- space- the address space
- offset- the offset within the space
- size- the number of bytes to write (the size of the value)
- val- the value to store
 
- 
getFromSpaceprotected byte[] getFromSpace(S space, long offset, int size, PcodeExecutorStatePiece.Reason reason) Description copied from class:AbstractLongOffsetPcodeExecutorStatePieceGet a value from the given space- Specified by:
- getFromSpacein class- AbstractLongOffsetPcodeExecutorStatePiece<byte[],- byte[], - S extends BytesPcodeExecutorStateSpace<?>> 
- Parameters:
- space- the address space
- offset- the offset within the space
- size- the number of bytes to read (the size of the value)
- reason- the reason for reading state
- Returns:
- the read value
 
- 
getRegisterValuesFromSpaceDescription copied from class:AbstractLongOffsetPcodeExecutorStatePieceCan the given space for register values, as inAbstractLongOffsetPcodeExecutorStatePiece.getRegisterValues()- Specified by:
- getRegisterValuesFromSpacein class- AbstractLongOffsetPcodeExecutorStatePiece<byte[],- byte[], - S extends BytesPcodeExecutorStateSpace<?>> 
- Parameters:
- s- the space to scan
- registers- the registers known to be in the corresponding address space
- Returns:
- the map of registers to values
 
- 
getConcreteBufferDescription copied from interface:PcodeExecutorStatePieceBind a buffer of concrete bytes at the given start address- Parameters:
- address- the start address
- purpose- the reason why the emulator needs a concrete value
- Returns:
- a buffer
 
- 
clearpublic void clear()Description copied from interface:PcodeExecutorStatePieceErase the entire state or pieceThis is generally only useful when the state is itself a cache to another object. This will ensure the state is reading from that object rather than a stale cache. If this is not a cache, this could in fact clear the whole state, and the machine using it will be left in the dark. 
 
-