EvalState Type
Represents the main evaluation state that will be updated by evaluating every LowUIR statement encountered during the course of execution. This can be considered as a single-threaded CPU context.
Constructors
| Constructor |
Description
|
|
This constructor will simply create a fresh new EvalState. Depending on the `ignoreUndef` parameter, the evaluator using this EvalState will silently ignore Undef values. Such a feature is only useful for some static analyses.
|
|
|
|
This constructor will simply create a fresh new EvalState.
|
Instance members
| Instance member |
Description
|
Full Usage:
this.AbortInstr
Parameters:
bool
|
Stop evaluating further statements of the current instruction, and move on the next instruction.
|
Full Usage:
this.AdvancePC
Parameters:
uint32
Modifiers: inline |
Advance PC by `amount`.
|
|
Make a copy of this EvalState.
|
|
|
Full Usage:
this.CurrentInsLen
Returns: uint32
|
Current instruction length.
|
|
External call event handler.
|
|
|
|
|
|
Go to the statement of the given label.
|
Full Usage:
this.IgnoreUndef
Returns: bool
|
Whether to ignore statements that cannot be evaluated due to undef values. This is particularly useful to quickly check some constants.
|
Full Usage:
this.InitializeContext
Parameters:
uint64
regs : (RegisterID * 'a) array
Type parameters: 'a (requires :> B2R2.BitVector) |
Initialize the current context by updating register values.
|
Full Usage:
this.IsInstrTerminated
Returns: bool
|
Indicate whether to terminate the current instruction or not. This flag is set to true when we encounter an inter-jump statement or SideEffect, so that we can ignore the rest of the statements.
|
|
Store labels and their corresponding statement indices.
|
|
Memory load failure (access violation) event handler.
|
|
Memory.
|
Full Usage:
this.NeedToEvaluateIEMark
Returns: bool
|
Indicate whether to evaluate IEMark while ignoring the other instructions. This means, the evaluation of the instruction is over, but we need to advance the PC to the next instruction using IEMark. Thus, this flag is only meaningful when `IsInstrTerminated` is true.
|
Full Usage:
this.NextStmt
Modifiers: inline |
Update the current statement index to be the next (current + 1) statement. |
Full Usage:
this.PC
Returns: uint64
|
Current PC.
|
|
Get ready for evaluating a new instruction.
|
|
Named register values.
|
|
Set the value for the given register.
|
|
Set the value for the given temporary variable.
|
|
Side-effect event handler.
|
Full Usage:
this.StmtIdx
Returns: int
|
The current index of the statement to evaluate within the scope of a machine instruction. This index behaves like a PC for statements of an instruction.
|
|
Temporary variable values.
|
|
|
|
|
|
Unset the given register.
|
Full Usage:
this.UnsetTmp
Parameters:
int
Modifiers: inline |
Unset the given temporary variable.
|
B2R2