diff options
Diffstat (limited to 'dx/tests/024-code-bytecode/small-class.txt')
-rw-r--r-- | dx/tests/024-code-bytecode/small-class.txt | 304 |
1 files changed, 304 insertions, 0 deletions
diff --git a/dx/tests/024-code-bytecode/small-class.txt b/dx/tests/024-code-bytecode/small-class.txt new file mode 100644 index 0000000..2526cf2 --- /dev/null +++ b/dx/tests/024-code-bytecode/small-class.txt @@ -0,0 +1,304 @@ +# +# sample small-but-valid classfile +# + +cafe babe # magic +0000 # minor_version +002e # major_version +0017 # constant_pool_count + +# +# constant_pool +# +07 0003 # 0001: class[Small] +07 0004 # 0002: class[java/lang/Object] +01 0005 "Small" # 0003: utf8["Small"] +01 0010 "java/lang/Object" # 0004: utf8["java/lang/Object"] +01 0005 "blort" # 0005: utf8["blort"] +01 0003 "()V" # 0006: utf8["()V"] +01 0004 "Code" # 0007: utf8["Code"] +08 0003 # 0008: string["Small"] +03 12345678 # 0009: integer[0x12345678] +04 42f6e666 # 000a: float[123.45] +05 12345678 9abcdef0 # 000b: long[0x1234567890abcdef0] +06 41195895 5f8a0903 # 000d: double[415269.3433] +01 0005 "blort" # 000f: utf8["blort"] +01 0007 "x/y/Zzz" # 0010: utf8["x/y/Zzz"] +01 0003 "()V" # 0011: utf8["()V"] +0c 000f 0010 # 0012: nat[blort:x/y/Zzz] +0c 000f 0011 # 0013: nat[blort:()V] +09 0001 0012 # 0014: field[Small.blort:x/y/Zzz] +0a 0001 0013 # 0015: method[Small.blort:()V] +0b 0001 0013 # 0016: ifaceMethod[Small.blort:()V] + +0001 # access_flags +0001 # this_class +0002 # super_class +0000 # interfaces_count +0000 # fields_count +0001 # methods_count + +# methods[0] +0001 # access_flags +0005 # name +0006 # descriptor +0001 # attributes_count +# attributes[0] +0007 # name +000001dc # length (note: == code_length + 0x0c) +0001 # max_stack +0001 # max_locals +000001d0 # code_length + +00 # 0000: nop +01 # 0001: aconst_null +02 # 0002: aconst_m1 +03 # 0003: iconst_0 +04 # 0004: iconst_1 +05 # 0005: iconst_2 +06 # 0006: iconst_3 +07 # 0007: iconst_4 +08 # 0008: iconst_5 +09 # 0009: lconst_0 +0a # 000a: lconst_1 +0b # 000b: fconst_0 +0c # 000c: fconst_1 +0d # 000d: fconst_2 +0e # 000e: dconst_0 +0f # 000f: dconst_1 +10 45 # 0010: bipush #+45 +11 5432 # 0012: sipush #+5432 +12 08 # 0015: ldc <string> +12 09 # 0017: ldc <integer> +12 0a # 0019: ldc <float> +13 0008 # 001b: ldc_w <string> +13 0009 # 001e: ldc_w <integer> +13 000a # 0021: ldc_w <float> +14 000b # 0024: ldc2_w <long> +14 000d # 0027: ldc2_w <double> +15 01 # 002a: iload 01 +16 02 # 002c: lload 02 +17 03 # 002e: fload 03 +18 04 # 0030: dload 04 +19 05 # 0032: aload 05 +1a # 0034: iload_0 +1b # 0035: iload_1 +1c # 0036: iload_2 +1d # 0037: iload_3 +1e # 0038: lload_0 +1f # 0039: lload_1 +20 # 003a: lload_2 +21 # 003b: lload_3 +22 # 003c: fload_0 +23 # 003d: fload_1 +24 # 003e: fload_2 +25 # 003f: fload_3 +26 # 0040: dload_0 +27 # 0041: dload_1 +28 # 0042: dload_2 +29 # 0043: dload_3 +2a # 0044: aload_0 +2b # 0045: aload_1 +2c # 0046: aload_2 +2d # 0047: aload_3 +2e # 0048: iaload +2f # 0049: laload +30 # 004a: faload +31 # 004b: daload +32 # 004c: aaload +33 # 004d: baload +34 # 004e: caload +35 # 004f: saload +36 41 # 0050: istore 41 +37 42 # 0052: lstore 42 +38 43 # 0054: fstore 43 +39 44 # 0056: dstore 44 +3a 45 # 0058: astore 45 +3b # 005a: istore_0 +3c # 005b: istore_1 +3d # 005c: istore_2 +3e # 005d: istore_3 +3f # 005e: lstore_0 +40 # 005f: lstore_1 +41 # 0060: lstore_2 +42 # 0061: lstore_3 +43 # 0062: fstore_0 +44 # 0063: fstore_1 +45 # 0064: fstore_2 +46 # 0065: fstore_3 +47 # 0066: dstore_0 +48 # 0067: dstore_1 +49 # 0068: dstore_2 +4a # 0069: dstore_3 +4b # 006a: astore_0 +4c # 006b: astore_1 +4d # 006c: astore_2 +4e # 006d: astore_3 +4f # 006e: iastore +50 # 006f: lastore +51 # 0070: fastore +52 # 0071: dastore +53 # 0072: aastore +54 # 0073: bastore +55 # 0074: castore +56 # 0075: sastore +57 # 0076: pop +58 # 0077: pop2 +59 # 0078: dup +5a # 0079: dup_x1 +5b # 007a: dup_x2 +5c # 007b: dup2 +5d # 007c: dup2_x1 +5e # 007d: dup2_x2 +5f # 007e: swap +60 # 007f: iadd +61 # 0080: ladd +62 # 0081: fadd +63 # 0082: dadd +64 # 0083: isub +65 # 0084: lsub +66 # 0085: fsub +67 # 0086: dsub +68 # 0087: imul +69 # 0088: lmul +6a # 0089: fmul +6b # 008a: dmul +6c # 008b: idiv +6d # 008c: ldiv +6e # 008d: fdiv +6f # 008e: ddiv +70 # 008f: irem +71 # 0090: lrem +72 # 0091: frem +73 # 0092: drem +74 # 0093: ineg +75 # 0094: lneg +76 # 0095: fneg +77 # 0096: dneg +78 # 0097: ishl +79 # 0098: lshl +7a # 0099: ishr +7b # 009a: lshr +7c # 009b: iushr +7d # 009c: lushr +7e # 009d: iand +7f # 009e: land +80 # 009f: ior +81 # 00a0: lor +82 # 00a1: ixor +83 # 00a2: lxor +84 05 ff # 00a3: iinc 05, #-1 +85 # 00a6: i2l +86 # 00a7: i2f +87 # 00a8: i2d +88 # 00a9: l2i +89 # 00aa: l2f +8a # 00ab: l2d +8b # 00ac: f2i +8c # 00ad: f2l +8d # 00ae: f2d +8e # 00af: d2i +8f # 00b0: d2l +90 # 00b1: d2f +91 # 00b2: i2b +92 # 00b3: i2c +93 # 00b4: i2s +94 # 00b5: lcmp +95 # 00b6: fcmpl +96 # 00b7: fcmpg +97 # 00b8: dcmpl +98 # 00b9: dcmpg +99 0000 # 00ba: ifeq 00ba +9a fffd # 00bd: ifne 00ba +9b fffa # 00c0: iflt 00ba +9c fff7 # 00c3: ifge 00ba +9d fff4 # 00c6: ifgt 00ba +9e fff1 # 00c9: ifle 00ba +9f 000f # 00cc: if_icmpeq 00db +a0 000c # 00cf: if_icmpne 00db +a1 0009 # 00d2: if_icmplt 00db +a2 0006 # 00d5: if_icmpge 00db +a3 0003 # 00d8: if_icmpgt 00db +a4 0000 # 00db: if_icmple 00db +a5 0000 # 00de: if_acmpeq 00de +a6 0000 # 00e1: if_acmpne 00e1 +a7 ff1c # 00e4: goto 0000 +a8 0000 # 00e7: jsr 00e7 +a9 2f # 00ea: ret 2f +aa 000000 # 00ec: tableswitch + padding + fffffffe # default: 000000ea + 12340000 # low: 12340000 + 12340007 # high: 12340007 + ffffff14 # [0]: 00000000 + ffffff15 # [1]: 00000001 + ffffff16 # [2]: 00000002 + ffffff17 # [3]: 00000003 + ffffff18 # [4]: 00000004 + ffffff19 # [5]: 00000005 + ffffff1b # [6]: 00000007 + ffffff1d # [7]: 00000009 +ab 000000 # 011c: lookupswitch + padding + ffffffd0 # default: 000000ec + 00000004 # npairs: 4 + 89761234 # match[0]: 89761234 + 0000002c # offset[0]: 0148 + 00001000 # match[1]: 00001000 + 0000002d # offset[1]: 0149 + 03333333 # match[2]: 03333333 + 0000002d # offset[2]: 0149 + 79787776 # match[3]: 79787776 + 0000002f # offset[3]: 014b +ac # 0148: ireturn +ad # 0149: lreturn +ae # 014a: freturn +af # 014b: dreturn +b0 # 014c: areturn +b1 # 014d: return +b2 0014 # 014e: getstatic 0014 +b3 0014 # 0151: putstatic 0014 +b4 0014 # 0154: getfield 0014 +b5 0014 # 0157: putfield 0014 +b6 0015 # 015a: invokevirtual 0015 +b7 0015 # 015d: invokespecial 0015 +b8 0015 # 0160: invokestatic 0015 +b9 0016 01 00 # 0163: invokeinterface 0016 +ba # 0168: <unused> +bb 0001 # 0169: new 0001 +bc 04 # 016c: newarray boolean +bc 05 # 016e: newarray char +bc 06 # 0170: newarray float +bc 07 # 0172: newarray double +bc 08 # 0174: newarray byte +bc 09 # 0176: newarray short +bc 0a # 0178: newarray int +bc 0b # 017a: newarray long +bd 0001 # 017c: anewarray 0001 +be # 017f: arraylength +bf # 0180: athrow +c0 0002 # 0181: checkcast 0002 +c1 0002 # 0184: instanceof 0002 +c2 # 0187: monitorenter +c3 # 0188: monitorexit +c415 0123 # 0189: wide iload 0123 +c416 0124 # 018d: wide lload 0124 +c417 0125 # 0191: wide fload 0125 +c418 0126 # 0195: wide dload 0126 +c419 0127 # 0199: wide aload 0127 +c436 20f0 # 019d: wide istore 20f0 +c437 20f1 # 01a1: wide lstore 20f1 +c438 20f2 # 01a5: wide fstore 20f2 +c439 20f3 # 01a9: wide dstore 20f3 +c43a 20f4 # 01ad: wide astore 20f4 +c4a9 ffff # 01b1: wide ret ffff +c484 0002 1000 # 01b5: wide iinc 0002, 1000 +c5 0002 04 # 01bb: multianewarray 0002, #04 +c6 fe41 # 01bf: ifnull 0000 +c7 0000 # 01c2: ifnonnull 01c2 +c8 70000000 # 01c5: goto_w 700001c5 +c9 fffffffb # 01ca: jsr_w 000001c5 +ca # 01cf: <unused> + +0000 # exception_table_length +0000 # attributes_count + +0000 # attributes_count |