Package ghidra.app.plugin.assembler.sleigh.sem

# Interface AssemblyResolvedBackfill

All Superinterfaces:
  `AssemblyResolution`, `Comparable<AssemblyResolution>`

All Known Implementing Classes:
  `DefaultAssemblyResolvedBackfill`

public interface AssemblyResolvedBackfill extends AssemblyResolution

- ## Method Summary

  Modifier and Type
  Method
  Description
  `int`
  `getInstructionLength()`
  Get the expected length of the instruction portion of the future encoding This is used to make sure that operands following a to-be-determined encoding are placed properly.
  `AssemblyResolvedBackfill`
  `shift(int amt)`
  Shift the resolution's instruction pattern to the right, if applicable
  `AssemblyResolution`
  `solve(RecursiveDescentSolver solver, Map<String,Long> vals, AssemblyResolvedPatterns cur)`
  Attempt (again) to solve the expression that generated this backfill record

  ### Methods inherited from interface ghidra.app.plugin.assembler.sleigh.sem.AssemblyResolution

  `collectAllRight, getChildren, getDescription, getRight, hasChildren, isBackfill, isError, lineToString, parent, toString, toString`

  ### Methods inherited from interface java.lang.Comparable

  `compareTo`

- ## Method Details

  - ### getInstructionLength

    int getInstructionLength()
    Get the expected length of the instruction portion of the future encoding This is used to make sure that operands following a to-be-determined encoding are placed properly. Even though the actual encoding cannot yet be determined, its length can.
    Returns:
      the total expected length (including the offset)

  - ### shift

    AssemblyResolvedBackfill shift(int amt)
    Description copied from interface: `AssemblyResolution`
    Shift the resolution's instruction pattern to the right, if applicable

    This also shifts any backfill and forbidden pattern records.

    Specified by:
      `shift` in interface `AssemblyResolution`
    Parameters:
      `amt` - the number of bytes to shift.
    Returns:
      the result

  - ### solve

    AssemblyResolution solve(RecursiveDescentSolver solver, Map<String,Long> vals, AssemblyResolvedPatterns cur)
    Attempt (again) to solve the expression that generated this backfill record

    This will attempt to solve the same expression and goal again, using the same parameters as were given to the original attempt, except with additional defined symbols. Typically, the symbol that required backfill is `inst_next`. This method will not throw `NeedsBackfillException`, since that would imply the missing symbol(s) from the original attempt are still missing. Instead, the method returns an instance of `AssemblyResolvedError`.

    Parameters:
      `solver` - a solver, usually the same as the one from the original attempt.
      `vals` - the defined symbols, usually the same, but with the missing symbol(s).
    Returns:
      the solution result