/* 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 */