Package ghidra.program.model.listing

# Class InstructionPcodeOverride

java.lang.Object
ghidra.program.model.listing.InstructionPcodeOverride

All Implemented Interfaces:
  `PcodeOverride`

public class InstructionPcodeOverride extends Object implements PcodeOverride

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected final Instruction`
  `instr`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `InstructionPcodeOverride(Instruction instr)`
  This constructor caches the primary and overriding "from" references of `instr`.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `InjectPayload`
  `getCallFixup(Address callDestAddr)`
  Returns the call-fixup for a specified call destination.
  `Address`
  `getFallThroughOverride()`
  Get the fall-through override address which may have been applied to the current instruction.
  `FlowOverride`
  `getFlowOverride()`
  Get the flow override which may have been applied to the current instruction.
  `Address`
  `getInstructionStart()`
  `Address`
  `getOverridingReference(RefType type)`
  Get the primary overriding reference address of `RefType` `type` from the current instruction
  `Address`
  `getPrimaryCallReference()`
  Get the primary call reference address from the current instruction
  `boolean`
  `hasCallFixup(Address callDestAddr)`
  Returns the call-fixup for a specified call destination.
  `boolean`
  `hasPotentialOverride()`
  Returns a boolean indicating whether there are any primary overriding references at the current instruction
  `boolean`
  `isCallOtherCallOverrideRefApplied()`
  Returns a boolean indicating whether a callother call override has been applied at the current instruction
  `boolean`
  `isCallOtherJumpOverrideApplied()`
  Returns a boolean indicating whether a callother jump override has been applied at the current instruction
  `boolean`
  `isCallOverrideRefApplied()`
  Returns a boolean indicating whether a call override has been applied at the current instruction
  `boolean`
  `isJumpOverrideRefApplied()`
  Returns a boolean indicating whether a jump override has been applied at the current instruction
  `void`
  `setCallOtherCallOverrideRefApplied()`
  Register that a callother call override has been applied at the current instruction
  `void`
  `setCallOtherJumpOverrideRefApplied()`
  Register that a callother jump override has been applied at the current instruction
  `void`
  `setCallOverrideRefApplied()`
  Register that a call override has been applied at the current instruction.
  `void`
  `setJumpOverrideRefApplied()`
  Register that a jump override has been applied at the current instruction

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

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

- ## Field Details

  - ### instr

    protected final Instruction instr

- ## Constructor Details

  - ### InstructionPcodeOverride

    public InstructionPcodeOverride(Instruction instr)
    This constructor caches the primary and overriding "from" references of `instr`. This cache is never updated; the assumption is that this object is short-lived (duration of `PcodeEmit`)
    Parameters:
      `instr` - the instruction

- ## Method Details

  - ### getFallThroughOverride

    public Address getFallThroughOverride()
    Description copied from interface: `PcodeOverride`
    Get the fall-through override address which may have been applied to the current instruction.
    Specified by:
      `getFallThroughOverride` in interface `PcodeOverride`
    Returns:
      fall-through override address or null

  - ### getFlowOverride

    public FlowOverride getFlowOverride()
    Description copied from interface: `PcodeOverride`
    Get the flow override which may have been applied to the current instruction.
    Specified by:
      `getFlowOverride` in interface `PcodeOverride`
    Returns:
      flow override or null

  - ### getInstructionStart

    public Address getInstructionStart()
    Specified by:
      `getInstructionStart` in interface `PcodeOverride`
    Returns:
      current instruction address

  - ### getOverridingReference

    public Address getOverridingReference(RefType type)
    Description copied from interface: `PcodeOverride`
    Get the primary overriding reference address of `RefType` `type` from the current instruction
    Specified by:
      `getOverridingReference` in interface `PcodeOverride`
    Parameters:
      `type` - type of reference
    Returns:
      call reference address or null

  - ### getPrimaryCallReference

    public Address getPrimaryCallReference()
    Description copied from interface: `PcodeOverride`
    Get the primary call reference address from the current instruction
    Specified by:
      `getPrimaryCallReference` in interface `PcodeOverride`
    Returns:
      call reference address or null

  - ### hasCallFixup

    public boolean hasCallFixup(Address callDestAddr)
    Description copied from interface: `PcodeOverride`
    Returns the call-fixup for a specified call destination.
    Specified by:
      `hasCallFixup` in interface `PcodeOverride`
    Parameters:
      `callDestAddr` - call destination address. This address is used to identify a function which may have been tagged with a CallFixup.
    Returns:
      true if call destination function has been tagged with a call-fixup

  - ### getCallFixup

    public InjectPayload getCallFixup(Address callDestAddr)
    Description copied from interface: `PcodeOverride`
    Returns the call-fixup for a specified call destination. If the destination function has not be tagged or was tagged with an unknown CallFixup name this method will return null.
    Specified by:
      `getCallFixup` in interface `PcodeOverride`
    Parameters:
      `callDestAddr` - call destination address. This address is used to identify a function which may have been tagged with a CallFixup.
    Returns:
      call fixup object or null

  - ### setCallOverrideRefApplied

    public void setCallOverrideRefApplied()
    Description copied from interface: `PcodeOverride`
    Register that a call override has been applied at the current instruction.
    Specified by:
      `setCallOverrideRefApplied` in interface `PcodeOverride`

  - ### isCallOverrideRefApplied

    public boolean isCallOverrideRefApplied()
    Description copied from interface: `PcodeOverride`
    Returns a boolean indicating whether a call override has been applied at the current instruction
    Specified by:
      `isCallOverrideRefApplied` in interface `PcodeOverride`
    Returns:
      has call override been applied

  - ### setJumpOverrideRefApplied

    public void setJumpOverrideRefApplied()
    Description copied from interface: `PcodeOverride`
    Register that a jump override has been applied at the current instruction
    Specified by:
      `setJumpOverrideRefApplied` in interface `PcodeOverride`

  - ### isJumpOverrideRefApplied

    public boolean isJumpOverrideRefApplied()
    Description copied from interface: `PcodeOverride`
    Returns a boolean indicating whether a jump override has been applied at the current instruction
    Specified by:
      `isJumpOverrideRefApplied` in interface `PcodeOverride`
    Returns:
      has jump override been applied

  - ### setCallOtherCallOverrideRefApplied

    public void setCallOtherCallOverrideRefApplied()
    Description copied from interface: `PcodeOverride`
    Register that a callother call override has been applied at the current instruction
    Specified by:
      `setCallOtherCallOverrideRefApplied` in interface `PcodeOverride`

  - ### isCallOtherCallOverrideRefApplied

    public boolean isCallOtherCallOverrideRefApplied()
    Description copied from interface: `PcodeOverride`
    Returns a boolean indicating whether a callother call override has been applied at the current instruction
    Specified by:
      `isCallOtherCallOverrideRefApplied` in interface `PcodeOverride`
    Returns:
      has callother call override been applied

  - ### setCallOtherJumpOverrideRefApplied

    public void setCallOtherJumpOverrideRefApplied()
    Description copied from interface: `PcodeOverride`
    Register that a callother jump override has been applied at the current instruction
    Specified by:
      `setCallOtherJumpOverrideRefApplied` in interface `PcodeOverride`

  - ### isCallOtherJumpOverrideApplied

    public boolean isCallOtherJumpOverrideApplied()
    Description copied from interface: `PcodeOverride`
    Returns a boolean indicating whether a callother jump override has been applied at the current instruction
    Specified by:
      `isCallOtherJumpOverrideApplied` in interface `PcodeOverride`
    Returns:
      has callother jump override been applied

  - ### hasPotentialOverride

    public boolean hasPotentialOverride()
    Description copied from interface: `PcodeOverride`
    Returns a boolean indicating whether there are any primary overriding references at the current instruction
    Specified by:
      `hasPotentialOverride` in interface `PcodeOverride`
    Returns:
      are there primary overriding references