Class TokenFieldSolver
- java.lang.Object
-
- ghidra.app.plugin.assembler.sleigh.expr.AbstractExpressionSolver<TokenField>
-
- ghidra.app.plugin.assembler.sleigh.expr.TokenFieldSolver
-
public class TokenFieldSolver extends AbstractExpressionSolver<TokenField>
Solves expressions of a token (instruction encoding) field Essentially, this just encodes the goal into the field, if it can be represented in the given space and format. Otherwise, there is no solution.
-
-
Field Summary
-
Fields inherited from class ghidra.app.plugin.assembler.sleigh.expr.AbstractExpressionSolver
dbg, solver
-
-
Constructor Summary
Constructors Constructor Description TokenFieldSolver()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description int
getInstructionLength(TokenField tf, java.util.Map<java.lang.Integer,java.lang.Object> res)
Determines the length of the subconstructor that would be returned had the expression not depended on an undefined symbol.MaskedLong
getValue(TokenField tf, java.util.Map<java.lang.String,java.lang.Long> vals, java.util.Map<java.lang.Integer,java.lang.Object> res, AssemblyResolvedConstructor cur)
Attempt to get a constant value for the expressionAssemblyResolution
solve(TokenField tf, MaskedLong goal, java.util.Map<java.lang.String,java.lang.Long> vals, java.util.Map<java.lang.Integer,java.lang.Object> res, AssemblyResolvedConstructor cur, java.util.Set<SolverHint> hints, java.lang.String description)
Attempt to solve an expression for a given valueMaskedLong
valueForResolution(TokenField tf, AssemblyResolvedConstructor rc)
Compute the value of the expression given the (possibly-intermediate) resolution-
Methods inherited from class ghidra.app.plugin.assembler.sleigh.expr.AbstractExpressionSolver
register
-
-
-
-
Method Detail
-
solve
public AssemblyResolution solve(TokenField tf, MaskedLong goal, java.util.Map<java.lang.String,java.lang.Long> vals, java.util.Map<java.lang.Integer,java.lang.Object> res, AssemblyResolvedConstructor cur, java.util.Set<SolverHint> hints, java.lang.String description)
Description copied from class:AbstractExpressionSolver
Attempt to solve an expression for a given value- Specified by:
solve
in classAbstractExpressionSolver<TokenField>
- Parameters:
tf
- the expression to solvegoal
- the desired value of the expressionvals
- values of defined symbolsres
- the results of subconstructor resolutions (used for lengths)hints
- describes techniques applied by calling solversdescription
- the description to give to resolved solutions- Returns:
- the resolution
-
getValue
public MaskedLong getValue(TokenField tf, java.util.Map<java.lang.String,java.lang.Long> vals, java.util.Map<java.lang.Integer,java.lang.Object> res, AssemblyResolvedConstructor cur)
Description copied from class:AbstractExpressionSolver
Attempt to get a constant value for the expression- Specified by:
getValue
in classAbstractExpressionSolver<TokenField>
- Parameters:
tf
- the expressionvals
- values of defined symbolsres
- the results of subconstructor resolutions (used for lengths)- Returns:
- the constant value, or null if it depends on a variable
-
getInstructionLength
public int getInstructionLength(TokenField tf, java.util.Map<java.lang.Integer,java.lang.Object> res)
Description copied from class:AbstractExpressionSolver
Determines the length of the subconstructor that would be returned had the expression not depended on an undefined symbol. This is used by the backfilling process to ensure values are written to the correct offset- Specified by:
getInstructionLength
in classAbstractExpressionSolver<TokenField>
- Parameters:
tf
- the expressionres
- the results of subconstructor resolutions (used for lengths)- Returns:
- the length of filled in token field(s).
-
valueForResolution
public MaskedLong valueForResolution(TokenField tf, AssemblyResolvedConstructor rc)
Description copied from class:AbstractExpressionSolver
Compute the value of the expression given the (possibly-intermediate) resolution- Specified by:
valueForResolution
in classAbstractExpressionSolver<TokenField>
- Parameters:
tf
- the expression to evaluaterc
- the resolution on which to evaluate it- Returns:
- the result
-
-