Class TargetInsn


public final class TargetInsn extends FixedSizeInsn
Instruction which has a single branch target.
  • Constructor Details

    • TargetInsn

      public TargetInsn(Dop opcode, SourcePosition position, RegisterSpecList registers, CodeAddress target)
      Constructs an instance. The output address of this instance is initially unknown (-1), and the target is initially null.
      Parameters:
      opcode - the opcode; one of the constants from Dops
      position - non-null; source position
      registers - non-null; register list, including a result register if appropriate (that is, registers may be either ins or outs)
      target - non-null; the branch target
  • Method Details

    • withOpcode

      public DalvInsn withOpcode(Dop opcode)
      Returns an instance that is just like this one, except that its opcode is replaced by the one given, and its address is reset.
      Specified by:
      withOpcode in class DalvInsn
      Parameters:
      opcode - non-null; the new opcode
      Returns:
      non-null; an appropriately-constructed instance
    • withRegisters

      public DalvInsn withRegisters(RegisterSpecList registers)
      Returns an instance that is just like this one, except that the register list is replaced by the given one, and its address is reset.
      Specified by:
      withRegisters in class DalvInsn
      Parameters:
      registers - non-null; new register list
      Returns:
      non-null; an appropriately-constructed instance
    • withNewTargetAndReversed

      public TargetInsn withNewTargetAndReversed(CodeAddress target)
      Returns an instance that is just like this one, except that its opcode has the opposite sense (as a test; e.g. a lt test becomes a ge), and its branch target is replaced by the one given, and all set-once values associated with the class (such as its address) are reset.
      Parameters:
      target - non-null; the new branch target
      Returns:
      non-null; an appropriately-constructed instance
    • getTarget

      public CodeAddress getTarget()
      Gets the unique branch target of this instruction.
      Returns:
      non-null; the branch target
    • getTargetAddress

      public int getTargetAddress()
      Gets the target address of this instruction. This is only valid to call if the target instruction has been assigned an address, and it is merely a convenient shorthand for getTarget().getAddress().
      Returns:
      >= 0; the target address
    • getTargetOffset

      public int getTargetOffset()
      Gets the branch offset of this instruction. This is only valid to call if both this and the target instruction each has been assigned an address, and it is merely a convenient shorthand for getTargetAddress() - getAddress().
      Returns:
      the branch offset
    • hasTargetOffset

      public boolean hasTargetOffset()
      Returns whether the target offset is known.
      Returns:
      true if the target offset is known or false if not
    • argString

      protected String argString()
      Gets the string form for any arguments to this instance. Subclasses must override this.
      Specified by:
      argString in class DalvInsn
      Returns:
      null-ok; the string version of any arguments or null if there are none