1*055d4590SKeyi Gui# 2*055d4590SKeyi Gui# sample small-but-valid classfile 3*055d4590SKeyi Gui# 4*055d4590SKeyi Gui 5*055d4590SKeyi Guicafe babe # magic 6*055d4590SKeyi Gui0000 # minor_version 7*055d4590SKeyi Gui002e # major_version 8*055d4590SKeyi Gui0017 # constant_pool_count 9*055d4590SKeyi Gui 10*055d4590SKeyi Gui# 11*055d4590SKeyi Gui# constant_pool 12*055d4590SKeyi Gui# 13*055d4590SKeyi Gui07 0003 # 0001: class[Small] 14*055d4590SKeyi Gui07 0004 # 0002: class[java/lang/Object] 15*055d4590SKeyi Gui01 0005 "Small" # 0003: utf8["Small"] 16*055d4590SKeyi Gui01 0010 "java/lang/Object" # 0004: utf8["java/lang/Object"] 17*055d4590SKeyi Gui01 0005 "blort" # 0005: utf8["blort"] 18*055d4590SKeyi Gui01 0003 "()V" # 0006: utf8["()V"] 19*055d4590SKeyi Gui01 0004 "Code" # 0007: utf8["Code"] 20*055d4590SKeyi Gui08 0003 # 0008: string["Small"] 21*055d4590SKeyi Gui03 12345678 # 0009: integer[0x12345678] 22*055d4590SKeyi Gui04 42f6e666 # 000a: float[123.45] 23*055d4590SKeyi Gui05 12345678 9abcdef0 # 000b: long[0x1234567890abcdef0] 24*055d4590SKeyi Gui06 41195895 5f8a0903 # 000d: double[415269.3433] 25*055d4590SKeyi Gui01 0005 "blort" # 000f: utf8["blort"] 26*055d4590SKeyi Gui01 0007 "x/y/Zzz" # 0010: utf8["x/y/Zzz"] 27*055d4590SKeyi Gui01 0003 "()V" # 0011: utf8["()V"] 28*055d4590SKeyi Gui0c 000f 0010 # 0012: nat[blort:x/y/Zzz] 29*055d4590SKeyi Gui0c 000f 0011 # 0013: nat[blort:()V] 30*055d4590SKeyi Gui09 0001 0012 # 0014: field[Small.blort:x/y/Zzz] 31*055d4590SKeyi Gui0a 0001 0013 # 0015: method[Small.blort:()V] 32*055d4590SKeyi Gui0b 0001 0013 # 0016: ifaceMethod[Small.blort:()V] 33*055d4590SKeyi Gui 34*055d4590SKeyi Gui0001 # access_flags 35*055d4590SKeyi Gui0001 # this_class 36*055d4590SKeyi Gui0002 # super_class 37*055d4590SKeyi Gui0000 # interfaces_count 38*055d4590SKeyi Gui0000 # fields_count 39*055d4590SKeyi Gui0001 # methods_count 40*055d4590SKeyi Gui 41*055d4590SKeyi Gui# methods[0] 42*055d4590SKeyi Gui0001 # access_flags 43*055d4590SKeyi Gui0005 # name 44*055d4590SKeyi Gui0006 # descriptor 45*055d4590SKeyi Gui0001 # attributes_count 46*055d4590SKeyi Gui# attributes[0] 47*055d4590SKeyi Gui0007 # name 48*055d4590SKeyi Gui000001db # length (note: == code_length + 0x0c) 49*055d4590SKeyi Gui0001 # max_stack 50*055d4590SKeyi Gui0001 # max_locals 51*055d4590SKeyi Gui000001cf # code_length 52*055d4590SKeyi Gui 53*055d4590SKeyi Gui00 # 0000: nop 54*055d4590SKeyi Gui01 # 0001: aconst_null 55*055d4590SKeyi Gui02 # 0002: aconst_m1 56*055d4590SKeyi Gui03 # 0003: iconst_0 57*055d4590SKeyi Gui04 # 0004: iconst_1 58*055d4590SKeyi Gui05 # 0005: iconst_2 59*055d4590SKeyi Gui06 # 0006: iconst_3 60*055d4590SKeyi Gui07 # 0007: iconst_4 61*055d4590SKeyi Gui08 # 0008: iconst_5 62*055d4590SKeyi Gui09 # 0009: lconst_0 63*055d4590SKeyi Gui0a # 000a: lconst_1 64*055d4590SKeyi Gui0b # 000b: fconst_0 65*055d4590SKeyi Gui0c # 000c: fconst_1 66*055d4590SKeyi Gui0d # 000d: fconst_2 67*055d4590SKeyi Gui0e # 000e: dconst_0 68*055d4590SKeyi Gui0f # 000f: dconst_1 69*055d4590SKeyi Gui10 45 # 0010: bipush #+45 70*055d4590SKeyi Gui11 5432 # 0012: sipush #+5432 71*055d4590SKeyi Gui12 08 # 0015: ldc <string> 72*055d4590SKeyi Gui12 09 # 0017: ldc <integer> 73*055d4590SKeyi Gui12 0a # 0019: ldc <float> 74*055d4590SKeyi Gui13 0008 # 001b: ldc_w <string> 75*055d4590SKeyi Gui13 0009 # 001e: ldc_w <integer> 76*055d4590SKeyi Gui13 000a # 0021: ldc_w <float> 77*055d4590SKeyi Gui14 000b # 0024: ldc2_w <long> 78*055d4590SKeyi Gui14 000d # 0027: ldc2_w <double> 79*055d4590SKeyi Gui15 01 # 002a: iload 01 80*055d4590SKeyi Gui16 02 # 002c: lload 02 81*055d4590SKeyi Gui17 03 # 002e: fload 03 82*055d4590SKeyi Gui18 04 # 0030: dload 04 83*055d4590SKeyi Gui19 05 # 0032: aload 05 84*055d4590SKeyi Gui1a # 0034: iload_0 85*055d4590SKeyi Gui1b # 0035: iload_1 86*055d4590SKeyi Gui1c # 0036: iload_2 87*055d4590SKeyi Gui1d # 0037: iload_3 88*055d4590SKeyi Gui1e # 0038: lload_0 89*055d4590SKeyi Gui1f # 0039: lload_1 90*055d4590SKeyi Gui20 # 003a: lload_2 91*055d4590SKeyi Gui21 # 003b: lload_3 92*055d4590SKeyi Gui22 # 003c: fload_0 93*055d4590SKeyi Gui23 # 003d: fload_1 94*055d4590SKeyi Gui24 # 003e: fload_2 95*055d4590SKeyi Gui25 # 003f: fload_3 96*055d4590SKeyi Gui26 # 0040: dload_0 97*055d4590SKeyi Gui27 # 0041: dload_1 98*055d4590SKeyi Gui28 # 0042: dload_2 99*055d4590SKeyi Gui29 # 0043: dload_3 100*055d4590SKeyi Gui2a # 0044: aload_0 101*055d4590SKeyi Gui2b # 0045: aload_1 102*055d4590SKeyi Gui2c # 0046: aload_2 103*055d4590SKeyi Gui2d # 0047: aload_3 104*055d4590SKeyi Gui2e # 0048: iaload 105*055d4590SKeyi Gui2f # 0049: laload 106*055d4590SKeyi Gui30 # 004a: faload 107*055d4590SKeyi Gui31 # 004b: daload 108*055d4590SKeyi Gui32 # 004c: aaload 109*055d4590SKeyi Gui33 # 004d: baload 110*055d4590SKeyi Gui34 # 004e: caload 111*055d4590SKeyi Gui35 # 004f: saload 112*055d4590SKeyi Gui36 41 # 0050: istore 41 113*055d4590SKeyi Gui37 42 # 0052: lstore 42 114*055d4590SKeyi Gui38 43 # 0054: fstore 43 115*055d4590SKeyi Gui39 44 # 0056: dstore 44 116*055d4590SKeyi Gui3a 45 # 0058: astore 45 117*055d4590SKeyi Gui3b # 005a: istore_0 118*055d4590SKeyi Gui3c # 005b: istore_1 119*055d4590SKeyi Gui3d # 005c: istore_2 120*055d4590SKeyi Gui3e # 005d: istore_3 121*055d4590SKeyi Gui3f # 005e: lstore_0 122*055d4590SKeyi Gui40 # 005f: lstore_1 123*055d4590SKeyi Gui41 # 0060: lstore_2 124*055d4590SKeyi Gui42 # 0061: lstore_3 125*055d4590SKeyi Gui43 # 0062: fstore_0 126*055d4590SKeyi Gui44 # 0063: fstore_1 127*055d4590SKeyi Gui45 # 0064: fstore_2 128*055d4590SKeyi Gui46 # 0065: fstore_3 129*055d4590SKeyi Gui47 # 0066: dstore_0 130*055d4590SKeyi Gui48 # 0067: dstore_1 131*055d4590SKeyi Gui49 # 0068: dstore_2 132*055d4590SKeyi Gui4a # 0069: dstore_3 133*055d4590SKeyi Gui4b # 006a: astore_0 134*055d4590SKeyi Gui4c # 006b: astore_1 135*055d4590SKeyi Gui4d # 006c: astore_2 136*055d4590SKeyi Gui4e # 006d: astore_3 137*055d4590SKeyi Gui4f # 006e: iastore 138*055d4590SKeyi Gui50 # 006f: lastore 139*055d4590SKeyi Gui51 # 0070: fastore 140*055d4590SKeyi Gui52 # 0071: dastore 141*055d4590SKeyi Gui53 # 0072: aastore 142*055d4590SKeyi Gui54 # 0073: bastore 143*055d4590SKeyi Gui55 # 0074: castore 144*055d4590SKeyi Gui56 # 0075: sastore 145*055d4590SKeyi Gui57 # 0076: pop 146*055d4590SKeyi Gui58 # 0077: pop2 147*055d4590SKeyi Gui59 # 0078: dup 148*055d4590SKeyi Gui5a # 0079: dup_x1 149*055d4590SKeyi Gui5b # 007a: dup_x2 150*055d4590SKeyi Gui5c # 007b: dup2 151*055d4590SKeyi Gui5d # 007c: dup2_x1 152*055d4590SKeyi Gui5e # 007d: dup2_x2 153*055d4590SKeyi Gui5f # 007e: swap 154*055d4590SKeyi Gui60 # 007f: iadd 155*055d4590SKeyi Gui61 # 0080: ladd 156*055d4590SKeyi Gui62 # 0081: fadd 157*055d4590SKeyi Gui63 # 0082: dadd 158*055d4590SKeyi Gui64 # 0083: isub 159*055d4590SKeyi Gui65 # 0084: lsub 160*055d4590SKeyi Gui66 # 0085: fsub 161*055d4590SKeyi Gui67 # 0086: dsub 162*055d4590SKeyi Gui68 # 0087: imul 163*055d4590SKeyi Gui69 # 0088: lmul 164*055d4590SKeyi Gui6a # 0089: fmul 165*055d4590SKeyi Gui6b # 008a: dmul 166*055d4590SKeyi Gui6c # 008b: idiv 167*055d4590SKeyi Gui6d # 008c: ldiv 168*055d4590SKeyi Gui6e # 008d: fdiv 169*055d4590SKeyi Gui6f # 008e: ddiv 170*055d4590SKeyi Gui70 # 008f: irem 171*055d4590SKeyi Gui71 # 0090: lrem 172*055d4590SKeyi Gui72 # 0091: frem 173*055d4590SKeyi Gui73 # 0092: drem 174*055d4590SKeyi Gui74 # 0093: ineg 175*055d4590SKeyi Gui75 # 0094: lneg 176*055d4590SKeyi Gui76 # 0095: fneg 177*055d4590SKeyi Gui77 # 0096: dneg 178*055d4590SKeyi Gui78 # 0097: ishl 179*055d4590SKeyi Gui79 # 0098: lshl 180*055d4590SKeyi Gui7a # 0099: ishr 181*055d4590SKeyi Gui7b # 009a: lshr 182*055d4590SKeyi Gui7c # 009b: iushr 183*055d4590SKeyi Gui7d # 009c: lushr 184*055d4590SKeyi Gui7e # 009d: iand 185*055d4590SKeyi Gui7f # 009e: land 186*055d4590SKeyi Gui80 # 009f: ior 187*055d4590SKeyi Gui81 # 00a0: lor 188*055d4590SKeyi Gui82 # 00a1: ixor 189*055d4590SKeyi Gui83 # 00a2: lxor 190*055d4590SKeyi Gui84 05 ff # 00a3: iinc 05, #-1 191*055d4590SKeyi Gui85 # 00a6: i2l 192*055d4590SKeyi Gui86 # 00a7: i2f 193*055d4590SKeyi Gui87 # 00a8: i2d 194*055d4590SKeyi Gui88 # 00a9: l2i 195*055d4590SKeyi Gui89 # 00aa: l2f 196*055d4590SKeyi Gui8a # 00ab: l2d 197*055d4590SKeyi Gui8b # 00ac: f2i 198*055d4590SKeyi Gui8c # 00ad: f2l 199*055d4590SKeyi Gui8d # 00ae: f2d 200*055d4590SKeyi Gui8e # 00af: d2i 201*055d4590SKeyi Gui8f # 00b0: d2l 202*055d4590SKeyi Gui90 # 00b1: d2f 203*055d4590SKeyi Gui91 # 00b2: i2b 204*055d4590SKeyi Gui92 # 00b3: i2c 205*055d4590SKeyi Gui93 # 00b4: i2s 206*055d4590SKeyi Gui94 # 00b5: lcmp 207*055d4590SKeyi Gui95 # 00b6: fcmpl 208*055d4590SKeyi Gui96 # 00b7: fcmpg 209*055d4590SKeyi Gui97 # 00b8: dcmpl 210*055d4590SKeyi Gui98 # 00b9: dcmpg 211*055d4590SKeyi Gui99 0000 # 00ba: ifeq 00ba 212*055d4590SKeyi Gui9a fffd # 00bd: ifne 00ba 213*055d4590SKeyi Gui9b fffa # 00c0: iflt 00ba 214*055d4590SKeyi Gui9c fff7 # 00c3: ifge 00ba 215*055d4590SKeyi Gui9d fff4 # 00c6: ifgt 00ba 216*055d4590SKeyi Gui9e fff1 # 00c9: ifle 00ba 217*055d4590SKeyi Gui9f 000f # 00cc: if_icmpeq 00db 218*055d4590SKeyi Guia0 000c # 00cf: if_icmpne 00db 219*055d4590SKeyi Guia1 0009 # 00d2: if_icmplt 00db 220*055d4590SKeyi Guia2 0006 # 00d5: if_icmpge 00db 221*055d4590SKeyi Guia3 0003 # 00d8: if_icmpgt 00db 222*055d4590SKeyi Guia4 0000 # 00db: if_icmple 00db 223*055d4590SKeyi Guia5 0000 # 00de: if_acmpeq 00de 224*055d4590SKeyi Guia6 0000 # 00e1: if_acmpne 00e1 225*055d4590SKeyi Guia7 ff1c # 00e4: goto 0000 226*055d4590SKeyi Guia8 0000 # 00e7: jsr 00e7 227*055d4590SKeyi Guia9 2f # 00ea: ret 2f 228*055d4590SKeyi Guiaa 000000 # 00ec: tableswitch + padding 229*055d4590SKeyi Gui fffffffe # default: 000000ea 230*055d4590SKeyi Gui 12340000 # low: 12340000 231*055d4590SKeyi Gui 12340007 # high: 12340007 232*055d4590SKeyi Gui ffffff14 # [0]: 00000000 233*055d4590SKeyi Gui ffffff15 # [1]: 00000001 234*055d4590SKeyi Gui ffffff16 # [2]: 00000002 235*055d4590SKeyi Gui ffffff17 # [3]: 00000003 236*055d4590SKeyi Gui ffffff18 # [4]: 00000004 237*055d4590SKeyi Gui ffffff19 # [5]: 00000005 238*055d4590SKeyi Gui ffffff1b # [6]: 00000007 239*055d4590SKeyi Gui ffffff1d # [7]: 00000009 240*055d4590SKeyi Guiab 000000 # 011c: lookupswitch + padding 241*055d4590SKeyi Gui ffffffd0 # default: 000000ec 242*055d4590SKeyi Gui 00000004 # npairs: 4 243*055d4590SKeyi Gui 89761234 # match[0]: 89761234 244*055d4590SKeyi Gui 0000002c # offset[0]: 0148 245*055d4590SKeyi Gui 00001000 # match[1]: 00001000 246*055d4590SKeyi Gui 0000002d # offset[1]: 0149 247*055d4590SKeyi Gui 03333333 # match[2]: 03333333 248*055d4590SKeyi Gui 0000002d # offset[2]: 0149 249*055d4590SKeyi Gui 79787776 # match[3]: 79787776 250*055d4590SKeyi Gui 0000002f # offset[3]: 014b 251*055d4590SKeyi Guiac # 0148: ireturn 252*055d4590SKeyi Guiad # 0149: lreturn 253*055d4590SKeyi Guiae # 014a: freturn 254*055d4590SKeyi Guiaf # 014b: dreturn 255*055d4590SKeyi Guib0 # 014c: areturn 256*055d4590SKeyi Guib1 # 014d: return 257*055d4590SKeyi Guib2 0014 # 014e: getstatic 0014 258*055d4590SKeyi Guib3 0014 # 0151: putstatic 0014 259*055d4590SKeyi Guib4 0014 # 0154: getfield 0014 260*055d4590SKeyi Guib5 0014 # 0157: putfield 0014 261*055d4590SKeyi Guib6 0015 # 015a: invokevirtual 0015 262*055d4590SKeyi Guib7 0015 # 015d: invokespecial 0015 263*055d4590SKeyi Guib8 0015 # 0160: invokestatic 0015 264*055d4590SKeyi Guib9 0016 01 00 # 0163: invokeinterface 0016 265*055d4590SKeyi Guibb 0001 # 0169: new 0001 266*055d4590SKeyi Guibc 04 # 016c: newarray boolean 267*055d4590SKeyi Guibc 05 # 016e: newarray char 268*055d4590SKeyi Guibc 06 # 0170: newarray float 269*055d4590SKeyi Guibc 07 # 0172: newarray double 270*055d4590SKeyi Guibc 08 # 0174: newarray byte 271*055d4590SKeyi Guibc 09 # 0176: newarray short 272*055d4590SKeyi Guibc 0a # 0178: newarray int 273*055d4590SKeyi Guibc 0b # 017a: newarray long 274*055d4590SKeyi Guibd 0001 # 017c: anewarray 0001 275*055d4590SKeyi Guibe # 017f: arraylength 276*055d4590SKeyi Guibf # 0180: athrow 277*055d4590SKeyi Guic0 0002 # 0181: checkcast 0002 278*055d4590SKeyi Guic1 0002 # 0184: instanceof 0002 279*055d4590SKeyi Guic2 # 0187: monitorenter 280*055d4590SKeyi Guic3 # 0188: monitorexit 281*055d4590SKeyi Guic415 0123 # 0189: wide iload 0123 282*055d4590SKeyi Guic416 0124 # 018d: wide lload 0124 283*055d4590SKeyi Guic417 0125 # 0191: wide fload 0125 284*055d4590SKeyi Guic418 0126 # 0195: wide dload 0126 285*055d4590SKeyi Guic419 0127 # 0199: wide aload 0127 286*055d4590SKeyi Guic436 20f0 # 019d: wide istore 20f0 287*055d4590SKeyi Guic437 20f1 # 01a1: wide lstore 20f1 288*055d4590SKeyi Guic438 20f2 # 01a5: wide fstore 20f2 289*055d4590SKeyi Guic439 20f3 # 01a9: wide dstore 20f3 290*055d4590SKeyi Guic43a 20f4 # 01ad: wide astore 20f4 291*055d4590SKeyi Guic4a9 ffff # 01b1: wide ret ffff 292*055d4590SKeyi Guic484 0002 1000 # 01b5: wide iinc 0002, 1000 293*055d4590SKeyi Guic5 0002 04 # 01bb: multianewarray 0002, #04 294*055d4590SKeyi Guic6 fe41 # 01bf: ifnull 0000 295*055d4590SKeyi Guic7 0000 # 01c2: ifnonnull 01c2 296*055d4590SKeyi Guic8 70000000 # 01c5: goto_w 700001c5 297*055d4590SKeyi Guic9 fffffffb # 01ca: jsr_w 000001c5 298*055d4590SKeyi Guica # 01cf: <unused> 299*055d4590SKeyi Gui 300*055d4590SKeyi Gui0000 # exception_table_length 301*055d4590SKeyi Gui0000 # attributes_count 302*055d4590SKeyi Gui 303*055d4590SKeyi Gui0000 # attributes_count 304