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