1# 2# sample small-but-valid classfile 3# 4 5cafe babe # magic 60000 # minor_version 7002e # major_version 80017 # constant_pool_count 9 10# 11# constant_pool 12# 1307 0003 # 0001: class[Small] 1407 0004 # 0002: class[java/lang/Object] 1501 0005 "Small" # 0003: utf8["Small"] 1601 0010 "java/lang/Object" # 0004: utf8["java/lang/Object"] 1701 0005 "blort" # 0005: utf8["blort"] 1801 0003 "()V" # 0006: utf8["()V"] 1901 0004 "Code" # 0007: utf8["Code"] 2008 0003 # 0008: string["Small"] 2103 12345678 # 0009: integer[0x12345678] 2204 42f6e666 # 000a: float[123.45] 2305 12345678 9abcdef0 # 000b: long[0x1234567890abcdef0] 2406 41195895 5f8a0903 # 000d: double[415269.3433] 2501 0005 "blort" # 000f: utf8["blort"] 2601 0007 "x/y/Zzz" # 0010: utf8["x/y/Zzz"] 2701 0003 "()V" # 0011: utf8["()V"] 280c 000f 0010 # 0012: nat[blort:x/y/Zzz] 290c 000f 0011 # 0013: nat[blort:()V] 3009 0001 0012 # 0014: field[Small.blort:x/y/Zzz] 310a 0001 0013 # 0015: method[Small.blort:()V] 320b 0001 0013 # 0016: ifaceMethod[Small.blort:()V] 33 340001 # access_flags 350001 # this_class 360002 # super_class 370000 # interfaces_count 380000 # fields_count 390001 # methods_count 40 41# methods[0] 420001 # access_flags 430005 # name 440006 # descriptor 450001 # attributes_count 46# attributes[0] 470007 # name 48000001db # length (note: == code_length + 0x0c) 490001 # max_stack 500001 # max_locals 51000001cf # code_length 52 5300 # 0000: nop 5401 # 0001: aconst_null 5502 # 0002: aconst_m1 5603 # 0003: iconst_0 5704 # 0004: iconst_1 5805 # 0005: iconst_2 5906 # 0006: iconst_3 6007 # 0007: iconst_4 6108 # 0008: iconst_5 6209 # 0009: lconst_0 630a # 000a: lconst_1 640b # 000b: fconst_0 650c # 000c: fconst_1 660d # 000d: fconst_2 670e # 000e: dconst_0 680f # 000f: dconst_1 6910 45 # 0010: bipush #+45 7011 5432 # 0012: sipush #+5432 7112 08 # 0015: ldc <string> 7212 09 # 0017: ldc <integer> 7312 0a # 0019: ldc <float> 7413 0008 # 001b: ldc_w <string> 7513 0009 # 001e: ldc_w <integer> 7613 000a # 0021: ldc_w <float> 7714 000b # 0024: ldc2_w <long> 7814 000d # 0027: ldc2_w <double> 7915 01 # 002a: iload 01 8016 02 # 002c: lload 02 8117 03 # 002e: fload 03 8218 04 # 0030: dload 04 8319 05 # 0032: aload 05 841a # 0034: iload_0 851b # 0035: iload_1 861c # 0036: iload_2 871d # 0037: iload_3 881e # 0038: lload_0 891f # 0039: lload_1 9020 # 003a: lload_2 9121 # 003b: lload_3 9222 # 003c: fload_0 9323 # 003d: fload_1 9424 # 003e: fload_2 9525 # 003f: fload_3 9626 # 0040: dload_0 9727 # 0041: dload_1 9828 # 0042: dload_2 9929 # 0043: dload_3 1002a # 0044: aload_0 1012b # 0045: aload_1 1022c # 0046: aload_2 1032d # 0047: aload_3 1042e # 0048: iaload 1052f # 0049: laload 10630 # 004a: faload 10731 # 004b: daload 10832 # 004c: aaload 10933 # 004d: baload 11034 # 004e: caload 11135 # 004f: saload 11236 41 # 0050: istore 41 11337 42 # 0052: lstore 42 11438 43 # 0054: fstore 43 11539 44 # 0056: dstore 44 1163a 45 # 0058: astore 45 1173b # 005a: istore_0 1183c # 005b: istore_1 1193d # 005c: istore_2 1203e # 005d: istore_3 1213f # 005e: lstore_0 12240 # 005f: lstore_1 12341 # 0060: lstore_2 12442 # 0061: lstore_3 12543 # 0062: fstore_0 12644 # 0063: fstore_1 12745 # 0064: fstore_2 12846 # 0065: fstore_3 12947 # 0066: dstore_0 13048 # 0067: dstore_1 13149 # 0068: dstore_2 1324a # 0069: dstore_3 1334b # 006a: astore_0 1344c # 006b: astore_1 1354d # 006c: astore_2 1364e # 006d: astore_3 1374f # 006e: iastore 13850 # 006f: lastore 13951 # 0070: fastore 14052 # 0071: dastore 14153 # 0072: aastore 14254 # 0073: bastore 14355 # 0074: castore 14456 # 0075: sastore 14557 # 0076: pop 14658 # 0077: pop2 14759 # 0078: dup 1485a # 0079: dup_x1 1495b # 007a: dup_x2 1505c # 007b: dup2 1515d # 007c: dup2_x1 1525e # 007d: dup2_x2 1535f # 007e: swap 15460 # 007f: iadd 15561 # 0080: ladd 15662 # 0081: fadd 15763 # 0082: dadd 15864 # 0083: isub 15965 # 0084: lsub 16066 # 0085: fsub 16167 # 0086: dsub 16268 # 0087: imul 16369 # 0088: lmul 1646a # 0089: fmul 1656b # 008a: dmul 1666c # 008b: idiv 1676d # 008c: ldiv 1686e # 008d: fdiv 1696f # 008e: ddiv 17070 # 008f: irem 17171 # 0090: lrem 17272 # 0091: frem 17373 # 0092: drem 17474 # 0093: ineg 17575 # 0094: lneg 17676 # 0095: fneg 17777 # 0096: dneg 17878 # 0097: ishl 17979 # 0098: lshl 1807a # 0099: ishr 1817b # 009a: lshr 1827c # 009b: iushr 1837d # 009c: lushr 1847e # 009d: iand 1857f # 009e: land 18680 # 009f: ior 18781 # 00a0: lor 18882 # 00a1: ixor 18983 # 00a2: lxor 19084 05 ff # 00a3: iinc 05, #-1 19185 # 00a6: i2l 19286 # 00a7: i2f 19387 # 00a8: i2d 19488 # 00a9: l2i 19589 # 00aa: l2f 1968a # 00ab: l2d 1978b # 00ac: f2i 1988c # 00ad: f2l 1998d # 00ae: f2d 2008e # 00af: d2i 2018f # 00b0: d2l 20290 # 00b1: d2f 20391 # 00b2: i2b 20492 # 00b3: i2c 20593 # 00b4: i2s 20694 # 00b5: lcmp 20795 # 00b6: fcmpl 20896 # 00b7: fcmpg 20997 # 00b8: dcmpl 21098 # 00b9: dcmpg 21199 0000 # 00ba: ifeq 00ba 2129a fffd # 00bd: ifne 00ba 2139b fffa # 00c0: iflt 00ba 2149c fff7 # 00c3: ifge 00ba 2159d fff4 # 00c6: ifgt 00ba 2169e fff1 # 00c9: ifle 00ba 2179f 000f # 00cc: if_icmpeq 00db 218a0 000c # 00cf: if_icmpne 00db 219a1 0009 # 00d2: if_icmplt 00db 220a2 0006 # 00d5: if_icmpge 00db 221a3 0003 # 00d8: if_icmpgt 00db 222a4 0000 # 00db: if_icmple 00db 223a5 0000 # 00de: if_acmpeq 00de 224a6 0000 # 00e1: if_acmpne 00e1 225a7 ff1c # 00e4: goto 0000 226a8 0000 # 00e7: jsr 00e7 227a9 2f # 00ea: ret 2f 228aa 000000 # 00ec: tableswitch + padding 229 fffffffe # default: 000000ea 230 12340000 # low: 12340000 231 12340007 # high: 12340007 232 ffffff14 # [0]: 00000000 233 ffffff15 # [1]: 00000001 234 ffffff16 # [2]: 00000002 235 ffffff17 # [3]: 00000003 236 ffffff18 # [4]: 00000004 237 ffffff19 # [5]: 00000005 238 ffffff1b # [6]: 00000007 239 ffffff1d # [7]: 00000009 240ab 000000 # 011c: lookupswitch + padding 241 ffffffd0 # default: 000000ec 242 00000004 # npairs: 4 243 89761234 # match[0]: 89761234 244 0000002c # offset[0]: 0148 245 00001000 # match[1]: 00001000 246 0000002d # offset[1]: 0149 247 03333333 # match[2]: 03333333 248 0000002d # offset[2]: 0149 249 79787776 # match[3]: 79787776 250 0000002f # offset[3]: 014b 251ac # 0148: ireturn 252ad # 0149: lreturn 253ae # 014a: freturn 254af # 014b: dreturn 255b0 # 014c: areturn 256b1 # 014d: return 257b2 0014 # 014e: getstatic 0014 258b3 0014 # 0151: putstatic 0014 259b4 0014 # 0154: getfield 0014 260b5 0014 # 0157: putfield 0014 261b6 0015 # 015a: invokevirtual 0015 262b7 0015 # 015d: invokespecial 0015 263b8 0015 # 0160: invokestatic 0015 264b9 0016 01 00 # 0163: invokeinterface 0016 265bb 0001 # 0169: new 0001 266bc 04 # 016c: newarray boolean 267bc 05 # 016e: newarray char 268bc 06 # 0170: newarray float 269bc 07 # 0172: newarray double 270bc 08 # 0174: newarray byte 271bc 09 # 0176: newarray short 272bc 0a # 0178: newarray int 273bc 0b # 017a: newarray long 274bd 0001 # 017c: anewarray 0001 275be # 017f: arraylength 276bf # 0180: athrow 277c0 0002 # 0181: checkcast 0002 278c1 0002 # 0184: instanceof 0002 279c2 # 0187: monitorenter 280c3 # 0188: monitorexit 281c415 0123 # 0189: wide iload 0123 282c416 0124 # 018d: wide lload 0124 283c417 0125 # 0191: wide fload 0125 284c418 0126 # 0195: wide dload 0126 285c419 0127 # 0199: wide aload 0127 286c436 20f0 # 019d: wide istore 20f0 287c437 20f1 # 01a1: wide lstore 20f1 288c438 20f2 # 01a5: wide fstore 20f2 289c439 20f3 # 01a9: wide dstore 20f3 290c43a 20f4 # 01ad: wide astore 20f4 291c4a9 ffff # 01b1: wide ret ffff 292c484 0002 1000 # 01b5: wide iinc 0002, 1000 293c5 0002 04 # 01bb: multianewarray 0002, #04 294c6 fe41 # 01bf: ifnull 0000 295c7 0000 # 01c2: ifnonnull 01c2 296c8 70000000 # 01c5: goto_w 700001c5 297c9 fffffffb # 01ca: jsr_w 000001c5 298ca # 01cf: <unused> 299 3000000 # exception_table_length 3010000 # attributes_count 302 3030000 # attributes_count 304