org.ow2.asmdex.instruction
Class InstructionFormat22C

java.lang.Object
  extended by org.ow2.asmdex.instruction.Instruction
      extended by org.ow2.asmdex.instruction.InstructionFormat22C
All Implemented Interfaces:
IIndexInstruction, ITwoRegistersInstruction

public class InstructionFormat22C
extends Instruction
implements ITwoRegistersInstruction, IIndexInstruction

Encodes and decodes an instruction built with the Dalvik format 22C. This Instruction can refer to a Type, or a Field. Use the constructor according to what this Instruction is used for.

Author:
Julien Névo

Field Summary
 
Fields inherited from class org.ow2.asmdex.instruction.Instruction
lineNumber, opcodeByte, opcodeHighOrderByte
 
Constructor Summary
InstructionFormat22C(int opcode, Field field, int registerA, int registerB)
          Constructor of the Instruction, if it holds a Field.
InstructionFormat22C(int opcode, java.lang.String type, int registerA, int registerB)
          Constructor of the Instruction, if it holds a Type.
 
Method Summary
 int getIndex()
          Returns the Index stored in this Instruction.
static int getIndexC(IDalvikValueReader reader)
          Returns the IndexC encoded where the Reader points.
 int getRegisterA()
          Gets the index of first register
static int getRegisterA(int opcode)
          Returns the RegisterA encoded in the given 16-bit opcode.
 int getRegisterB()
          Gets the index of second register
static int getRegisterB(int opcode)
          Returns the RegisterB encoded in the given 16-bit opcode.
 int getSize()
          Returns the size of the instruction in bytes.
static void skip(IDalvikValueReader reader)
          Skips the data of this Instruction.
 void write(ByteVector out, ConstantPool constantPool)
          Encodes the instruction, in the Dalvik format, to an output buffer.
 
Methods inherited from class org.ow2.asmdex.instruction.Instruction
getInstructionSizeInByte, getLineNumber, getOpcodeByte, getOpcodeHighOrderByte, setLineNumber, test4BitsLimit, test4BitsLimit
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

InstructionFormat22C

public InstructionFormat22C(int opcode,
                            java.lang.String type,
                            int registerA,
                            int registerB)
Constructor of the Instruction, if it holds a Type.

Parameters:
opcode - 8 or 16 bits opcode.
type - Type held by this Instruction.
registerA - the register this Instruction holds.
registerB - the register this Instruction holds.

InstructionFormat22C

public InstructionFormat22C(int opcode,
                            Field field,
                            int registerA,
                            int registerB)
Constructor of the Instruction, if it holds a Field.

Parameters:
opcode - 8 or 16 bits opcode.
field - Field related the index this Instruction is holding.
registerA - the register this Instruction holds.
registerB - the register this Instruction holds.
Method Detail

getRegisterA

public int getRegisterA()
Description copied from interface: ITwoRegistersInstruction
Gets the index of first register

Specified by:
getRegisterA in interface ITwoRegistersInstruction
Returns:
index

getRegisterB

public int getRegisterB()
Description copied from interface: ITwoRegistersInstruction
Gets the index of second register

Specified by:
getRegisterB in interface ITwoRegistersInstruction
Returns:
index

getIndex

public int getIndex()
Description copied from interface: IIndexInstruction
Returns the Index stored in this Instruction.

Specified by:
getIndex in interface IIndexInstruction
Returns:
the Index stored in this Instruction.

getRegisterA

public static int getRegisterA(int opcode)
Returns the RegisterA encoded in the given 16-bit opcode.

Returns:
the RegisterA.

getRegisterB

public static int getRegisterB(int opcode)
Returns the RegisterB encoded in the given 16-bit opcode.

Returns:
the RegisterB.

getIndexC

public static int getIndexC(IDalvikValueReader reader)
Returns the IndexC encoded where the Reader points. It must be performed only once after having read the opcode.

Parameters:
reader - reader pointing after the 16-bit opcode.
Returns:
the IndexC.

skip

public static void skip(IDalvikValueReader reader)
Skips the data of this Instruction.

Parameters:
reader - reader on the Instruction to parse, pointing after the 16-bit opcode.

getSize

public int getSize()
Description copied from class: Instruction
Returns the size of the instruction in bytes.

Specified by:
getSize in class Instruction
Returns:
the size of the instruction in bytes.

write

public void write(ByteVector out,
                  ConstantPool constantPool)
Description copied from class: Instruction
Encodes the instruction, in the Dalvik format, to an output buffer.

Specified by:
write in class Instruction
Parameters:
out - output buffer.
constantPool - the constantPool.