1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
|
reading small-class.txt...
begin classfile
magic: cafebabe
minor_version: 0000
major_version: 002e
constant_pool_count: 0017
constant_pool:
0001: type{Small}
0002: type{java.lang.Object}
0003: utf8{"Small"}
0004: utf8{"java/lang/Object"}
0005: utf8{"blort"}
0006: utf8{"()V"}
0007: utf8{"Code"}
0008: string{"Small"}
0009: int{0x12345678 / 305419896}
000a: float{0x42f6e666 / 123.45}
000b: long{0x123456789abcdef0 / 1311768467463790320}
000d: double{0x411958955f8a0903 / 415269.3433}
000f: utf8{"blort"}
0010: utf8{"x/y/Zzz"}
0011: utf8{"()V"}
0012: nat{blort:x/y/Zzz}
0013: nat{blort:()V}
0014: field{Small.blort:x/y/Zzz}
0015: method{Small.blort:()V}
0016: ifaceMethod{Small.blort:()V}
end constant_pool
access_flags: public
this_class: type{Small}
super_class: type{java.lang.Object}
interfaces_count: 0000
fields_count: 0000
methods_count: 0001
methods[0]:
access_flags: public
name: blort
descriptor: ()V
attributes_count: 0001
attributes[0]:
name: Code
length: 000001db
max_stack: 0001
max_locals: 0001
code_length: 000001cf
0000: nop
0001: aconst_null
0002: iconst_m1 // #-01
0003: iconst_0 // #+00
0004: iconst_1 // #+01
0005: iconst_2 // #+02
0006: iconst_3 // #+03
0007: iconst_4 // #+04
0008: iconst_5 // #+05
0009: lconst_0 // +00
000a: lconst_1 // +01
000b: fconst_0 // 0.0
000c: fconst_1 // 1.0
000d: fconst_2 // 2.0
000e: dconst_0 // 0.0
000f: dconst_1 // 1.0
0010: bipush #+45
0012: sipush #+5432
0015: ldc string{"Small"}
0017: ldc #+12345678
0019: ldc #42f6e666 // 123.45
001b: ldc_w string{"Small"}
001e: ldc_w #+12345678
0021: ldc_w #42f6e666 // 123.45
0024: ldc2_w #+123456789abcdef0
0027: ldc2_w #411958955f8a0903 // 415269.3433
002a: iload 01
002c: lload 02 // category-2
002e: fload 03
0030: dload 04 // category-2
0032: aload 05
0034: iload_0 // 00
0035: iload_1 // 01
0036: iload_2 // 02
0037: iload_3 // 03
0038: lload_0 // 00, category-2
0039: lload_1 // 01, category-2
003a: lload_2 // 02, category-2
003b: lload_3 // 03, category-2
003c: fload_0 // 00
003d: fload_1 // 01
003e: fload_2 // 02
003f: fload_3 // 03
0040: dload_0 // 00, category-2
0041: dload_1 // 01, category-2
0042: dload_2 // 02, category-2
0043: dload_3 // 03, category-2
0044: aload_0 // 00
0045: aload_1 // 01
0046: aload_2 // 02
0047: aload_3 // 03
0048: iaload
0049: laload
004a: faload
004b: daload
004c: aaload
004d: baload
004e: caload
004f: saload
0050: istore 41
0052: lstore 42 // category-2
0054: fstore 43
0056: dstore 44 // category-2
0058: astore 45
005a: istore_0 // 00
005b: istore_1 // 01
005c: istore_2 // 02
005d: istore_3 // 03
005e: lstore_0 // 00, category-2
005f: lstore_1 // 01, category-2
0060: lstore_2 // 02, category-2
0061: lstore_3 // 03, category-2
0062: fstore_0 // 00
0063: fstore_1 // 01
0064: fstore_2 // 02
0065: fstore_3 // 03
0066: dstore_0 // 00, category-2
0067: dstore_1 // 01, category-2
0068: dstore_2 // 02, category-2
0069: dstore_3 // 03, category-2
006a: astore_0 // 00
006b: astore_1 // 01
006c: astore_2 // 02
006d: astore_3 // 03
006e: iastore
006f: lastore
0070: fastore
0071: dastore
0072: aastore
0073: bastore
0074: castore
0075: sastore
0076: pop
0077: pop2
0078: dup
0079: dup_x1
007a: dup_x2
007b: dup2
007c: dup2_x1
007d: dup2_x2
007e: swap
007f: iadd
0080: ladd
0081: fadd
0082: dadd
0083: isub
0084: lsub
0085: fsub
0086: dsub
0087: imul
0088: lmul
0089: fmul
008a: dmul
008b: idiv
008c: ldiv
008d: fdiv
008e: ddiv
008f: irem
0090: lrem
0091: frem
0092: drem
0093: ineg
0094: lneg
0095: fneg
0096: dneg
0097: ishl
0098: lshl
0099: ishr
009a: lshr
009b: iushr
009c: lushr
009d: iand
009e: land
009f: ior
00a0: lor
00a1: ixor
00a2: lxor
00a3: iinc 05, #-01
00a6: i2l
00a7: i2f
00a8: i2d
00a9: l2i
00aa: l2f
00ab: l2d
00ac: f2i
00ad: f2l
00ae: f2d
00af: d2i
00b0: d2l
00b1: d2f
00b2: i2b
00b3: i2c
00b4: i2s
00b5: lcmp
00b6: fcmpl
00b7: fcmpg
00b8: dcmpl
00b9: dcmpg
00ba: ifeq 00ba
00bd: ifne 00ba
00c0: iflt 00ba
00c3: ifge 00ba
00c6: ifgt 00ba
00c9: ifle 00ba
00cc: if_icmpeq 00db
00cf: if_icmpne 00db
00d2: if_icmplt 00db
00d5: if_icmpge 00db
00d8: if_icmpgt 00db
00db: if_icmple 00db
00de: if_acmpeq 00de
00e1: if_acmpne 00e1
00e4: goto 0000
00e7: jsr 00e7
00ea: ret 2f
00ec: tableswitch
+12340000: 0000
+12340001: 0001
+12340002: 0002
+12340003: 0003
+12340004: 0004
+12340005: 0005
+12340006: 0007
+12340007: 0009
default: 00ea
011c: lookupswitch
-7689edcc: 0148
+00001000: 0149
+03333333: 0149
+79787776: 014b
default: 00ec
0148: ireturn
0149: lreturn
014a: freturn
014b: dreturn
014c: areturn
014d: return
014e: getstatic field{Small.blort:x/y/Zzz}
0151: putstatic field{Small.blort:x/y/Zzz}
0154: getfield field{Small.blort:x/y/Zzz}
0157: putfield field{Small.blort:x/y/Zzz}
015a: invokevirtual method{Small.blort:()V}
015d: invokespecial method{Small.blort:()V}
0160: invokestatic method{Small.blort:()V}
0163: invokeinterface ifaceMethod{Small.blort:()V}, 0001
0168: new type{Small}
016b: newarray boolean
016d: newarray char
016f: newarray float
0171: newarray double
0173: newarray byte
0175: newarray short
0177: newarray int
0179: newarray long
017b: anewarray type{Small}
017e: arraylength
017f: athrow
0180: checkcast type{java.lang.Object}
0183: instanceof type{java.lang.Object}
0186: monitorenter
0187: monitorexit
0188: wide iload 0123
018c: wide lload 0124 // category-2
0190: wide fload 0125
0194: wide dload 0126 // category-2
0198: wide aload 0127
019c: wide istore 20f0
01a0: wide lstore 20f1 // category-2
01a4: wide fstore 20f2
01a8: wide dstore 20f3 // category-2
01ac: wide astore 20f4
01b0: wide ret ffff
01b4: wide iinc 0002, #+1000
01ba: multianewarray type{java.lang.Object}, 04
01be: ifnull ffff
01c1: ifnonnull 01c1
01c4: goto_w 700001c4
01c9: jsr_w 000001c4
01ce: unused_ca
exception_table_length: 0000
attributes_count: 0000
end attributes[0]
end methods[0]
attributes_count: 0000
end classfile
|