edu.wisc.cs.java
Class Opcode

java.lang.Object
  |
  +--edu.wisc.cs.java.Opcode

public final class Opcode
extends java.lang.Object

This class defines constants for all JVM opcodes. For more information on each individual opcode, please refer to a reference on the Java Virtual machine.


Field Summary
static int AALOAD
           
static int AASTORE
           
static int ACONST_NULL
           
static int ALOAD
           
static int ALOAD_0
           
static int ALOAD_1
           
static int ALOAD_2
           
static int ALOAD_3
           
static int ANEWARRAY
           
static int ARETURN
           
static int ARRAYLENGTH
           
static int ASTORE
           
static int ASTORE_0
           
static int ASTORE_1
           
static int ASTORE_2
           
static int ASTORE_3
           
static int ATHROW
           
static int BALOAD
           
static int BASTORE
           
static int BIPUSH
           
static int CALOAD
           
static int CASTORE
           
static int CHECKCAST
           
static int D2F
           
static int D2I
           
static int D2L
           
static int DADD
           
static int DALOAD
           
static int DASTORE
           
static int DCMPG
           
static int DCMPL
           
static int DCONST_0
           
static int DCONST_1
           
static int DDIV
           
static int DLOAD
           
static int DLOAD_0
           
static int DLOAD_1
           
static int DLOAD_2
           
static int DLOAD_3
           
static int DMUL
           
static int DNEG
           
static int DREM
           
static int DRETURN
           
static int DSTORE
           
static int DSTORE_0
           
static int DSTORE_1
           
static int DSTORE_2
           
static int DSTORE_3
           
static int DSUB
           
static int DUP
           
static int DUP_X1
           
static int DUP_X2
           
static int DUP2
           
static int DUP2_X1
           
static int DUP2_X2
           
static int F2D
           
static int F2I
           
static int F2L
           
static int FADD
           
static int FALOAD
           
static int FASTORE
           
static int FCMPG
           
static int FCMPL
           
static int FCONST_0
           
static int FCONST_1
           
static int FCONST_2
           
static int FDIV
           
static int FLOAD
           
static int FLOAD_0
           
static int FLOAD_1
           
static int FLOAD_2
           
static int FLOAD_3
           
static int FMUL
           
static int FNEG
           
static int FREM
           
static int FRETURN
           
static int FSTORE
           
static int FSTORE_0
           
static int FSTORE_1
           
static int FSTORE_2
           
static int FSTORE_3
           
static int FSUB
           
static int GETFIELD
           
static int GETSTATIC
           
static int GOTO
           
static int GOTO_W
           
static int I2B
           
static int I2C
           
static int I2D
           
static int I2F
           
static int I2L
           
static int I2S
           
static int IADD
           
static int IALOAD
           
static int IAND
           
static int IASTORE
           
static int ICONST_0
           
static int ICONST_1
           
static int ICONST_2
           
static int ICONST_3
           
static int ICONST_4
           
static int ICONST_5
           
static int ICONST_M1
           
static int IDIV
           
static int IF_ACMPEQ
           
static int IF_ACMPNE
           
static int IF_ICMPEQ
           
static int IF_ICMPGE
           
static int IF_ICMPGT
           
static int IF_ICMPLE
           
static int IF_ICMPLT
           
static int IF_ICMPNE
           
static int IFEQ
           
static int IFGE
           
static int IFGT
           
static int IFLE
           
static int IFLT
           
static int IFNE
           
static int IFNONNULL
           
static int IFNULL
           
static int IINC
           
static int ILOAD
           
static int ILOAD_0
           
static int ILOAD_1
           
static int ILOAD_2
           
static int ILOAD_3
           
static int IMUL
           
static int INEG
           
static int INSTANCEOF
           
static int INVOKEINTERFACE
           
static int INVOKESPECIAL
           
static int INVOKESTATIC
           
static int INVOKEVIRTUAL
           
static int IOR
           
static int IREM
           
static int IRETURN
           
static int ISHL
           
static int ISHR
           
static int ISTORE
           
static int ISTORE_0
           
static int ISTORE_1
           
static int ISTORE_2
           
static int ISTORE_3
           
static int ISUB
           
static int IUSHR
           
static int IXOR
           
static int JSR
           
static int JSR_W
           
static int L2D
           
static int L2F
           
static int L2I
           
static int LABEL
           
static int LADD
           
static int LALOAD
           
static int LAND
           
static int LASTORE
           
static int LCMP
           
static int LCONST_0
           
static int LCONST_1
           
static int LDC
           
static int LDC_W
           
static int LDC2_W
           
static int LDIV
           
static int LLOAD
           
static int LLOAD_0
           
static int LLOAD_1
           
static int LLOAD_2
           
static int LLOAD_3
           
static int LMUL
           
static int LNEG
           
static int LOOKUPSWITCH
           
static int LOR
           
static int LREM
           
static int LRETURN
           
static int LSHL
           
static int LSHR
           
static int LSTORE
           
static int LSTORE_0
           
static int LSTORE_1
           
static int LSTORE_2
           
static int LSTORE_3
           
static int LSUB
           
static int LUSHR
           
static int LXOR
           
static int MODIFIER
          This value is returned by the nParameterBytes method for the WIDE instruction.
static int MONITORENTER
           
static int MONITOREXIT
           
static int MULTIANEWARRAY
           
static int NEW
           
static int NEWARRAY
           
static int NOP
           
static int POP
           
static int POP2
           
static int PUTFIELD
           
static int PUTSTATIC
           
static int RET
           
static int RETURN
           
static int SALOAD
           
static int SASTORE
           
static int SIPUSH
           
static int SWAP
           
static int TABLESWITCH
           
static int VARIABLE_LENGTH
          This value is returned by the nParameterBytes method for the LOOKUPSWITCH and TABLESWITCH instructions.
static int WIDE
           
 
Method Summary
static java.lang.String getMnemonic(int op)
          Returns a string containing the mnemonic for any opcode.
static boolean hasConstRef(int opcode)
          Returns true if and only if the opcode's syntax requires a two-byte index into the constant pool.
static boolean isBranch(int opcode)
          Returns true if the bytecode is a branch, false otherwize.
static int nParameterBytes(int opcode, boolean wide)
          Returns the number of bytes beyond the opcode required for the given opcode.
static void u1ToByteArray(byte[] a, int u1)
          Packs an array of bytes with a JVM u1 type.
static void u2ToByteArray(byte[] a, int u2)
          Packs an array of bytes with a JVM u2 type.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

NOP

public static final int NOP

ACONST_NULL

public static final int ACONST_NULL

ICONST_M1

public static final int ICONST_M1

ICONST_0

public static final int ICONST_0

ICONST_1

public static final int ICONST_1

ICONST_2

public static final int ICONST_2

ICONST_3

public static final int ICONST_3

ICONST_4

public static final int ICONST_4

ICONST_5

public static final int ICONST_5

LCONST_0

public static final int LCONST_0

LCONST_1

public static final int LCONST_1

FCONST_0

public static final int FCONST_0

FCONST_1

public static final int FCONST_1

FCONST_2

public static final int FCONST_2

DCONST_0

public static final int DCONST_0

DCONST_1

public static final int DCONST_1

BIPUSH

public static final int BIPUSH

SIPUSH

public static final int SIPUSH

LDC

public static final int LDC

LDC_W

public static final int LDC_W

LDC2_W

public static final int LDC2_W

ILOAD

public static final int ILOAD

LLOAD

public static final int LLOAD

FLOAD

public static final int FLOAD

DLOAD

public static final int DLOAD

ALOAD

public static final int ALOAD

ILOAD_0

public static final int ILOAD_0

ILOAD_1

public static final int ILOAD_1

ILOAD_2

public static final int ILOAD_2

ILOAD_3

public static final int ILOAD_3

LLOAD_0

public static final int LLOAD_0

LLOAD_1

public static final int LLOAD_1

LLOAD_2

public static final int LLOAD_2

LLOAD_3

public static final int LLOAD_3

FLOAD_0

public static final int FLOAD_0

FLOAD_1

public static final int FLOAD_1

FLOAD_2

public static final int FLOAD_2

FLOAD_3

public static final int FLOAD_3

DLOAD_0

public static final int DLOAD_0

DLOAD_1

public static final int DLOAD_1

DLOAD_2

public static final int DLOAD_2

DLOAD_3

public static final int DLOAD_3

ALOAD_0

public static final int ALOAD_0

ALOAD_1

public static final int ALOAD_1

ALOAD_2

public static final int ALOAD_2

ALOAD_3

public static final int ALOAD_3

IALOAD

public static final int IALOAD

LALOAD

public static final int LALOAD

FALOAD

public static final int FALOAD

DALOAD

public static final int DALOAD

AALOAD

public static final int AALOAD

BALOAD

public static final int BALOAD

CALOAD

public static final int CALOAD

SALOAD

public static final int SALOAD

ISTORE

public static final int ISTORE

LSTORE

public static final int LSTORE

FSTORE

public static final int FSTORE

DSTORE

public static final int DSTORE

ASTORE

public static final int ASTORE

ISTORE_0

public static final int ISTORE_0

ISTORE_1

public static final int ISTORE_1

ISTORE_2

public static final int ISTORE_2

ISTORE_3

public static final int ISTORE_3

LSTORE_0

public static final int LSTORE_0

LSTORE_1

public static final int LSTORE_1

LSTORE_2

public static final int LSTORE_2

LSTORE_3

public static final int LSTORE_3

FSTORE_0

public static final int FSTORE_0

FSTORE_1

public static final int FSTORE_1

FSTORE_2

public static final int FSTORE_2

FSTORE_3

public static final int FSTORE_3

DSTORE_0

public static final int DSTORE_0

DSTORE_1

public static final int DSTORE_1

DSTORE_2

public static final int DSTORE_2

DSTORE_3

public static final int DSTORE_3

ASTORE_0

public static final int ASTORE_0

ASTORE_1

public static final int ASTORE_1

ASTORE_2

public static final int ASTORE_2

ASTORE_3

public static final int ASTORE_3

IASTORE

public static final int IASTORE

LASTORE

public static final int LASTORE

FASTORE

public static final int FASTORE

DASTORE

public static final int DASTORE

AASTORE

public static final int AASTORE

BASTORE

public static final int BASTORE

CASTORE

public static final int CASTORE

SASTORE

public static final int SASTORE

POP

public static final int POP

POP2

public static final int POP2

DUP

public static final int DUP

DUP_X1

public static final int DUP_X1

DUP_X2

public static final int DUP_X2

DUP2

public static final int DUP2

DUP2_X1

public static final int DUP2_X1

DUP2_X2

public static final int DUP2_X2

SWAP

public static final int SWAP

IADD

public static final int IADD

LADD

public static final int LADD

FADD

public static final int FADD

DADD

public static final int DADD

ISUB

public static final int ISUB

LSUB

public static final int LSUB

FSUB

public static final int FSUB

DSUB

public static final int DSUB

IMUL

public static final int IMUL

LMUL

public static final int LMUL

FMUL

public static final int FMUL

DMUL

public static final int DMUL

IDIV

public static final int IDIV

LDIV

public static final int LDIV

FDIV

public static final int FDIV

DDIV

public static final int DDIV

IREM

public static final int IREM

LREM

public static final int LREM

FREM

public static final int FREM

DREM

public static final int DREM

INEG

public static final int INEG

LNEG

public static final int LNEG

FNEG

public static final int FNEG

DNEG

public static final int DNEG

ISHL

public static final int ISHL

LSHL

public static final int LSHL

ISHR

public static final int ISHR

LSHR

public static final int LSHR

IUSHR

public static final int IUSHR

LUSHR

public static final int LUSHR

IAND

public static final int IAND

LAND

public static final int LAND

IOR

public static final int IOR

LOR

public static final int LOR

IXOR

public static final int IXOR

LXOR

public static final int LXOR

IINC

public static final int IINC

I2L

public static final int I2L

I2F

public static final int I2F

I2D

public static final int I2D

L2I

public static final int L2I

L2F

public static final int L2F

L2D

public static final int L2D

F2I

public static final int F2I

F2L

public static final int F2L

F2D

public static final int F2D

D2I

public static final int D2I

D2L

public static final int D2L

D2F

public static final int D2F

I2B

public static final int I2B

I2C

public static final int I2C

I2S

public static final int I2S

LCMP

public static final int LCMP

FCMPL

public static final int FCMPL

FCMPG

public static final int FCMPG

DCMPL

public static final int DCMPL

DCMPG

public static final int DCMPG

IFEQ

public static final int IFEQ

IFNE

public static final int IFNE

IFLT

public static final int IFLT

IFGE

public static final int IFGE

IFGT

public static final int IFGT

IFLE

public static final int IFLE

IF_ICMPEQ

public static final int IF_ICMPEQ

IF_ICMPNE

public static final int IF_ICMPNE

IF_ICMPLT

public static final int IF_ICMPLT

IF_ICMPGT

public static final int IF_ICMPGT

IF_ICMPLE

public static final int IF_ICMPLE

IF_ICMPGE

public static final int IF_ICMPGE

IF_ACMPEQ

public static final int IF_ACMPEQ

IF_ACMPNE

public static final int IF_ACMPNE

GOTO

public static final int GOTO

JSR

public static final int JSR

RET

public static final int RET

TABLESWITCH

public static final int TABLESWITCH

LOOKUPSWITCH

public static final int LOOKUPSWITCH

IRETURN

public static final int IRETURN

LRETURN

public static final int LRETURN

FRETURN

public static final int FRETURN

DRETURN

public static final int DRETURN

ARETURN

public static final int ARETURN

RETURN

public static final int RETURN

GETSTATIC

public static final int GETSTATIC

PUTSTATIC

public static final int PUTSTATIC

GETFIELD

public static final int GETFIELD

PUTFIELD

public static final int PUTFIELD

INVOKEVIRTUAL

public static final int INVOKEVIRTUAL

INVOKESPECIAL

public static final int INVOKESPECIAL

INVOKESTATIC

public static final int INVOKESTATIC

INVOKEINTERFACE

public static final int INVOKEINTERFACE

NEW

public static final int NEW

NEWARRAY

public static final int NEWARRAY

ANEWARRAY

public static final int ANEWARRAY

ARRAYLENGTH

public static final int ARRAYLENGTH

ATHROW

public static final int ATHROW

CHECKCAST

public static final int CHECKCAST

INSTANCEOF

public static final int INSTANCEOF

MONITORENTER

public static final int MONITORENTER

MONITOREXIT

public static final int MONITOREXIT

WIDE

public static final int WIDE

MULTIANEWARRAY

public static final int MULTIANEWARRAY

IFNULL

public static final int IFNULL

IFNONNULL

public static final int IFNONNULL

GOTO_W

public static final int GOTO_W

JSR_W

public static final int JSR_W

LABEL

public static final int LABEL

VARIABLE_LENGTH

public static final int VARIABLE_LENGTH
This value is returned by the nParameterBytes method for the LOOKUPSWITCH and TABLESWITCH instructions.

MODIFIER

public static final int MODIFIER
This value is returned by the nParameterBytes method for the WIDE instruction.
Method Detail

hasConstRef

public static boolean hasConstRef(int opcode)
Returns true if and only if the opcode's syntax requires a two-byte index into the constant pool.

isBranch

public static boolean isBranch(int opcode)
Returns true if the bytecode is a branch, false otherwize. This only considers branches with a single target, conditional or unconditional. lookupswitch and tableswitch instructions are handled seperately because they are of variable length.
Parameters:
opcode - an integer representing a Java bytecode.
Returns:
true if the bytecode is a branch, false otherwize.

nParameterBytes

public static int nParameterBytes(int opcode,
                                  boolean wide)
Returns the number of bytes beyond the opcode required for the given opcode.
Parameters:
opcode - the opcode to look up.
wide - true if the instruction has the wide modifier, false otherwise.
Returns:
the number of bytes neede to represent the instruction parameters.
Throws:
InvalidOpcodeException - if the opcode parameter is unrecognized.

getMnemonic

public static java.lang.String getMnemonic(int op)
Returns a string containing the mnemonic for any opcode.
Parameters:
opcode - the opcode to look up.
Returns:
a string containing the mnemonic for this instruction.
Throws:
InvalidOpcodeException - if the opcode parameter is unrecognized.

u1ToByteArray

public static void u1ToByteArray(byte[] a,
                                 int u1)
Packs an array of bytes with a JVM u1 type.
Parameters:
a - an array of a single byte.
u1 - the integer value to pack into a.

u2ToByteArray

public static void u2ToByteArray(byte[] a,
                                 int u2)
Packs an array of bytes with a JVM u2 type.
Parameters:
a - an array of two bytes.
u2 - the integer value to pack into a.