Package ghidra.pcode.exec
Class DefaultPcodeExecutorState<T>
java.lang.Object
ghidra.pcode.exec.DefaultPcodeExecutorState<T>
- Type Parameters:
T- the type of values and addresses in the state
- All Implemented Interfaces:
PcodeExecutorState<T>,PcodeExecutorStatePiece<T,T>
- Direct Known Subclasses:
BytesPcodeExecutorState,JitDefaultBytesPcodeExecutorState
A p-code executor state formed from a piece whose address and value types are the same
-
Nested Class Summary
Nested classes/interfaces inherited from interface ghidra.pcode.exec.PcodeExecutorStatePiece
PcodeExecutorStatePiece.Reason -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected final PcodeArithmetic<T> protected final PcodeExecutorStatePiece<T, T> -
Constructor Summary
ConstructorsConstructorDescriptionDefaultPcodeExecutorState(PcodeExecutorStatePiece<T, T> piece, PcodeArithmetic<T> arithmetic) -
Method Summary
Modifier and TypeMethodDescriptionvoidclear()Erase the entire state or piecefork()Create a deep copy of this stateGet the arithmetic used to manipulate values of the type stored by this stategetConcreteBuffer(Address address, PcodeArithmetic.Purpose purpose) Bind a buffer of concrete bytes at the given start addressGet the language defining the address spaces of this state pieceGet all register values known to this stategetVar(AddressSpace space, long offset, int size, boolean quantize, PcodeExecutorStatePiece.Reason reason) Get the value of a variablegetVar(AddressSpace space, T offset, int size, boolean quantize, PcodeExecutorStatePiece.Reason reason) Get the value of a variablevoidsetVar(AddressSpace space, long offset, int size, boolean quantize, T val) Set the value of a variablevoidsetVar(AddressSpace space, T offset, int size, boolean quantize, T val) Set the value of a variableMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface ghidra.pcode.exec.PcodeExecutorState
getAddressArithmetic, pairedMethods inherited from interface ghidra.pcode.exec.PcodeExecutorStatePiece
checkRange, getVar, getVar, getVar, quantizeOffset, setVar, setVar, setVar
-
Field Details
-
piece
-
arithmetic
-
-
Constructor Details
-
DefaultPcodeExecutorState
-
DefaultPcodeExecutorState
-
-
Method Details
-
getLanguage
Description copied from interface:PcodeExecutorStatePieceGet the language defining the address spaces of this state piece- Specified by:
getLanguagein interfacePcodeExecutorStatePiece<T,T> - Returns:
- the language
-
getArithmetic
Description copied from interface:PcodeExecutorStatePieceGet the arithmetic used to manipulate values of the type stored by this state- Specified by:
getArithmeticin interfacePcodeExecutorStatePiece<T,T> - Returns:
- the arithmetic
-
fork
Description copied from interface:PcodeExecutorStatePieceCreate a deep copy of this state- Specified by:
forkin interfacePcodeExecutorState<T>- Specified by:
forkin interfacePcodeExecutorStatePiece<T,T> - Returns:
- the copy
-
getVar
public T getVar(AddressSpace space, T offset, int size, boolean quantize, PcodeExecutorStatePiece.Reason reason) Description copied from interface:PcodeExecutorStatePieceGet the value of a variable- Specified by:
getVarin interfacePcodeExecutorStatePiece<T,T> - Parameters:
space- the address spaceoffset- the offset within the spacesize- the size of the variablequantize- true to quantize to the language's "addressable unit"reason- the reason for reading the variable- Returns:
- the value
-
getVar
public T getVar(AddressSpace space, long offset, int size, boolean quantize, PcodeExecutorStatePiece.Reason reason) Description copied from interface:PcodeExecutorStatePieceGet the value of a variableThis method is typically used for reading memory variables.
- Specified by:
getVarin interfacePcodeExecutorStatePiece<T,T> - Parameters:
space- the address spaceoffset- the offset within the spacesize- the size of the variablequantize- true to quantize to the language's "addressable unit"reason- the reason for reading the variable- Returns:
- the value
-
setVar
Description copied from interface:PcodeExecutorStatePieceSet the value of a variable- Specified by:
setVarin interfacePcodeExecutorStatePiece<T,T> - Parameters:
space- the address spaceoffset- the offset within the spacesize- the size of the variablequantize- true to quantize to the language's "addressable unit"val- the value
-
setVar
Description copied from interface:PcodeExecutorStatePieceSet the value of a variable- Specified by:
setVarin interfacePcodeExecutorStatePiece<T,T> - Parameters:
space- the address spaceoffset- the offset within the spacesize- the size of the variablequantize- true to quantize to the language's "addressable unit"val- the value
-
getRegisterValues
Description copied from interface:PcodeExecutorStatePieceGet all register values known to this stateWhen the state acts as a cache, it should only return those cached.
- Specified by:
getRegisterValuesin interfacePcodeExecutorStatePiece<T,T> - Returns:
- a map of registers and their values
-
getConcreteBuffer
Description copied from interface:PcodeExecutorStatePieceBind a buffer of concrete bytes at the given start address- Specified by:
getConcreteBufferin interfacePcodeExecutorStatePiece<T,T> - Parameters:
address- the start addresspurpose- the reason why the emulator needs a concrete value- Returns:
- a buffer
-
clear
public 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.
- Specified by:
clearin interfacePcodeExecutorStatePiece<T,T>
-