Package ghidra.pcode.emu.jit.var

# Class JitInputVar

java.lang.Object
ghidra.pcode.emu.jit.var.AbstractJitVal
ghidra.pcode.emu.jit.var.AbstractJitVar
ghidra.pcode.emu.jit.var.AbstractJitVarnodeVar
ghidra.pcode.emu.jit.var.JitInputVar

All Implemented Interfaces:
  `JitVal`, `JitVar`, `JitVarnodeVar`

public class JitInputVar extends AbstractJitVarnodeVar
A p-code variable that is an input to a passage, i.e., there are reads possible before writes.

These only appear as options to a `phi` node. They are very common, because any block that is also a valid passage entry (which is most of them) can have an option that is defined outside the passage. It may very well be the only option.

Implementation Notes:
  We delay creation of passage-input variables until inter-block analysis, because the variable must turn up missing (i.e., not be defined prior in the same block) before we can consider it might be a passage input. We thus create a `phi` node for it and record the input as just one of many options. We had at one point "simplified" single-option phi nodes, which covered the case where the varnode is certainly a passage input, but we found it difficult in terms of bookkeeping. Also, because of our variable allocation strategy, such simplification offered no real value during code generation.

- ## Nested Class Summary

  ## Nested classes/interfaces inherited from interface ghidra.pcode.emu.jit.var.JitVal

  `JitVal.ValUse`

- ## Field Summary

  ### Fields inherited from class ghidra.pcode.emu.jit.var.AbstractJitVarnodeVar

  `varnode`

  ### Fields inherited from class ghidra.pcode.emu.jit.var.AbstractJitVar

  `id`

  ### Fields inherited from class ghidra.pcode.emu.jit.var.AbstractJitVal

  `size, uses`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `JitInputVar(Varnode varnode)`
  Construct a variable.

- ## Method Summary

  ### Methods inherited from class ghidra.pcode.emu.jit.var.AbstractJitVarnodeVar

  `space, toString, varnode`

  ### Methods inherited from class ghidra.pcode.emu.jit.var.AbstractJitVar

  `id`

  ### Methods inherited from class ghidra.pcode.emu.jit.var.AbstractJitVal

  `addUse, removeUse, size, uses`

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

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

  ### Methods inherited from interface ghidra.pcode.emu.jit.var.JitVal

  `addUse, removeUse, uses`

  ### Methods inherited from interface ghidra.pcode.emu.jit.var.JitVar

  `id`

  ### Methods inherited from interface ghidra.pcode.emu.jit.var.JitVarnodeVar

  `size`

- ## Constructor Details

  - ### JitInputVar

    public JitInputVar(Varnode varnode)
    Construct a variable.
    Parameters:
      `varnode` - the varnode
    See Also:
      - `JitPhiOp.addInputOption()`