@@ -1,241 +1,241 @@ -/* javaops.h: Copyright (C) Codemist Ltd., 1996. */ - -/* Java operators. */ -/* The operators below are taken from */ -/* "The Java Virtual Machine Specification" (dated Aug 21, 1995). */ -/* They are listed in section order, rather than numerical order, but */ -/* I note there are 203 of them: 0..202 and 209 with 186 unused. */ - -/* section 3.2: pushing constants onto the stack */ -#define j_bipush 16 -#define j_sipush 17 -#define j_ldc1 18 -#define j_ldc2 19 -#define j_ldc2w 20 -#define j_aconst_null 1 -#define j_iconst_m1 2 -#define j_iconst_0 3 -#define j_iconst_1 4 -#define j_iconst_2 5 -#define j_iconst_3 6 -#define j_iconst_4 7 -#define j_iconst_5 8 -#define j_lconst_0 9 -#define j_lconst_1 10 -#define j_fconst_0 11 -#define j_fconst_1 12 -#define j_fconst_2 13 -#define j_dconst_0 14 -#define j_dconst_1 15 -/* section 3.3: loading locals onto the stack */ -#define j_iload 21 -#define j_iload_0 26 -#define j_iload_1 27 -#define j_iload_2 28 -#define j_iload_3 29 -#define j_lload 22 -#define j_lload_0 30 -#define j_lload_1 31 -#define j_lload_2 32 -#define j_lload_3 33 -#define j_fload 23 -#define j_fload_0 34 -#define j_fload_1 35 -#define j_fload_2 36 -#define j_fload_3 37 -#define j_dload 24 -#define j_dload_0 38 -#define j_dload_1 39 -#define j_dload_2 40 -#define j_dload_3 41 -#define j_aload 25 -#define j_aload_0 42 -#define j_aload_1 43 -#define j_aload_2 44 -#define j_aload_3 45 -/* section 3.4 storing stack values into locals */ -#define j_istore 54 -#define j_istore_0 59 -#define j_istore_1 60 -#define j_istore_2 61 -#define j_istore_3 62 -#define j_lstore 55 -#define j_lstore_0 63 -#define j_lstore_1 64 -#define j_lstore_2 65 -#define j_lstore_3 66 -#define j_fstore 56 -#define j_fstore_0 67 -#define j_fstore_1 68 -#define j_fstore_2 69 -#define j_fstore_3 70 -#define j_dstore 57 -#define j_dstore_0 71 -#define j_dstore_1 72 -#define j_dstore_2 73 -#define j_dstore_3 74 -#define j_astore 58 -#define j_astore_0 75 -#define j_astore_1 76 -#define j_astore_2 77 -#define j_astore_3 78 -#define j_iinc 132 -/* section 3.5: wider index for loading etc. */ -#define j_wide 196 -/* section 3.6: managing arrays */ -#define j_newarray 188 -#define j_anewarray 189 -#define j_multinewarray 197 -#define j_arraylength 190 -#define j_iaload 46 -#define j_laload 47 -#define j_faload 48 -#define j_daload 49 -#define j_aaload 50 -#define j_baload 51 -#define j_caload 52 -#define j_saload 53 -#define j_iastore 79 -#define j_lastore 80 -#define j_fastore 81 -#define j_dastore 82 -#define j_aastore 83 -#define j_bastore 84 -#define j_castore 85 -#define j_sastore 86 -/* 3.7 stack instructions */ -#define j_nop 0 -#define j_pop 87 -#define j_pop2 88 -#define j_dup 89 -#define j_dup2 92 -#define j_dup_x1 90 -#define j_dup2_x1 93 -#define j_dup_x2 91 -#define j_dup2_x2 94 -#define j_swap 95 -/* 3.8 arithmetic instructions */ -#define j_iadd 96 -#define j_ladd 97 -#define j_fadd 98 -#define j_dadd 99 -#define j_isub 100 -#define j_lsub 101 -#define j_fsub 102 -#define j_dsub 103 -#define j_imul 104 -#define j_lmul 105 -#define j_fmul 106 -#define j_dmul 107 -#define j_idiv 108 -#define j_ldiv 109 -#define j_fdiv 110 -#define j_ddiv 111 -#define j_irem 112 -#define j_lrem 113 -#define j_frem 114 -#define j_drem 115 -#define j_ineg 116 -#define j_lneg 117 -#define j_fneg 118 -#define j_dneg 119 -/* 3.9 logical instructions */ -#define j_ishl 120 -#define j_ishr 121 -#define j_iushr 122 -#define j_lshl 123 -#define j_lshr 124 -#define j_lushr 125 -#define j_iand 126 -#define j_land 127 -#define j_ior 128 -#define j_lor 129 -#define j_ixor 130 -#define j_lxor 131 -/* 3.10 conversion instructions */ -#define j_i2l 133 -#define j_i2f 134 -#define j_i2d 135 -#define j_l2i 136 -#define j_l2f 137 -#define j_l2d 138 -#define j_f2i 139 -#define j_f2l 140 -#define j_f2d 141 -#define j_d2i 142 -#define j_d2l 143 -#define j_d2f 144 -#define j_int2byte 145 -#define j_int2char 146 -#define j_int2short 147 -/* 3.11 control transfer instructions */ -#define j_ifeq 153 -#define j_ifnull 198 -#define j_iflt 155 -#define j_ifle 158 -#define j_ifne 154 -#define j_ifnonnull 199 -#define j_ifgt 157 -#define j_ifge 156 -#define j_if_icmpeq 159 -#define j_if_icmpne 160 -#define j_if_icmplt 161 -#define j_if_icmpgt 163 -#define j_if_icmple 164 -#define j_if_icmpge 162 -#define j_lcmp 148 -#define j_fcmpl 149 -#define j_fcmpg 150 -#define j_dcmpl 151 -#define j_dcmpg 152 -#define j_if_acmpeq 165 -#define j_if_acmpne 166 -#define j_goto 167 -#define j_goto_w 200 -#define j_jsr 168 -#define j_jsr_w 201 -#define j_ret 169 -#define j_ret_w 209 -/* 3.12 function return */ -#define j_ireturn 172 -#define j_lreturn 173 -#define j_freturn 174 -#define j_dreturn 175 -#define j_areturn 176 -#define j_return 177 -#define j_breakpoint 202 -/* 3.13 table jumping */ -#define j_tableswitch 170 -#define j_lookupswitch 171 -/* 3.14 manipulating object fields */ -#define j_putfield 181 -#define j_getfield 180 -#define j_putstatic 179 -#define j_getstatic 178 -/* 3.15 method invokation */ -#define j_invokevirtual 182 -#define j_invokenonvirtual 183 -#define j_invokestatic 184 -#define j_invokeinterface 185 -/* 3.16 exception handling */ -#define j_athrow 191 -/* 3.17 miscellaneous object operation */ -#define j_new 187 -#define j_checkcast 192 -#define j_instanceof 193 -#define j_monitorenter 194 -#define j_monitorexit 195 -/* Quick variants of opcodes are not currently supported. */ - -/* Java type codes. */ -#define T_BOOLEAN 4 -#define T_CHAR 5 -#define T_FLOAT 6 -#define T_DOUBLE 7 -#define T_BYTE 8 -#define T_SHORT 9 -#define T_INT 10 -#define T_LONG 11 - -/* end of javaops.h */ +/* javaops.h: Copyright (C) Codemist Ltd., 1996. */ + +/* Java operators. */ +/* The operators below are taken from */ +/* "The Java Virtual Machine Specification" (dated Aug 21, 1995). */ +/* They are listed in section order, rather than numerical order, but */ +/* I note there are 203 of them: 0..202 and 209 with 186 unused. */ + +/* section 3.2: pushing constants onto the stack */ +#define j_bipush 16 +#define j_sipush 17 +#define j_ldc1 18 +#define j_ldc2 19 +#define j_ldc2w 20 +#define j_aconst_null 1 +#define j_iconst_m1 2 +#define j_iconst_0 3 +#define j_iconst_1 4 +#define j_iconst_2 5 +#define j_iconst_3 6 +#define j_iconst_4 7 +#define j_iconst_5 8 +#define j_lconst_0 9 +#define j_lconst_1 10 +#define j_fconst_0 11 +#define j_fconst_1 12 +#define j_fconst_2 13 +#define j_dconst_0 14 +#define j_dconst_1 15 +/* section 3.3: loading locals onto the stack */ +#define j_iload 21 +#define j_iload_0 26 +#define j_iload_1 27 +#define j_iload_2 28 +#define j_iload_3 29 +#define j_lload 22 +#define j_lload_0 30 +#define j_lload_1 31 +#define j_lload_2 32 +#define j_lload_3 33 +#define j_fload 23 +#define j_fload_0 34 +#define j_fload_1 35 +#define j_fload_2 36 +#define j_fload_3 37 +#define j_dload 24 +#define j_dload_0 38 +#define j_dload_1 39 +#define j_dload_2 40 +#define j_dload_3 41 +#define j_aload 25 +#define j_aload_0 42 +#define j_aload_1 43 +#define j_aload_2 44 +#define j_aload_3 45 +/* section 3.4 storing stack values into locals */ +#define j_istore 54 +#define j_istore_0 59 +#define j_istore_1 60 +#define j_istore_2 61 +#define j_istore_3 62 +#define j_lstore 55 +#define j_lstore_0 63 +#define j_lstore_1 64 +#define j_lstore_2 65 +#define j_lstore_3 66 +#define j_fstore 56 +#define j_fstore_0 67 +#define j_fstore_1 68 +#define j_fstore_2 69 +#define j_fstore_3 70 +#define j_dstore 57 +#define j_dstore_0 71 +#define j_dstore_1 72 +#define j_dstore_2 73 +#define j_dstore_3 74 +#define j_astore 58 +#define j_astore_0 75 +#define j_astore_1 76 +#define j_astore_2 77 +#define j_astore_3 78 +#define j_iinc 132 +/* section 3.5: wider index for loading etc. */ +#define j_wide 196 +/* section 3.6: managing arrays */ +#define j_newarray 188 +#define j_anewarray 189 +#define j_multinewarray 197 +#define j_arraylength 190 +#define j_iaload 46 +#define j_laload 47 +#define j_faload 48 +#define j_daload 49 +#define j_aaload 50 +#define j_baload 51 +#define j_caload 52 +#define j_saload 53 +#define j_iastore 79 +#define j_lastore 80 +#define j_fastore 81 +#define j_dastore 82 +#define j_aastore 83 +#define j_bastore 84 +#define j_castore 85 +#define j_sastore 86 +/* 3.7 stack instructions */ +#define j_nop 0 +#define j_pop 87 +#define j_pop2 88 +#define j_dup 89 +#define j_dup2 92 +#define j_dup_x1 90 +#define j_dup2_x1 93 +#define j_dup_x2 91 +#define j_dup2_x2 94 +#define j_swap 95 +/* 3.8 arithmetic instructions */ +#define j_iadd 96 +#define j_ladd 97 +#define j_fadd 98 +#define j_dadd 99 +#define j_isub 100 +#define j_lsub 101 +#define j_fsub 102 +#define j_dsub 103 +#define j_imul 104 +#define j_lmul 105 +#define j_fmul 106 +#define j_dmul 107 +#define j_idiv 108 +#define j_ldiv 109 +#define j_fdiv 110 +#define j_ddiv 111 +#define j_irem 112 +#define j_lrem 113 +#define j_frem 114 +#define j_drem 115 +#define j_ineg 116 +#define j_lneg 117 +#define j_fneg 118 +#define j_dneg 119 +/* 3.9 logical instructions */ +#define j_ishl 120 +#define j_ishr 121 +#define j_iushr 122 +#define j_lshl 123 +#define j_lshr 124 +#define j_lushr 125 +#define j_iand 126 +#define j_land 127 +#define j_ior 128 +#define j_lor 129 +#define j_ixor 130 +#define j_lxor 131 +/* 3.10 conversion instructions */ +#define j_i2l 133 +#define j_i2f 134 +#define j_i2d 135 +#define j_l2i 136 +#define j_l2f 137 +#define j_l2d 138 +#define j_f2i 139 +#define j_f2l 140 +#define j_f2d 141 +#define j_d2i 142 +#define j_d2l 143 +#define j_d2f 144 +#define j_int2byte 145 +#define j_int2char 146 +#define j_int2short 147 +/* 3.11 control transfer instructions */ +#define j_ifeq 153 +#define j_ifnull 198 +#define j_iflt 155 +#define j_ifle 158 +#define j_ifne 154 +#define j_ifnonnull 199 +#define j_ifgt 157 +#define j_ifge 156 +#define j_if_icmpeq 159 +#define j_if_icmpne 160 +#define j_if_icmplt 161 +#define j_if_icmpgt 163 +#define j_if_icmple 164 +#define j_if_icmpge 162 +#define j_lcmp 148 +#define j_fcmpl 149 +#define j_fcmpg 150 +#define j_dcmpl 151 +#define j_dcmpg 152 +#define j_if_acmpeq 165 +#define j_if_acmpne 166 +#define j_goto 167 +#define j_goto_w 200 +#define j_jsr 168 +#define j_jsr_w 201 +#define j_ret 169 +#define j_ret_w 209 +/* 3.12 function return */ +#define j_ireturn 172 +#define j_lreturn 173 +#define j_freturn 174 +#define j_dreturn 175 +#define j_areturn 176 +#define j_return 177 +#define j_breakpoint 202 +/* 3.13 table jumping */ +#define j_tableswitch 170 +#define j_lookupswitch 171 +/* 3.14 manipulating object fields */ +#define j_putfield 181 +#define j_getfield 180 +#define j_putstatic 179 +#define j_getstatic 178 +/* 3.15 method invokation */ +#define j_invokevirtual 182 +#define j_invokenonvirtual 183 +#define j_invokestatic 184 +#define j_invokeinterface 185 +/* 3.16 exception handling */ +#define j_athrow 191 +/* 3.17 miscellaneous object operation */ +#define j_new 187 +#define j_checkcast 192 +#define j_instanceof 193 +#define j_monitorenter 194 +#define j_monitorexit 195 +/* Quick variants of opcodes are not currently supported. */ + +/* Java type codes. */ +#define T_BOOLEAN 4 +#define T_CHAR 5 +#define T_FLOAT 6 +#define T_DOUBLE 7 +#define T_BYTE 8 +#define T_SHORT 9 +#define T_INT 10 +#define T_LONG 11 + +/* end of javaops.h */