mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			315 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			Modula-2
		
	
	
	
			
		
		
	
	
			315 lines
		
	
	
		
			14 KiB
		
	
	
	
		
			Modula-2
		
	
	
	
| /* Table of opcodes for byte codes defined by the Java(TM) virtual
 | |
|    machine specification.	
 | |
|    Copyright (C) 1998-2013 Free Software Foundation, Inc.
 | |
| 
 | |
| This file is part of GCC.
 | |
| 
 | |
| GCC is free software; you can redistribute it and/or modify
 | |
| it under the terms of the GNU General Public License as published by
 | |
| the Free Software Foundation; either version 3, or (at your option)
 | |
| any later version.
 | |
| 
 | |
| GCC is distributed in the hope that it will be useful,
 | |
| but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | |
| GNU General Public License for more details.
 | |
| 
 | |
| You should have received a copy of the GNU General Public License
 | |
| along with GCC; see the file COPYING3.  If not see
 | |
| <http://www.gnu.org/licenses/>.
 | |
| 
 | |
| Java and all Java-based marks are trademarks or registered trademarks
 | |
| of Sun Microsystems, Inc. in the United States and other countries.
 | |
| The Free Software Foundation is independent of Sun Microsystems, Inc.
 | |
| 
 | |
| Written by Per Bothner <bothner@cygnus.com>, February 1996.
 | |
| */
 | |
| 
 | |
| /* JAVAOP (OPNAME, OPCODE, OPKIND, OPERAND_TYPE, OPERAND_VALUE), where:
 | |
| 	OPNAME is the name of the opcode.
 | |
| 	OPCODE is the 1-byte opcode value.
 | |
| 	OPKIND is the kind of operation.
 | |
| 	OPERAND_TYPE is the type operands affected.
 | |
| 	OPERAND_VALUE tells where to get the value.  (Its meaning
 | |
| 	  depends on OPKIND.) */
 | |
| 
 | |
| /* Various macro used in OPERAND_VALUE:
 | |
| IMMEDIATE_s1:  An immediate signed 1-byte value in the byte-code stream.
 | |
| IMMEDIATE_s2:  An immediate signed 2-byte value in the byte-code stream.
 | |
| IMMEDIATE_u1:  An immediate unsigned 1-byte value in the byte-code stream.
 | |
| IMMEDIATE_u2:  An immediate unsigned 2-byte value in the byte-code stream.
 | |
| 
 | |
| CONST_INDEX_1:  An immediate unsigned 1-byte index into the constant pool.
 | |
| CONST_INDEX_2:  An immediate unsigned 2-byte index into the constant pool.
 | |
| */
 | |
| 
 | |
| /* More specifically, this is the meaning of the various OPKINDs:
 | |
| 
 | |
| BINOP:	binary operation
 | |
| 	OPERAND_TYPE is the argument type.
 | |
| 	OPERAND_VALUE is PLUS, MINUS, MULT, TRUNC_DIV, RDIV, REM,
 | |
| 	  LSHIFT, RSHIFT, URSHIFT, BIT_AND, BIT_IOR, BIT_XOR,
 | |
| 	  COMPARE, COMPARE_L, or COMPARE_G.
 | |
| 
 | |
| UNOP:	unary operation
 | |
| 	OPERAND_TYPE is the argument type.
 | |
| 	OPERAND_VALUE is NEG.
 | |
| 
 | |
| INVOKE: invoke operations
 | |
| 	OPERAND_TYPE is VIRTUAL, SPECIAL, STATIC, or INTERFACE.
 | |
| 	OPERAND_VALUE is 1 if interface, 0 otherwise.
 | |
| 
 | |
| OBJECT:	new, checkcast, instanceof
 | |
| 	OPERAND_TYPE is PTR.
 | |
| 	OPERAND_VALUE is NEW, CHECKCAST, or INSTANCEOF.
 | |
| 
 | |
| BRANCH: branch operations
 | |
| 	OPERAND_TYPE is GOTO, CALL, or RETURN.
 | |
| 	OPERAND_VALUE is IMMEDIATE_s2, VAR_INDEX_1, IMMEDIATE_s4,
 | |
| 	  or VAR_INDEX_2.
 | |
| 
 | |
| STACK:  Various stack operations.
 | |
| 
 | |
| PUSHC:  Push a constant onto the operand stack.
 | |
| 	OPERAND_VALUE maybe be the value to push,
 | |
| 	or IMMEDIATE_s1 or IMMEDIATE_s2 if the constant is immediate,
 | |
| 	or CONST_INDEX_1 or CONST_INDEX_2 for a constant pool index.
 | |
| 
 | |
| LOAD: Push a value from a local variable onto the operand stack.
 | |
| 	OPERAND_VALUE is the index of the local variable in the current
 | |
| 	Java frame.  It can be a literal, or IMMEDIATE_i2.
 | |
| 
 | |
| CONVERT: Convert top of stack value from one type to another.
 | |
| 	OPERAND_TYPE is the argument type.
 | |
| 	OPERAND_VALUE is the result type.
 | |
| 
 | |
| TEST: Compares an integer (popped from the stack) against zero.
 | |
| 	If the test (in OPERAND_VALUE) is true, goto a relative
 | |
| 	offset given by the next two bytes.
 | |
| 
 | |
| COND:  Compares two values (popped from the stack) against each other.
 | |
| 	If the test (in OPERAND_VALUE) is true, goto a relative
 | |
| 	offset given by the next two bytes.
 | |
| 
 | |
| SWITCH:
 | |
| 	OPERAND_VALUE is either TABLE or LOOKUP.
 | |
| 
 | |
| ARRAY:
 | |
| 	OPERAND_VALUE is LOAD, STORE, LENGTH, or NEW.
 | |
| 
 | |
| FIELD: Extracts from or stores into a field.
 | |
| 	OPERAND_TYPE is 1 for a static field, 0 for a regular field.
 | |
| 	OPERAND_VALUE is 1 for a put operation, 0 for a get operation.
 | |
| 
 | |
| SPECIAL:
 | |
| 	Random bunch of opcodes.
 | |
| 
 | |
| */
 | |
| 
 | |
| JAVAOP (nop,             0, STACK,   POP,    0)
 | |
| JAVAOP (aconst_null,     1, PUSHC,   PTR,    0)
 | |
| JAVAOP (iconst_m1,       2, PUSHC,   INT,    -1)
 | |
| JAVAOP (iconst_0,        3, PUSHC,   INT,    0)
 | |
| JAVAOP (iconst_1,        4, PUSHC,   INT,    1)
 | |
| JAVAOP (iconst_2,        5, PUSHC,   INT,    2)
 | |
| JAVAOP (iconst_3,        6, PUSHC,   INT,    3)
 | |
| JAVAOP (iconst_4,        7, PUSHC,   INT,    4)
 | |
| JAVAOP (iconst_5,        8, PUSHC,   INT,    5)
 | |
| JAVAOP (lconst_0,        9, PUSHC,   LONG,   0)
 | |
| JAVAOP (lconst_1,       10, PUSHC,   LONG,   1)
 | |
| JAVAOP (fconst_0,       11, PUSHC,   FLOAT,  0)
 | |
| JAVAOP (fconst_1,       12, PUSHC,   FLOAT,  1)
 | |
| JAVAOP (fconst_2,       13, PUSHC,   FLOAT,  2)
 | |
| JAVAOP (dconst_0,       14, PUSHC,   DOUBLE, 0)
 | |
| JAVAOP (dconst_1,       15, PUSHC,   DOUBLE, 1)
 | |
| JAVAOP (bipush,         16, PUSHC,   INT,    IMMEDIATE_s1)
 | |
| JAVAOP (sipush,         17, PUSHC,   INT,    IMMEDIATE_s2)
 | |
| JAVAOP (ldc,            18, PUSHC,   INT,    CONST_INDEX_1)
 | |
| JAVAOP (ldc_w,          19, PUSHC,   INT,    CONST_INDEX_2)
 | |
| JAVAOP (ldc2_w,         20, PUSHC,   LONG,   CONST_INDEX_2)
 | |
| JAVAOP (iload,          21, LOAD,    INT,    IMMEDIATE_u1)
 | |
| JAVAOP (lload,          22, LOAD,    LONG,   IMMEDIATE_u1)
 | |
| JAVAOP (fload,          23, LOAD,    FLOAT,  IMMEDIATE_u1)
 | |
| JAVAOP (dload,          24, LOAD,    DOUBLE, IMMEDIATE_u1)
 | |
| JAVAOP (aload,          25, LOAD,    PTR,    IMMEDIATE_u1)
 | |
| JAVAOP (iload_0,        26, LOAD,    INT,    0)
 | |
| JAVAOP (iload_1,        27, LOAD,    INT,    1)
 | |
| JAVAOP (iload_2,        28, LOAD,    INT,    2)
 | |
| JAVAOP (iload_3,        29, LOAD,    INT,    3)
 | |
| JAVAOP (lload_0,        30, LOAD,    LONG,   0)
 | |
| JAVAOP (lload_1,        31, LOAD,    LONG,   1)
 | |
| JAVAOP (lload_2,        32, LOAD,    LONG,   2)
 | |
| JAVAOP (lload_3,        33, LOAD,    LONG,   3)
 | |
| JAVAOP (fload_0,        34, LOAD,    FLOAT,  0)
 | |
| JAVAOP (fload_1,        35, LOAD,    FLOAT,  1)
 | |
| JAVAOP (fload_2,        36, LOAD,    FLOAT,  2)
 | |
| JAVAOP (fload_3,        37, LOAD,    FLOAT,  3)
 | |
| JAVAOP (dload_0,        38, LOAD,    DOUBLE, 0)
 | |
| JAVAOP (dload_1,        39, LOAD,    DOUBLE, 1)
 | |
| JAVAOP (dload_2,        40, LOAD,    DOUBLE, 2)
 | |
| JAVAOP (dload_3,        41, LOAD,    DOUBLE, 3)
 | |
| JAVAOP (aload_0,        42, LOAD,    PTR,    0)
 | |
| JAVAOP (aload_1,        43, LOAD,    PTR,    1)
 | |
| JAVAOP (aload_2,        44, LOAD,    PTR,    2)
 | |
| JAVAOP (aload_3,        45, LOAD,    PTR,    3)
 | |
| JAVAOP (iaload,         46, ARRAY,   INT,    LOAD)
 | |
| JAVAOP (laload,         47, ARRAY,   LONG,   LOAD)
 | |
| JAVAOP (faload,         48, ARRAY,   FLOAT,  LOAD)
 | |
| JAVAOP (daload,         49, ARRAY,   DOUBLE, LOAD)
 | |
| JAVAOP (aaload,         50, ARRAY,   PTR,    LOAD)
 | |
| JAVAOP (baload,         51, ARRAY,   BYTE,   LOAD)
 | |
| JAVAOP (caload,         52, ARRAY,   CHAR,   LOAD)
 | |
| JAVAOP (saload,         53, ARRAY,   SHORT,  LOAD)
 | |
| JAVAOP (istore,         54, STORE,   INT,    IMMEDIATE_u1)
 | |
| JAVAOP (lstore,         55, STORE,   LONG,   IMMEDIATE_u1)
 | |
| JAVAOP (fstore,         56, STORE,   FLOAT,  IMMEDIATE_u1)
 | |
| JAVAOP (dstore,         57, STORE,   DOUBLE, IMMEDIATE_u1)
 | |
| JAVAOP (astore,         58, STORE,   PTR,    IMMEDIATE_u1)
 | |
| JAVAOP (istore_0,       59, STORE,   INT,    0)
 | |
| JAVAOP (istore_1,       60, STORE,   INT,    1)
 | |
| JAVAOP (istore_2,       61, STORE,   INT,    2)
 | |
| JAVAOP (istore_3,       62, STORE,   INT,    3)
 | |
| JAVAOP (lstore_0,       63, STORE,   LONG,   0)
 | |
| JAVAOP (lstore_1,       64, STORE,   LONG,   1)
 | |
| JAVAOP (lstore_2,       65, STORE,   LONG,   2)
 | |
| JAVAOP (lstore_3,       66, STORE,   LONG,   3)
 | |
| JAVAOP (fstore_0,       67, STORE,   FLOAT,  0)
 | |
| JAVAOP (fstore_1,       68, STORE,   FLOAT,  1)
 | |
| JAVAOP (fstore_2,       69, STORE,   FLOAT,  2)
 | |
| JAVAOP (fstore_3,       70, STORE,   FLOAT,  3)
 | |
| JAVAOP (dstore_0,       71, STORE,   DOUBLE, 0)
 | |
| JAVAOP (dstore_1,       72, STORE,   DOUBLE, 1)
 | |
| JAVAOP (dstore_2,       73, STORE,   DOUBLE, 2)
 | |
| JAVAOP (dstore_3,       74, STORE,   DOUBLE, 3)
 | |
| JAVAOP (astore_0,       75, STORE,   PTR,    0)
 | |
| JAVAOP (astore_1,       76, STORE,   PTR,    1)
 | |
| JAVAOP (astore_2,       77, STORE,   PTR,    2)
 | |
| JAVAOP (astore_3,       78, STORE,   PTR,    3)
 | |
| JAVAOP (iastore,        79, ARRAY,   INT,    STORE)
 | |
| JAVAOP (lastore,        80, ARRAY,   LONG,   STORE)
 | |
| JAVAOP (fastore,        81, ARRAY,   FLOAT,  STORE)
 | |
| JAVAOP (dastore,        82, ARRAY,   DOUBLE, STORE)
 | |
| JAVAOP (aastore,        83, ARRAY,   PTR,    STORE)
 | |
| JAVAOP (bastore,        84, ARRAY,   BYTE,   STORE)
 | |
| JAVAOP (castore,        85, ARRAY,   CHAR,   STORE)
 | |
| JAVAOP (sastore,        86, ARRAY,   SHORT,  STORE)
 | |
| JAVAOP (pop,            87, STACK,   POP,    1)
 | |
| JAVAOP (pop2,           88, STACK,   POP,    2)
 | |
| JAVAOP (dup,            89, STACK,   DUP,    1)
 | |
| JAVAOP (dup_x1,         90, STACK,   DUPx1,  1)
 | |
| JAVAOP (dup_x2,         91, STACK,   DUPx2,  1)
 | |
| JAVAOP (dup2,           92, STACK,   DUP,    2)
 | |
| JAVAOP (dup2_x1,        93, STACK,   DUPx1,  2)
 | |
| JAVAOP (dup2_x2,        94, STACK,   DUPx2,  2)
 | |
| JAVAOP (swap,           95, STACK,   SWAP,   0)
 | |
| JAVAOP (iadd,           96, BINOP,   INT,    PLUS)
 | |
| JAVAOP (ladd,           97, BINOP,   LONG,   PLUS)
 | |
| JAVAOP (fadd,           98, BINOP,   FLOAT,  PLUS)
 | |
| JAVAOP (dadd,           99, BINOP,   DOUBLE, PLUS)
 | |
| JAVAOP (isub,          100, BINOP,   INT,    MINUS)
 | |
| JAVAOP (lsub,          101, BINOP,   LONG,   MINUS)
 | |
| JAVAOP (fsub,          102, BINOP,   FLOAT,  MINUS)
 | |
| JAVAOP (dsub,          103, BINOP,   DOUBLE, MINUS)
 | |
| JAVAOP (imul,          104, BINOP,   INT,    MULT)
 | |
| JAVAOP (lmul,          105, BINOP,   LONG,   MULT)
 | |
| JAVAOP (fmul,          106, BINOP,   FLOAT,  MULT)
 | |
| JAVAOP (dmul,          107, BINOP,   DOUBLE, MULT)
 | |
| JAVAOP (idiv,          108, BINOP,   INT,    TRUNC_DIV)
 | |
| JAVAOP (ldiv,          109, BINOP,   LONG,   TRUNC_DIV)
 | |
| JAVAOP (fdiv,          110, BINOP,   FLOAT,  RDIV)
 | |
| JAVAOP (ddiv,          111, BINOP,   DOUBLE, RDIV)
 | |
| JAVAOP (irem,          112, BINOP,   INT,    REM)
 | |
| JAVAOP (lrem,          113, BINOP,   LONG,   REM)
 | |
| JAVAOP (frem,          114, BINOP,   FLOAT,  REM)
 | |
| JAVAOP (drem,          115, BINOP,   DOUBLE, REM)
 | |
| JAVAOP (ineg,          116, UNOP,    INT,    NEG)
 | |
| JAVAOP (lneg,          117, UNOP,    LONG,   NEG)
 | |
| JAVAOP (fneg,          118, UNOP,    FLOAT,  NEG)
 | |
| JAVAOP (dneg,          119, UNOP,    DOUBLE, NEG)
 | |
| JAVAOP (ishl,          120, BINOP,   INT,    LSHIFT)
 | |
| JAVAOP (lshl,          121, BINOP,   LONG,   LSHIFT)
 | |
| JAVAOP (ishr,          122, BINOP,   INT,    RSHIFT)
 | |
| JAVAOP (lshr,          123, BINOP,   LONG,   RSHIFT)
 | |
| JAVAOP (iushr,         124, BINOP,   INT,    URSHIFT)
 | |
| JAVAOP (lushr,         125, BINOP,   LONG,   URSHIFT)
 | |
| JAVAOP (iand,          126, BINOP,   INT,    BIT_AND)
 | |
| JAVAOP (land,          127, BINOP,   LONG,   BIT_AND)
 | |
| JAVAOP (ior,           128, BINOP,   INT,    BIT_IOR)
 | |
| JAVAOP (lor,           129, BINOP,   LONG,   BIT_IOR)
 | |
| JAVAOP (ixor,          130, BINOP,   INT,    BIT_XOR)
 | |
| JAVAOP (lxor,          131, BINOP,   LONG,   BIT_XOR)
 | |
| JAVAOP (iinc,          132, SPECIAL, INT,    IINC)
 | |
| JAVAOP (i2l,           133, CONVERT, INT,    LONG)
 | |
| JAVAOP (i2f,           134, CONVERT, INT,    FLOAT)
 | |
| JAVAOP (i2d,           135, CONVERT, INT,    DOUBLE)
 | |
| JAVAOP (l2i,           136, CONVERT, LONG,   INT)
 | |
| JAVAOP (l2f,           137, CONVERT, LONG,   FLOAT)
 | |
| JAVAOP (l2d,           138, CONVERT, LONG,   DOUBLE)
 | |
| JAVAOP (f2i,           139, CONVERT, FLOAT,  INT)
 | |
| JAVAOP (f2l,           140, CONVERT, FLOAT,  LONG)
 | |
| JAVAOP (f2d,           141, CONVERT, FLOAT,  DOUBLE)
 | |
| JAVAOP (d2i,           142, CONVERT, DOUBLE, INT)
 | |
| JAVAOP (d2l,           143, CONVERT, DOUBLE, LONG)
 | |
| JAVAOP (d2f,           144, CONVERT, DOUBLE, FLOAT)
 | |
| JAVAOP (i2b,	       145, CONVERT2, INT,    BYTE)
 | |
| JAVAOP (i2c,           146, CONVERT2, INT,    CHAR)
 | |
| JAVAOP (i2s,           147, CONVERT2, INT,    SHORT)
 | |
| JAVAOP (lcmp,          148, BINOP,   LONG,   COMPARE)
 | |
| JAVAOP (fcmpl,         149, BINOP,   FLOAT,  COMPARE_L)
 | |
| JAVAOP (fcmpg,         150, BINOP,   FLOAT,  COMPARE_G)
 | |
| JAVAOP (dcmpl,         151, BINOP,   DOUBLE, COMPARE_L)
 | |
| JAVAOP (dcmpg,         152, BINOP,   DOUBLE, COMPARE_G)
 | |
| JAVAOP (ifeq,          153, TEST,    INT,    EQ)
 | |
| JAVAOP (ifne,          154, TEST,    INT,    NE)
 | |
| JAVAOP (iflt,          155, TEST,    INT,    LT)
 | |
| JAVAOP (ifge,          156, TEST,    INT,    GE)
 | |
| JAVAOP (ifgt,          157, TEST,    INT,    GT)
 | |
| JAVAOP (ifle,          158, TEST,    INT,    LE)
 | |
| JAVAOP (if_icmpeq,     159, COND,    INT,    EQ)
 | |
| JAVAOP (if_icmpne,     160, COND,    INT,    NE)
 | |
| JAVAOP (if_icmplt,     161, COND,    INT,    LT)
 | |
| JAVAOP (if_icmpge,     162, COND,    INT,    GE)
 | |
| JAVAOP (if_icmpgt,     163, COND,    INT,    GT)
 | |
| JAVAOP (if_icmple,     164, COND,    INT,    LE)
 | |
| JAVAOP (if_acmpeq,     165, COND,    PTR,    EQ)
 | |
| JAVAOP (if_acmpne,     166, COND,    PTR,    NE)
 | |
| JAVAOP (goto,          167, BRANCH,  GOTO,   IMMEDIATE_s2)
 | |
| JAVAOP (jsr,           168, JSR,     CALL,   IMMEDIATE_s2)
 | |
| JAVAOP (ret,           169, RET,     RETURN, VAR_INDEX_1)
 | |
| JAVAOP (tableswitch,   170, SWITCH,  INT,    TABLE)
 | |
| JAVAOP (lookupswitch,  171, SWITCH,  INT,    LOOKUP)
 | |
| JAVAOP (ireturn,       172, RETURN,  INT,    0)
 | |
| JAVAOP (lreturn,       173, RETURN,  LONG,   0)
 | |
| JAVAOP (freturn,       174, RETURN,  FLOAT,  0)
 | |
| JAVAOP (dreturn,       175, RETURN,  DOUBLE, 0)
 | |
| JAVAOP (areturn,       176, RETURN,  PTR,    0)
 | |
| JAVAOP (return,        177, RETURN,  VOID,   0)
 | |
| JAVAOP (getstatic,     178, FIELD,   1,      0)
 | |
| JAVAOP (putstatic,     179, FIELD,   1,      1)
 | |
| JAVAOP (getfield,      180, FIELD,   0,      0)
 | |
| JAVAOP (putfield,      181, FIELD,   0,      1)
 | |
| JAVAOP (invokevirtual, 182, INVOKE,  VIRTUAL,0)
 | |
| JAVAOP (invokespecial, 183, INVOKE,  SPECIAL, 0)
 | |
| JAVAOP (invokestatic,  184, INVOKE,  STATIC, 0)
 | |
| JAVAOP (invokeinterface,185, INVOKE, INTERFACE, 1)
 | |
| JAVAOP (invokedynamic, 186, INVOKE,  DYNAMIC, 1)
 | |
| JAVAOP (new,           187, OBJECT,  PTR,    NEW)
 | |
| JAVAOP (newarray,      188, ARRAY,   NUM,    NEW)
 | |
| JAVAOP (anewarray,     189, ARRAY,   PTR,    NEW)
 | |
| JAVAOP (arraylength,   190, ARRAY,   INT,    LENGTH)
 | |
| JAVAOP (athrow,        191, SPECIAL, ANY,    THROW)
 | |
| JAVAOP (checkcast,     192, OBJECT,  PTR,    CHECKCAST)
 | |
| JAVAOP (instanceof,    193, OBJECT,  PTR,    INSTANCEOF)
 | |
| JAVAOP (monitorenter,  194, SPECIAL, MONITOR, ENTER)
 | |
| JAVAOP (monitorexit,   195, SPECIAL, MONITOR, EXIT)
 | |
| JAVAOP (wide,          196, SPECIAL, ANY,    WIDE)
 | |
| JAVAOP (multianewarray,197, ARRAY,   MULTI,  NEW)
 | |
| JAVAOP (ifnull,        198, TEST,    PTR,    EQ)
 | |
| JAVAOP (ifnonnull,     199, TEST,    PTR,    NE)
 | |
| JAVAOP (goto_w,        200, BRANCH,  GOTO,   IMMEDIATE_s4)
 | |
| JAVAOP (jsr_w,         201, JSR,     CALL,   IMMEDIATE_s4)
 | |
| JAVAOP (breakpoint,    202, SPECIAL, ANY,    BREAK)
 | |
| JAVAOP (ret_w,         209, RET,     RETURN, VAR_INDEX_2)
 | |
| JAVAOP (impdep1,       254, IMPL,    ANY,    1)
 | |
| JAVAOP (impdep2,       255, IMPL,    ANY,    2)
 |