Package ghidra.pcode.emu.jit

# Class JitPassage.DecodeErrorPcodeOp

java.lang.Object
ghidra.program.model.pcode.PcodeOp
ghidra.pcode.emu.jit.JitPassage.DecodedPcodeOp
ghidra.pcode.emu.jit.JitPassage.DecodeErrorPcodeOp

Enclosing class:
  `JitPassage`

public static class JitPassage.DecodeErrorPcodeOp extends JitPassage.DecodedPcodeOp
A synthetic p-code op denoting a decode error

The decoder may encounter several decode errors as it selects and decodes the passage. An instruction is selected because the JIT believes it may be executed by the emulator. (Predicting this and making good selections is a matter of further research.) Encounting a decode error along a possible path is not cause to throw an exception. However; if the emulator does in fact attempt to execute the bytes which it can't decode, then we do throw the exception. This p-code op is synthesized where such decode errors occur, and the translator will generate code that actually throw the exception. Note that the error message is placed in the corresponding `JitPassage.ErrBranch`.

- ## Field Summary

  ### Fields inherited from class ghidra.program.model.pcode.PcodeOp

  `BOOL_AND, BOOL_NEGATE, BOOL_OR, BOOL_XOR, BRANCH, BRANCHIND, CALL, CALLIND, CALLOTHER, CAST, CBRANCH, COPY, CPOOLREF, EXTRACT, FLOAT_ABS, FLOAT_ADD, FLOAT_CEIL, FLOAT_DIV, FLOAT_EQUAL, FLOAT_FLOAT2FLOAT, FLOAT_FLOOR, FLOAT_INT2FLOAT, FLOAT_LESS, FLOAT_LESSEQUAL, FLOAT_MULT, FLOAT_NAN, FLOAT_NEG, FLOAT_NOTEQUAL, FLOAT_ROUND, FLOAT_SQRT, FLOAT_SUB, FLOAT_TRUNC, INDIRECT, INSERT, INT_2COMP, INT_ADD, INT_AND, INT_CARRY, INT_DIV, INT_EQUAL, INT_LEFT, INT_LESS, INT_LESSEQUAL, INT_MULT, INT_NEGATE, INT_NOTEQUAL, INT_OR, INT_REM, INT_RIGHT, INT_SBORROW, INT_SCARRY, INT_SDIV, INT_SEXT, INT_SLESS, INT_SLESSEQUAL, INT_SREM, INT_SRIGHT, INT_SUB, INT_XOR, INT_ZEXT, LOAD, LZCOUNT, MULTIEQUAL, NEW, PCODE_MAX, PIECE, POPCOUNT, PTRADD, PTRSUB, RETURN, SEGMENTOP, STORE, SUBPIECE, UNIMPLEMENTED`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `DecodeErrorPcodeOp(JitPassage.AddrCtx at)`
  Construct a p-code op representing an instruction decode error.

- ## Method Summary

  ### Methods inherited from class ghidra.pcode.emu.jit.JitPassage.DecodedPcodeOp

  `getAt, getContext, getCounter, isInstructionStart`

  ### Methods inherited from class ghidra.program.model.pcode.PcodeOp

  `decode, encodeRaw, getBasicIter, getInput, getInputs, getInsertIter, getMnemonic, getMnemonic, getNumInputs, getOpcode, getOpcode, getOutput, getParent, getSeqnum, getSlot, hashCode, insertInput, isAssignment, isCommutative, isCommutative, isDead, removeInput, setInput, setOpcode, setOrder, setOutput, setTime, toString`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, notify, notifyAll, wait, wait, wait`

- ## Constructor Details

  - ### DecodeErrorPcodeOp

    public DecodeErrorPcodeOp(JitPassage.AddrCtx at)
    Construct a p-code op representing an instruction decode error.
    Parameters:
      `at` - the address and decode context where the error occurred