Class OrExpressionSolver
- java.lang.Object
-
- ghidra.app.plugin.assembler.sleigh.expr.AbstractExpressionSolver<T>
-
- ghidra.app.plugin.assembler.sleigh.expr.AbstractBinaryExpressionSolver<OrExpression>
-
- ghidra.app.plugin.assembler.sleigh.expr.OrExpressionSolver
-
public class OrExpressionSolver extends AbstractBinaryExpressionSolver<OrExpression>
Solves expressions of the form A | B
-
-
Field Summary
-
Fields inherited from class ghidra.app.plugin.assembler.sleigh.expr.AbstractExpressionSolver
dbg, solver
-
-
Constructor Summary
Constructors Constructor Description OrExpressionSolver()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description MaskedLongcompute(MaskedLong lval, MaskedLong rval)Compute the result of applying the operator to the two given valuesprotected MaskedLongcomputeCircShiftF(MaskedLong gval, int size, int dir, MaskedLong goal)protected MaskedLongcomputeCircShiftG(MaskedLong fval, int size, int dir, MaskedLong goal)MaskedLongcomputeLeft(MaskedLong rval, MaskedLong goal)Compute the left-hand-side value given that the result and the right are knownprotected AssemblyResolutionsolveLeftCircularShift(PatternExpression expValue, PatternExpression expShift, int size, int dir, 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)protected AssemblyResolutionsolveTwoSided(OrExpression exp, 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)protected AssemblyResolutiontryCatenationExpression(OrExpression exp, 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)protected AssemblyResolutiontryCircularShiftExpression(OrExpression exp, 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)-
Methods inherited from class ghidra.app.plugin.assembler.sleigh.expr.AbstractBinaryExpressionSolver
computeRight, getInstructionLength, getValue, solve, solveLeftSide, solveRightSide, valueForResolution
-
Methods inherited from class ghidra.app.plugin.assembler.sleigh.expr.AbstractExpressionSolver
register
-
-
-
-
Method Detail
-
compute
public MaskedLong compute(MaskedLong lval, MaskedLong rval)
Description copied from class:AbstractBinaryExpressionSolverCompute the result of applying the operator to the two given values- Specified by:
computein classAbstractBinaryExpressionSolver<OrExpression>- Parameters:
lval- the left-hand-side valuerval- the right-hand-side value- Returns:
- the result
-
computeLeft
public MaskedLong computeLeft(MaskedLong rval, MaskedLong goal) throws SolverException
Description copied from class:AbstractBinaryExpressionSolverCompute the left-hand-side value given that the result and the right are known- Specified by:
computeLeftin classAbstractBinaryExpressionSolver<OrExpression>- Parameters:
rval- the right-hand-side valuegoal- the result- Returns:
- the left-hand-side value solution
- Throws:
SolverException- if the expression cannot be solved
-
tryCatenationExpression
protected AssemblyResolution tryCatenationExpression(OrExpression exp, 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) throws SolverException
- Throws:
SolverException
-
tryCircularShiftExpression
protected AssemblyResolution tryCircularShiftExpression(OrExpression exp, 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) throws SolverException
- Throws:
SolverException
-
solveLeftCircularShift
protected AssemblyResolution solveLeftCircularShift(PatternExpression expValue, PatternExpression expShift, int size, int dir, 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) throws NeedsBackfillException, SolverException
-
computeCircShiftG
protected MaskedLong computeCircShiftG(MaskedLong fval, int size, int dir, MaskedLong goal) throws SolverException
- Throws:
SolverException
-
computeCircShiftF
protected MaskedLong computeCircShiftF(MaskedLong gval, int size, int dir, MaskedLong goal)
-
solveTwoSided
protected AssemblyResolution solveTwoSided(OrExpression exp, 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) throws NeedsBackfillException, SolverException
- Overrides:
solveTwoSidedin classAbstractBinaryExpressionSolver<OrExpression>- Throws:
NeedsBackfillExceptionSolverException
-
-