summaryrefslogtreecommitdiffstats
path: root/dx/tests/024-code-bytecode/small-class.txt
blob: 2526cf2b25e251386a4425e9790bee7eb3fa42c2 (plain)
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
294
295
296
297
298
299
300
301
302
303
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