Package ghidra.app.util
Class PseudoDisassemblerContext
- java.lang.Object
-
- ghidra.app.util.PseudoDisassemblerContext
-
- All Implemented Interfaces:
DisassemblerContext,ProcessorContext,ProcessorContextView
public class PseudoDisassemblerContext extends java.lang.Object implements DisassemblerContext
-
-
Constructor Summary
Constructors Constructor Description PseudoDisassemblerContext(ProgramContext context)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclearRegister(Register register)Clears the register within this context.voidcopyToFutureFlowState(Address target)voidflowEnd(Address address)voidflowStart(Address address)voidflowToAddress(Address target)AddressgetAddress()RegistergetBaseContextRegister()RegistergetRegister(java.lang.String name)Get a Register given the name of a registerRegister[]getRegisters()Returns all the Registers for the processorRegisterValuegetRegisterValue(Register register)Get the RegisterValue for the given register.java.math.BigIntegergetValue(Register register, boolean signed)Get the contents of a processor register as a BigInteger objectbooleanhasValue(Register register)Returns true if a value is defined for the given register.voidsetFutureRegisterValue(Address fromAddr, Address toAddr, RegisterValue value)Combinesvaluewith any previously saved future register value atfromAddr/toAddror any value stored in the program if there is no previously saved future value.voidsetFutureRegisterValue(Address address, RegisterValue value)Combinesvaluewith any previously saved future register value ataddressor any value stored in the program if there is no previously saved future value.voidsetRegisterValue(RegisterValue value)Sets the specified register value within this context.voidsetValue(Register register, Address addr, java.math.BigInteger value)voidsetValue(Register register, java.math.BigInteger value)Sets the value for a Register.
-
-
-
Constructor Detail
-
PseudoDisassemblerContext
public PseudoDisassemblerContext(ProgramContext context)
-
-
Method Detail
-
getBaseContextRegister
public Register getBaseContextRegister()
- Specified by:
getBaseContextRegisterin interfaceProcessorContextView- Returns:
- the base processor context register or null if one has not been defined
-
setFutureRegisterValue
public void setFutureRegisterValue(Address address, RegisterValue value)
Description copied from interface:DisassemblerContextCombinesvaluewith any previously saved future register value ataddressor any value stored in the program if there is no previously saved future value. Use this method when multiple flows to the same address don't matter or the flowing from address is unknown. Whenvaluehas conflicting bits with the previously saved value,valuewill take precedence. If the register value is the value for the processor context register and a previously saved value does not exist, the user saved values in the stored context of the program will be used as existing value.- Specified by:
setFutureRegisterValuein interfaceDisassemblerContext- Parameters:
address- the address to store the register valuevalue- the register value to store at the address
-
clearRegister
public void clearRegister(Register register)
Description copied from interface:ProcessorContextClears the register within this context.- Specified by:
clearRegisterin interfaceProcessorContext- Parameters:
register- register to be cleared.
-
getRegister
public Register getRegister(java.lang.String name)
Description copied from interface:ProcessorContextViewGet a Register given the name of a register- Specified by:
getRegisterin interfaceProcessorContextView- Parameters:
name- the name of the register.- Returns:
- The register with the given name.
-
getRegisterValue
public RegisterValue getRegisterValue(Register register)
Description copied from interface:ProcessorContextViewGet the RegisterValue for the given register.- Specified by:
getRegisterValuein interfaceProcessorContextView- Parameters:
register- register to get the value for- Returns:
- RegisterValue object containing the value of the register if a value exists, otherwise null.
-
getRegisters
public Register[] getRegisters()
Description copied from interface:ProcessorContextViewReturns all the Registers for the processor- Specified by:
getRegistersin interfaceProcessorContextView- Returns:
- all the Registers for the processor
-
getValue
public java.math.BigInteger getValue(Register register, boolean signed)
Description copied from interface:ProcessorContextViewGet the contents of a processor register as a BigInteger object- Specified by:
getValuein interfaceProcessorContextView- Parameters:
register- register to get the value for- Returns:
- a BigInteger object containing the value of the register if a value exists, otherwise null.
-
hasValue
public boolean hasValue(Register register)
Description copied from interface:ProcessorContextViewReturns true if a value is defined for the given register.- Specified by:
hasValuein interfaceProcessorContextView- Parameters:
register- the register to check for a value.- Returns:
- true if the given register has a value.
-
setRegisterValue
public void setRegisterValue(RegisterValue value)
Description copied from interface:ProcessorContextSets the specified register value within this context.- Specified by:
setRegisterValuein interfaceProcessorContext- Parameters:
value- register value
-
setValue
public void setValue(Register register, java.math.BigInteger value)
Description copied from interface:ProcessorContextSets the value for a Register.- Specified by:
setValuein interfaceProcessorContext- Parameters:
register- the register to have its value setvalue- the value for the register (null is not permitted).
-
flowStart
public void flowStart(Address address)
-
getAddress
public Address getAddress()
-
flowEnd
public void flowEnd(Address address)
-
flowToAddress
public void flowToAddress(Address target)
-
copyToFutureFlowState
public void copyToFutureFlowState(Address target)
-
setFutureRegisterValue
public void setFutureRegisterValue(Address fromAddr, Address toAddr, RegisterValue value)
Description copied from interface:DisassemblerContextCombinesvaluewith any previously saved future register value atfromAddr/toAddror any value stored in the program if there is no previously saved future value. Whenvaluehas conflicting bits with the previously saved value,valuewill take precedence. If the register value is the value for the processor context register and a previously saved value does not exist, the user saved values in the stored context of the program will be used as existing value.- Specified by:
setFutureRegisterValuein interfaceDisassemblerContext- Parameters:
fromAddr- the address this value if flowing fromtoAddr- the address to store the register valuevalue- the register value to store at the address
-
-