You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
304 lines
8.3 KiB
304 lines
8.3 KiB
#
|
|
# 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
|
|
000001db # length (note: == code_length + 0x0c)
|
|
0001 # max_stack
|
|
0001 # max_locals
|
|
000001cf # 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
|
|
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
|