Class PairedPcodeExecutorState<L,R> 
- Type Parameters:
- L- the type of values for the "left" state
- R- the type of values for the "right" state
- All Implemented Interfaces:
- PcodeExecutorState<org.apache.commons.lang3.tuple.Pair<L,,- R>> - PcodeExecutorStatePiece<org.apache.commons.lang3.tuple.Pair<L,- R>, - org.apache.commons.lang3.tuple.Pair<L, - R>> 
This composes a delegate state and piece "left" and "write" creating a single state which instead stores pairs of values, where the left component has the value type of the left state, and the right component has the value type of the right state. Note that both states are addressed using only the left "control" component. Otherwise, every operation on this state is decomposed into operations upon the delegate states, and the final result composed from the results of those operations.
Where a response cannot be composed of both states, the paired state defers to the left. In this way, the left state controls the machine, while the right is computed in tandem. The right never directly controls the machine
 See PairedPcodeExecutorStatePiece regarding the composition of three or more pieces.
- 
Nested Class SummaryNested classes/interfaces inherited from interface ghidra.pcode.exec.PcodeExecutorStatePiecePcodeExecutorStatePiece.Reason
- 
Constructor SummaryConstructorsConstructorDescriptionPairedPcodeExecutorState(PcodeExecutorState<L> left, PcodeExecutorStatePiece<L, R> right) PairedPcodeExecutorState(PcodeExecutorState<L> left, PcodeExecutorStatePiece<L, R> right, PcodeArithmetic<org.apache.commons.lang3.tuple.Pair<L, R>> arithmetic) Compose a paired state from the given left and right states
- 
Method SummaryModifier and TypeMethodDescriptionvoidclear()Erase the entire state or piecefork()Create a deep copy of this statePcodeArithmetic<org.apache.commons.lang3.tuple.Pair<L, R>> Get 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 piecegetLeft()Get the delegate backing the left side of paired valuesGet all register values known to this stategetRight()Get the delegate backing the right side of paired valuesgetVar(AddressSpace space, org.apache.commons.lang3.tuple.Pair<L, R> offset, int size, boolean quantize, PcodeExecutorStatePiece.Reason reason) Get the value of a variablevoidsetVar(AddressSpace space, org.apache.commons.lang3.tuple.Pair<L, R> offset, int size, boolean quantize, org.apache.commons.lang3.tuple.Pair<L, R> val) Set the value of a variableMethods inherited from class java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface ghidra.pcode.exec.PcodeExecutorStategetAddressArithmetic, pairedMethods inherited from interface ghidra.pcode.exec.PcodeExecutorStatePiececheckRange, getVar, getVar, getVar, getVar, quantizeOffset, setVar, setVar, setVar, setVar
- 
Constructor Details- 
PairedPcodeExecutorState
- 
PairedPcodeExecutorStatepublic PairedPcodeExecutorState(PcodeExecutorState<L> left, PcodeExecutorStatePiece<L, R> right, PcodeArithmetic<org.apache.commons.lang3.tuple.Pair<L, R>> arithmetic) Compose a paired state from the given left and right states- Parameters:
- left- the state backing the left side of paired values ("control")
- right- the state backing the right side of paired values ("auxiliary")
 
- 
PairedPcodeExecutorState
 
- 
- 
Method Details- 
getLanguageDescription copied from interface:PcodeExecutorStatePieceGet the language defining the address spaces of this state piece- Specified by:
- getLanguagein interface- PcodeExecutorStatePiece<L,- R> 
- Returns:
- the language
 
- 
getArithmeticDescription copied from interface:PcodeExecutorStatePieceGet the arithmetic used to manipulate values of the type stored by this state- Specified by:
- getArithmeticin interface- PcodeExecutorStatePiece<L,- R> 
- Returns:
- the arithmetic
 
- 
getRegisterValuesDescription 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 interface- PcodeExecutorStatePiece<L,- R> 
- Returns:
- a map of registers and their values
 
- 
forkDescription copied from interface:PcodeExecutorStatePieceCreate a deep copy of this state- Specified by:
- forkin interface- PcodeExecutorState<L>
- Specified by:
- forkin interface- PcodeExecutorStatePiece<L,- R> 
- Returns:
- the copy
 
- 
getConcreteBufferDescription copied from interface:PcodeExecutorStatePieceBind a buffer of concrete bytes at the given start address- Specified by:
- getConcreteBufferin interface- PcodeExecutorStatePiece<L,- R> 
- Parameters:
- address- the start address
- purpose- the reason why the emulator needs a concrete value
- Returns:
- a buffer
 
- 
getLeftGet the delegate backing the left side of paired values- Returns:
- the left state
 
- 
getRightGet the delegate backing the right side of paired values- Returns:
- the right state
 
- 
setVarpublic void setVar(AddressSpace space, org.apache.commons.lang3.tuple.Pair<L, R> offset, int size, boolean quantize, org.apache.commons.lang3.tuple.Pair<L, R> val) Description copied from interface:PcodeExecutorStatePieceSet the value of a variable- Specified by:
- setVarin interface- PcodeExecutorStatePiece<L,- R> 
- Parameters:
- space- the address space
- offset- the offset within the space
- size- the size of the variable
- quantize- true to quantize to the language's "addressable unit"
- val- the value
 
- 
getVarpublic org.apache.commons.lang3.tuple.Pair<L,R> getVar(AddressSpace space, org.apache.commons.lang3.tuple.Pair<L, R> offset, int size, boolean quantize, PcodeExecutorStatePiece.Reason reason) Description copied from interface:PcodeExecutorStatePieceGet the value of a variable- Specified by:
- getVarin interface- PcodeExecutorStatePiece<L,- R> 
- Parameters:
- space- the address space
- offset- the offset within the space
- size- the size of the variable
- quantize- true to quantize to the language's "addressable unit"
- reason- the reason for reading the variable
- Returns:
- the value
 
- 
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. - Specified by:
- clearin interface- PcodeExecutorStatePiece<L,- R> 
 
 
-