001: /* -*- Mode: java; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 4 -*-
002: *
003: * ***** BEGIN LICENSE BLOCK *****
004: * Version: MPL 1.1/GPL 2.0
005: *
006: * The contents of this file are subject to the Mozilla Public License Version
007: * 1.1 (the "License"); you may not use this file except in compliance with
008: * the License. You may obtain a copy of the License at
009: * http://www.mozilla.org/MPL/
010: *
011: * Software distributed under the License is distributed on an "AS IS" basis,
012: * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
013: * for the specific language governing rights and limitations under the
014: * License.
015: *
016: * The Original Code is Rhino code, released
017: * May 6, 1999.
018: *
019: * The Initial Developer of the Original Code is
020: * Netscape Communications Corporation.
021: * Portions created by the Initial Developer are Copyright (C) 1997-1999
022: * the Initial Developer. All Rights Reserved.
023: *
024: * Contributor(s):
025: * Roger Lawrence
026: *
027: * Alternatively, the contents of this file may be used under the terms of
028: * the GNU General Public License Version 2 or later (the "GPL"), in which
029: * case the provisions of the GPL are applicable instead of those above. If
030: * you wish to allow use of your version of this file only under the terms of
031: * the GPL and not to allow others to use your version of this file under the
032: * MPL, indicate your decision by deleting the provisions above and replacing
033: * them with the notice and other provisions required by the GPL. If you do
034: * not delete the provisions above, a recipient may use your version of this
035: * file under either the MPL or the GPL.
036: *
037: * ***** END LICENSE BLOCK ***** */
038:
039: package org.mozilla.classfile;
040:
041: /**
042: * This class provides opcode values expected by the JVM in Java class files.
043: *
044: * It also provides tables for internal use by the ClassFileWriter.
045: *
046: * @author Roger Lawrence
047: */
048: public class ByteCode {
049:
050: /**
051: * The byte opcodes defined by the Java Virtual Machine.
052: */
053: public static final int NOP = 0x00, ACONST_NULL = 0x01,
054: ICONST_M1 = 0x02, ICONST_0 = 0x03, ICONST_1 = 0x04,
055: ICONST_2 = 0x05, ICONST_3 = 0x06, ICONST_4 = 0x07,
056: ICONST_5 = 0x08, LCONST_0 = 0x09, LCONST_1 = 0x0A,
057: FCONST_0 = 0x0B, FCONST_1 = 0x0C, FCONST_2 = 0x0D,
058: DCONST_0 = 0x0E, DCONST_1 = 0x0F, BIPUSH = 0x10,
059: SIPUSH = 0x11, LDC = 0x12, LDC_W = 0x13, LDC2_W = 0x14,
060: ILOAD = 0x15, LLOAD = 0x16, FLOAD = 0x17, DLOAD = 0x18,
061: ALOAD = 0x19, ILOAD_0 = 0x1A, ILOAD_1 = 0x1B,
062: ILOAD_2 = 0x1C, ILOAD_3 = 0x1D, LLOAD_0 = 0x1E,
063: LLOAD_1 = 0x1F, LLOAD_2 = 0x20, LLOAD_3 = 0x21,
064: FLOAD_0 = 0x22, FLOAD_1 = 0x23, FLOAD_2 = 0x24,
065: FLOAD_3 = 0x25, DLOAD_0 = 0x26, DLOAD_1 = 0x27,
066: DLOAD_2 = 0x28, DLOAD_3 = 0x29, ALOAD_0 = 0x2A,
067: ALOAD_1 = 0x2B, ALOAD_2 = 0x2C, ALOAD_3 = 0x2D,
068: IALOAD = 0x2E, LALOAD = 0x2F, FALOAD = 0x30, DALOAD = 0x31,
069: AALOAD = 0x32, BALOAD = 0x33, CALOAD = 0x34, SALOAD = 0x35,
070: ISTORE = 0x36, LSTORE = 0x37, FSTORE = 0x38, DSTORE = 0x39,
071: ASTORE = 0x3A, ISTORE_0 = 0x3B, ISTORE_1 = 0x3C,
072: ISTORE_2 = 0x3D, ISTORE_3 = 0x3E, LSTORE_0 = 0x3F,
073: LSTORE_1 = 0x40, LSTORE_2 = 0x41, LSTORE_3 = 0x42,
074: FSTORE_0 = 0x43, FSTORE_1 = 0x44, FSTORE_2 = 0x45,
075: FSTORE_3 = 0x46, DSTORE_0 = 0x47, DSTORE_1 = 0x48,
076: DSTORE_2 = 0x49, DSTORE_3 = 0x4A, ASTORE_0 = 0x4B,
077: ASTORE_1 = 0x4C, ASTORE_2 = 0x4D, ASTORE_3 = 0x4E,
078: IASTORE = 0x4F, LASTORE = 0x50, FASTORE = 0x51,
079: DASTORE = 0x52, AASTORE = 0x53, BASTORE = 0x54,
080: CASTORE = 0x55, SASTORE = 0x56, POP = 0x57, POP2 = 0x58,
081: DUP = 0x59, DUP_X1 = 0x5A, DUP_X2 = 0x5B, DUP2 = 0x5C,
082: DUP2_X1 = 0x5D, DUP2_X2 = 0x5E, SWAP = 0x5F, IADD = 0x60,
083: LADD = 0x61, FADD = 0x62, DADD = 0x63, ISUB = 0x64,
084: LSUB = 0x65, FSUB = 0x66, DSUB = 0x67, IMUL = 0x68,
085: LMUL = 0x69, FMUL = 0x6A, DMUL = 0x6B, IDIV = 0x6C,
086: LDIV = 0x6D, FDIV = 0x6E, DDIV = 0x6F, IREM = 0x70,
087: LREM = 0x71, FREM = 0x72, DREM = 0x73, INEG = 0x74,
088: LNEG = 0x75, FNEG = 0x76, DNEG = 0x77, ISHL = 0x78,
089: LSHL = 0x79, ISHR = 0x7A, LSHR = 0x7B, IUSHR = 0x7C,
090: LUSHR = 0x7D, IAND = 0x7E, LAND = 0x7F, IOR = 0x80,
091: LOR = 0x81, IXOR = 0x82, LXOR = 0x83, IINC = 0x84,
092: I2L = 0x85, I2F = 0x86, I2D = 0x87, L2I = 0x88, L2F = 0x89,
093: L2D = 0x8A, F2I = 0x8B, F2L = 0x8C, F2D = 0x8D, D2I = 0x8E,
094: D2L = 0x8F, D2F = 0x90, I2B = 0x91, I2C = 0x92, I2S = 0x93,
095: LCMP = 0x94, FCMPL = 0x95, FCMPG = 0x96, DCMPL = 0x97,
096: DCMPG = 0x98, IFEQ = 0x99, IFNE = 0x9A, IFLT = 0x9B,
097: IFGE = 0x9C, IFGT = 0x9D, IFLE = 0x9E, IF_ICMPEQ = 0x9F,
098: IF_ICMPNE = 0xA0, IF_ICMPLT = 0xA1, IF_ICMPGE = 0xA2,
099: IF_ICMPGT = 0xA3, IF_ICMPLE = 0xA4, IF_ACMPEQ = 0xA5,
100: IF_ACMPNE = 0xA6, GOTO = 0xA7, JSR = 0xA8, RET = 0xA9,
101: TABLESWITCH = 0xAA, LOOKUPSWITCH = 0xAB, IRETURN = 0xAC,
102: LRETURN = 0xAD, FRETURN = 0xAE, DRETURN = 0xAF,
103: ARETURN = 0xB0, RETURN = 0xB1, GETSTATIC = 0xB2,
104: PUTSTATIC = 0xB3, GETFIELD = 0xB4, PUTFIELD = 0xB5,
105: INVOKEVIRTUAL = 0xB6, INVOKESPECIAL = 0xB7,
106: INVOKESTATIC = 0xB8, INVOKEINTERFACE = 0xB9, NEW = 0xBB,
107: NEWARRAY = 0xBC, ANEWARRAY = 0xBD, ARRAYLENGTH = 0xBE,
108: ATHROW = 0xBF, CHECKCAST = 0xC0, INSTANCEOF = 0xC1,
109: MONITORENTER = 0xC2, MONITOREXIT = 0xC3, WIDE = 0xC4,
110: MULTIANEWARRAY = 0xC5, IFNULL = 0xC6, IFNONNULL = 0xC7,
111: GOTO_W = 0xC8, JSR_W = 0xC9, BREAKPOINT = 0xCA,
112:
113: IMPDEP1 = 0xFE, IMPDEP2 = 0xFF;
114:
115: /**
116: * Types for the NEWARRAY opcode.
117: */
118: public static final byte T_BOOLEAN = 4, T_CHAR = 5, T_FLOAT = 6,
119: T_DOUBLE = 7, T_BYTE = 8, T_SHORT = 9, T_INT = 10,
120: T_LONG = 11;
121:
122: }
|