com.android.dx.dex.code
Class TargetInsn

java.lang.Object
  extended by com.android.dx.dex.code.DalvInsn
      extended by com.android.dx.dex.code.FixedSizeInsn
          extended by com.android.dx.dex.code.TargetInsn

public final class TargetInsn
extends FixedSizeInsn

Instruction which has a single branch target.


Constructor Summary
TargetInsn(Dop opcode, SourcePosition position, RegisterSpecList registers, CodeAddress target)
          Constructs an instance.
 
Method Summary
protected  String argString()
          Gets the string form for any arguments to this instance.
 CodeAddress getTarget()
          Gets the unique branch target of this instruction.
 int getTargetAddress()
          Gets the target address of this instruction.
 int getTargetOffset()
          Gets the branch offset of this instruction.
 boolean hasTargetOffset()
          Returns whether the target offset is known.
 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.
 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.
 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.
 
Methods inherited from class com.android.dx.dex.code.FixedSizeInsn
codeSize, listingString0, withRegisterOffset, writeTo
 
Methods inherited from class com.android.dx.dex.code.DalvInsn
expandedPrefix, expandedSuffix, expandedVersion, getAddress, getLowRegVersion, getMinimumRegisterRequirement, getNextAddress, getOpcode, getPosition, getRegisters, hasAddress, hasResult, identifierString, listingString, makeMove, setAddress, toString, withMapper
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

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 Detail

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


Copyright © 2015. All rights reserved.