Package ghidra.pcode.emulate
Class EmulateDisassemblerContext
java.lang.Object
ghidra.pcode.emulate.EmulateDisassemblerContext
- All Implemented Interfaces:
DisassemblerContext
,ProcessorContext
,ProcessorContextView
-
Constructor Summary
ConstructorDescriptionEmulateDisassemblerContext
(Language language, RegisterValue initialContextValue) -
Method Summary
Modifier and TypeMethodDescriptionvoid
clearRegister
(Register register) Clears the register within this context.getRegister
(String name) Get a Register given the name of a registerReturns all the Registers for the processor as an unmodifiable listgetRegisterValue
(Register register) Get the RegisterValue for the given register.Get the contents of a processor register as a BigInteger objectboolean
Returns true if a value is defined for the given register.void
setCurrentAddress
(Address addr) void
setFutureRegisterValue
(Address fromAddr, Address toAddr, RegisterValue value) Combinesvalue
with any previously saved future register value atfromAddr/toAddr
or any value stored in the program if there is no previously saved future value.void
setFutureRegisterValue
(Address address, RegisterValue value) Combinesvalue
with any previously saved future register value ataddress
or any value stored in the program if there is no previously saved future value.void
setRegisterValue
(RegisterValue value) Sets the specified register value within this context.void
setValue
(Register register, BigInteger value) Sets the value for a Register.
-
Constructor Details
-
EmulateDisassemblerContext
-
-
Method Details
-
getBaseContextRegister
- Specified by:
getBaseContextRegister
in interfaceProcessorContextView
- Returns:
- the base processor context register or null if one has not been defined
-
getCurrentContextRegisterValue
-
setCurrentAddress
-
clearRegister
Description copied from interface:ProcessorContext
Clears the register within this context.- Specified by:
clearRegister
in interfaceProcessorContext
- Parameters:
register
- register to be cleared.
-
getRegister
Description copied from interface:ProcessorContextView
Get a Register given the name of a register- Specified by:
getRegister
in interfaceProcessorContextView
- Parameters:
name
- the name of the register.- Returns:
- The register with the given name.
-
getRegisterValue
Description copied from interface:ProcessorContextView
Get the RegisterValue for the given register.- Specified by:
getRegisterValue
in 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
Description copied from interface:ProcessorContextView
Returns all the Registers for the processor as an unmodifiable list- Specified by:
getRegisters
in interfaceProcessorContextView
- Returns:
- all the Registers for the processor
-
getValue
Description copied from interface:ProcessorContextView
Get the contents of a processor register as a BigInteger object- Specified by:
getValue
in 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
Description copied from interface:ProcessorContextView
Returns true if a value is defined for the given register.- Specified by:
hasValue
in interfaceProcessorContextView
- Parameters:
register
- the register to check for a value.- Returns:
- true if the given register has a value.
-
setRegisterValue
Description copied from interface:ProcessorContext
Sets the specified register value within this context.- Specified by:
setRegisterValue
in interfaceProcessorContext
- Parameters:
value
- register value
-
setValue
Description copied from interface:ProcessorContext
Sets the value for a Register.- Specified by:
setValue
in interfaceProcessorContext
- Parameters:
register
- the register to have its value setvalue
- the value for the register (null is not permitted).
-
setFutureRegisterValue
Description copied from interface:DisassemblerContext
Combinesvalue
with any previously saved future register value ataddress
or 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.
Whenvalue
has conflicting bits with the previously saved value,value
will 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:
setFutureRegisterValue
in interfaceDisassemblerContext
- Parameters:
address
- the address to store the register valuevalue
- the register value to store at the address
-
setFutureRegisterValue
Description copied from interface:DisassemblerContext
Combinesvalue
with any previously saved future register value atfromAddr/toAddr
or any value stored in the program if there is no previously saved future value.
Whenvalue
has conflicting bits with the previously saved value,value
will 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:
setFutureRegisterValue
in 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
-