// $Id: op.h,v 1.3 1999/01/25 20:00:31 shields Exp $
copyright notice

#ifndef op_INCLUDED
#define op_INCLUDED

#include "config.h"
#include "tuple.h"

// code dealing with describing and listing byte code
 enum operators {
    OP_NOP=0x00,
    OP_ACONST_NULL=0x01,
    OP_ICONST_M1=0x02,
    OP_ICONST_0=0x03,
    OP_ICONST_1=0x04,
    OP_ICONST_2=0x05,
    OP_ICONST_3=0x06,
    OP_ICONST_4=0x07,
    OP_ICONST_5=0x08,
    OP_LCONST_0=0x09,
    OP_LCONST_1=0x0a,
    OP_FCONST_0=0x0b,
    OP_FCONST_1=0x0c,
    OP_FCONST_2=0x0d,
    OP_DCONST_0=0x0e,
    OP_DCONST_1=0x0f,
    OP_BIPUSH=0x10,
    OP_SIPUSH=0x11,
    OP_LDC=0x12,
    OP_LDC_W=0x13,
    OP_LDC2_W=0x14,
    OP_ILOAD=0x15,
    OP_LLOAD=0x16,
    OP_FLOAD=0x17,
    OP_DLOAD=0x18,
    OP_ALOAD=0x19,
    OP_ILOAD_0=0x1a,
    OP_ILOAD_1=0x1b,
    OP_ILOAD_2=0x1c,
    OP_ILOAD_3=0x1d,
    OP_LLOAD_0=0x1e,
    OP_LLOAD_1=0x1f,
    OP_LLOAD_2=0x20,
    OP_LLOAD_3=0x21,
    OP_FLOAD_0=0x22,
    OP_FLOAD_1=0x23,
    OP_FLOAD_2=0x24,
    OP_FLOAD_3=0x25,
    OP_DLOAD_0=0x26,
    OP_DLOAD_1=0x27,
    OP_DLOAD_2=0x28,
    OP_DLOAD_3=0x29,
    OP_ALOAD_0=0x2a,
    OP_ALOAD_1=0x2b,
    OP_ALOAD_2=0x2c,
    OP_ALOAD_3=0x2d,
    OP_IALOAD=0x2e,
    OP_LALOAD=0x2f,
    OP_FALOAD=0x30,
    OP_DALOAD=0x31,
    OP_AALOAD=0x32,
    OP_BALOAD=0x33,
    OP_CALOAD=0x34,
    OP_SALOAD=0x35,
    OP_ISTORE=0x36,
    OP_LSTORE=0x37,
    OP_FSTORE=0x38,
    OP_DSTORE=0x39,
    OP_ASTORE=0x3a,
    OP_ISTORE_0=0x3b,
    OP_ISTORE_1=0x3c,
    OP_ISTORE_2=0x3d,
    OP_ISTORE_3=0x3e,
    OP_LSTORE_0=0x3f,
    OP_LSTORE_1=0x40,
    OP_LSTORE_2=0x41,
    OP_LSTORE_3=0x42,
    OP_FSTORE_0=0x43,
    OP_FSTORE_1=0x44,
    OP_FSTORE_2=0x45,
    OP_FSTORE_3=0x46,
    OP_DSTORE_0=0x47,
    OP_DSTORE_1=0x48,
    OP_DSTORE_2=0x49,
    OP_DSTORE_3=0x4a,
    OP_ASTORE_0=0x4b,
    OP_ASTORE_1=0x4c,
    OP_ASTORE_2=0x4d,
    OP_ASTORE_3=0x4e,
    OP_IASTORE=0x4f,
    OP_LASTORE=0x50,
    OP_FASTORE=0x51,
    OP_DASTORE=0x52,
    OP_AASTORE=0x53,
    OP_BASTORE=0x54,
    OP_CASTORE=0x55,
    OP_SASTORE=0x56,
    OP_POP=0x57,
    OP_POP2=0x58,
    OP_DUP=0x59,
    OP_DUP_X1=0x5a,
    OP_DUP_X2=0x5b,
    OP_DUP2=0x5c,
    OP_DUP2_X1=0x5d,
    OP_DUP2_X2=0x5e,
    OP_SWAP=0x5f,
    OP_IADD=0x60,
    OP_LADD=0x61,
    OP_FADD=0x62,
    OP_DADD=0x63,
    OP_ISUB=0x64,
    OP_LSUB=0x65,
    OP_FSUB=0x66,
    OP_DSUB=0x67,
    OP_IMUL=0x68,
    OP_LMUL=0x69,
    OP_FMUL=0x6a,
    OP_DMUL=0x6b,
    OP_IDIV=0x6c,
    OP_LDIV=0x6d,
    OP_FDIV=0x6e,
    OP_DDIV=0x6f,
    OP_IREM=0x70,
    OP_LREM=0x71,
    OP_FREM=0x72,
    OP_DREM=0x73,
    OP_INEG=0x74,
    OP_LNEG=0x75,
    OP_FNEG=0x76,
    OP_DNEG=0x77,
    OP_ISHL=0x78,
    OP_LSHL=0x79,
    OP_ISHR=0x7a,
    OP_LSHR=0x7b,
    OP_IUSHR=0x7c,
    OP_LUSHR=0x7d,
    OP_IAND=0x7e,
    OP_LAND=0x7f,
    OP_IOR=0x80,
    OP_LOR=0x81,
    OP_IXOR=0x82,
    OP_LXOR=0x83,
    OP_IINC=0x84,
    OP_I2L=0x85,
    OP_I2F=0x86,
    OP_I2D=0x87,
    OP_L2I=0x88,
    OP_L2F=0x89,
    OP_L2D=0x8a,
    OP_F2I=0x8b,
    OP_F2L=0x8c,
    OP_F2D=0x8d,
    OP_D2I=0x8e,
    OP_D2L=0x8f,
    OP_D2F=0x90,
    OP_I2B=0x91,
    OP_I2C=0x92,
    OP_I2S=0x93,
    OP_LCMP=0x94,
    OP_FCMPL=0x95,
    OP_FCMPG=0x96,
    OP_DCMPL=0x97,
    OP_DCMPG=0x98,
    OP_IFEQ=0x99,
    OP_IFNE=0x9a,
    OP_IFLT=0x9b,
    OP_IFGE=0x9c,
    OP_IFGT=0x9d,
    OP_IFLE=0x9e,
    OP_IF_ICMPEQ=0x9f,
    OP_IF_ICMPNE=0xa0,
    OP_IF_ICMPLT=0xa1,
    OP_IF_ICMPGE=0xa2,
    OP_IF_ICMPGT=0xa3,
    OP_IF_ICMPLE=0xa4,
    OP_IF_ACMPEQ=0xa5,
    OP_IF_ACMPNE=0xa6,
    OP_GOTO=0xa7,
    OP_JSR=0xa8,
    OP_RET=0xa9,
    OP_TABLESWITCH=0xaa,
    OP_LOOKUPSWITCH=0xab,
    OP_IRETURN=0xac,
    OP_LRETURN=0xad,
    OP_FRETURN=0xae,
    OP_DRETURN=0xaf,
    OP_ARETURN=0xb0,
    OP_RETURN=0xb1,
    OP_GETSTATIC=0xb2,
    OP_PUTSTATIC=0xb3,
    OP_GETFIELD=0xb4,
    OP_PUTFIELD=0xb5,
    OP_INVOKEVIRTUAL=0xb6,
    OP_INVOKENONVIRTUAL=0xb7,
    OP_INVOKESTATIC=0xb8,
    OP_INVOKEINTERFACE=0xb9,
    OP_XXXUNUSEDXXX=0xba,
    OP_NEW=0xbb,
    OP_NEWARRAY=0xbc,
    OP_ANEWARRAY=0xbd,
    OP_ARRAYLENGTH=0xbe,
    OP_ATHROW=0xbf,
    OP_CHECKCAST=0xc0,
    OP_INSTANCEOF=0xc1,
    OP_MONITORENTER=0xc2,
    OP_MONITOREXIT=0xc3,
    OP_WIDE=0xc4,
    OP_MULTIANEWARRAY=0xc5,
    OP_IFNULL=0xc6,
    OP_IFNONNULL=0xc7,
    OP_GOTO_W=0xc8,
    OP_JSR_W=0xc9,
    OP_SOFTWARE=0xfe,
    OP_HARDWARE=0xff
};
extern void opdesc (int opc, char **name, char **desc);

#include  "class.h"
extern void  opdmp(Tuple<cp_info *>& constant_pool, Tuple<u1>& code);

#endif