xref: /aosp_15_r20/dalvik/dx/tests/024-code-bytecode/small-class.txt (revision 055d459012065f78d96b68be8421640240ddf631)
1*055d4590SKeyi Gui#
2*055d4590SKeyi Gui# sample small-but-valid classfile
3*055d4590SKeyi Gui#
4*055d4590SKeyi Gui
5*055d4590SKeyi Guicafe babe  # magic
6*055d4590SKeyi Gui0000       # minor_version
7*055d4590SKeyi Gui002e       # major_version
8*055d4590SKeyi Gui0017       # constant_pool_count
9*055d4590SKeyi Gui
10*055d4590SKeyi Gui#
11*055d4590SKeyi Gui# constant_pool
12*055d4590SKeyi Gui#
13*055d4590SKeyi Gui07 0003                    # 0001: class[Small]
14*055d4590SKeyi Gui07 0004                    # 0002: class[java/lang/Object]
15*055d4590SKeyi Gui01 0005 "Small"            # 0003: utf8["Small"]
16*055d4590SKeyi Gui01 0010 "java/lang/Object" # 0004: utf8["java/lang/Object"]
17*055d4590SKeyi Gui01 0005 "blort"            # 0005: utf8["blort"]
18*055d4590SKeyi Gui01 0003 "()V"              # 0006: utf8["()V"]
19*055d4590SKeyi Gui01 0004 "Code"             # 0007: utf8["Code"]
20*055d4590SKeyi Gui08 0003                    # 0008: string["Small"]
21*055d4590SKeyi Gui03 12345678                # 0009: integer[0x12345678]
22*055d4590SKeyi Gui04 42f6e666                # 000a: float[123.45]
23*055d4590SKeyi Gui05 12345678 9abcdef0       # 000b: long[0x1234567890abcdef0]
24*055d4590SKeyi Gui06 41195895 5f8a0903       # 000d: double[415269.3433]
25*055d4590SKeyi Gui01 0005 "blort"            # 000f: utf8["blort"]
26*055d4590SKeyi Gui01 0007 "x/y/Zzz"          # 0010: utf8["x/y/Zzz"]
27*055d4590SKeyi Gui01 0003 "()V"              # 0011: utf8["()V"]
28*055d4590SKeyi Gui0c 000f 0010               # 0012: nat[blort:x/y/Zzz]
29*055d4590SKeyi Gui0c 000f 0011               # 0013: nat[blort:()V]
30*055d4590SKeyi Gui09 0001 0012               # 0014: field[Small.blort:x/y/Zzz]
31*055d4590SKeyi Gui0a 0001 0013               # 0015: method[Small.blort:()V]
32*055d4590SKeyi Gui0b 0001 0013               # 0016: ifaceMethod[Small.blort:()V]
33*055d4590SKeyi Gui
34*055d4590SKeyi Gui0001  # access_flags
35*055d4590SKeyi Gui0001  # this_class
36*055d4590SKeyi Gui0002  # super_class
37*055d4590SKeyi Gui0000  # interfaces_count
38*055d4590SKeyi Gui0000  # fields_count
39*055d4590SKeyi Gui0001  # methods_count
40*055d4590SKeyi Gui
41*055d4590SKeyi Gui# methods[0]
42*055d4590SKeyi Gui0001  # access_flags
43*055d4590SKeyi Gui0005  # name
44*055d4590SKeyi Gui0006  # descriptor
45*055d4590SKeyi Gui0001  # attributes_count
46*055d4590SKeyi Gui# attributes[0]
47*055d4590SKeyi Gui0007      # name
48*055d4590SKeyi Gui000001db  # length (note: == code_length + 0x0c)
49*055d4590SKeyi Gui0001      # max_stack
50*055d4590SKeyi Gui0001      # max_locals
51*055d4590SKeyi Gui000001cf  # code_length
52*055d4590SKeyi Gui
53*055d4590SKeyi Gui00        # 0000: nop
54*055d4590SKeyi Gui01        # 0001: aconst_null
55*055d4590SKeyi Gui02        # 0002: aconst_m1
56*055d4590SKeyi Gui03        # 0003: iconst_0
57*055d4590SKeyi Gui04        # 0004: iconst_1
58*055d4590SKeyi Gui05        # 0005: iconst_2
59*055d4590SKeyi Gui06        # 0006: iconst_3
60*055d4590SKeyi Gui07        # 0007: iconst_4
61*055d4590SKeyi Gui08        # 0008: iconst_5
62*055d4590SKeyi Gui09        # 0009: lconst_0
63*055d4590SKeyi Gui0a        # 000a: lconst_1
64*055d4590SKeyi Gui0b        # 000b: fconst_0
65*055d4590SKeyi Gui0c        # 000c: fconst_1
66*055d4590SKeyi Gui0d        # 000d: fconst_2
67*055d4590SKeyi Gui0e        # 000e: dconst_0
68*055d4590SKeyi Gui0f        # 000f: dconst_1
69*055d4590SKeyi Gui10 45     # 0010: bipush #+45
70*055d4590SKeyi Gui11 5432   # 0012: sipush #+5432
71*055d4590SKeyi Gui12 08     # 0015: ldc <string>
72*055d4590SKeyi Gui12 09     # 0017: ldc <integer>
73*055d4590SKeyi Gui12 0a     # 0019: ldc <float>
74*055d4590SKeyi Gui13 0008   # 001b: ldc_w <string>
75*055d4590SKeyi Gui13 0009   # 001e: ldc_w <integer>
76*055d4590SKeyi Gui13 000a   # 0021: ldc_w <float>
77*055d4590SKeyi Gui14 000b   # 0024: ldc2_w <long>
78*055d4590SKeyi Gui14 000d   # 0027: ldc2_w <double>
79*055d4590SKeyi Gui15 01     # 002a: iload 01
80*055d4590SKeyi Gui16 02     # 002c: lload 02
81*055d4590SKeyi Gui17 03     # 002e: fload 03
82*055d4590SKeyi Gui18 04     # 0030: dload 04
83*055d4590SKeyi Gui19 05     # 0032: aload 05
84*055d4590SKeyi Gui1a        # 0034: iload_0
85*055d4590SKeyi Gui1b        # 0035: iload_1
86*055d4590SKeyi Gui1c        # 0036: iload_2
87*055d4590SKeyi Gui1d        # 0037: iload_3
88*055d4590SKeyi Gui1e        # 0038: lload_0
89*055d4590SKeyi Gui1f        # 0039: lload_1
90*055d4590SKeyi Gui20        # 003a: lload_2
91*055d4590SKeyi Gui21        # 003b: lload_3
92*055d4590SKeyi Gui22        # 003c: fload_0
93*055d4590SKeyi Gui23        # 003d: fload_1
94*055d4590SKeyi Gui24        # 003e: fload_2
95*055d4590SKeyi Gui25        # 003f: fload_3
96*055d4590SKeyi Gui26        # 0040: dload_0
97*055d4590SKeyi Gui27        # 0041: dload_1
98*055d4590SKeyi Gui28        # 0042: dload_2
99*055d4590SKeyi Gui29        # 0043: dload_3
100*055d4590SKeyi Gui2a        # 0044: aload_0
101*055d4590SKeyi Gui2b        # 0045: aload_1
102*055d4590SKeyi Gui2c        # 0046: aload_2
103*055d4590SKeyi Gui2d        # 0047: aload_3
104*055d4590SKeyi Gui2e        # 0048: iaload
105*055d4590SKeyi Gui2f        # 0049: laload
106*055d4590SKeyi Gui30        # 004a: faload
107*055d4590SKeyi Gui31        # 004b: daload
108*055d4590SKeyi Gui32        # 004c: aaload
109*055d4590SKeyi Gui33        # 004d: baload
110*055d4590SKeyi Gui34        # 004e: caload
111*055d4590SKeyi Gui35        # 004f: saload
112*055d4590SKeyi Gui36 41     # 0050: istore 41
113*055d4590SKeyi Gui37 42     # 0052: lstore 42
114*055d4590SKeyi Gui38 43     # 0054: fstore 43
115*055d4590SKeyi Gui39 44     # 0056: dstore 44
116*055d4590SKeyi Gui3a 45     # 0058: astore 45
117*055d4590SKeyi Gui3b        # 005a: istore_0
118*055d4590SKeyi Gui3c        # 005b: istore_1
119*055d4590SKeyi Gui3d        # 005c: istore_2
120*055d4590SKeyi Gui3e        # 005d: istore_3
121*055d4590SKeyi Gui3f        # 005e: lstore_0
122*055d4590SKeyi Gui40        # 005f: lstore_1
123*055d4590SKeyi Gui41        # 0060: lstore_2
124*055d4590SKeyi Gui42        # 0061: lstore_3
125*055d4590SKeyi Gui43        # 0062: fstore_0
126*055d4590SKeyi Gui44        # 0063: fstore_1
127*055d4590SKeyi Gui45        # 0064: fstore_2
128*055d4590SKeyi Gui46        # 0065: fstore_3
129*055d4590SKeyi Gui47        # 0066: dstore_0
130*055d4590SKeyi Gui48        # 0067: dstore_1
131*055d4590SKeyi Gui49        # 0068: dstore_2
132*055d4590SKeyi Gui4a        # 0069: dstore_3
133*055d4590SKeyi Gui4b        # 006a: astore_0
134*055d4590SKeyi Gui4c        # 006b: astore_1
135*055d4590SKeyi Gui4d        # 006c: astore_2
136*055d4590SKeyi Gui4e        # 006d: astore_3
137*055d4590SKeyi Gui4f        # 006e: iastore
138*055d4590SKeyi Gui50        # 006f: lastore
139*055d4590SKeyi Gui51        # 0070: fastore
140*055d4590SKeyi Gui52        # 0071: dastore
141*055d4590SKeyi Gui53        # 0072: aastore
142*055d4590SKeyi Gui54        # 0073: bastore
143*055d4590SKeyi Gui55        # 0074: castore
144*055d4590SKeyi Gui56        # 0075: sastore
145*055d4590SKeyi Gui57        # 0076: pop
146*055d4590SKeyi Gui58        # 0077: pop2
147*055d4590SKeyi Gui59        # 0078: dup
148*055d4590SKeyi Gui5a        # 0079: dup_x1
149*055d4590SKeyi Gui5b        # 007a: dup_x2
150*055d4590SKeyi Gui5c        # 007b: dup2
151*055d4590SKeyi Gui5d        # 007c: dup2_x1
152*055d4590SKeyi Gui5e        # 007d: dup2_x2
153*055d4590SKeyi Gui5f        # 007e: swap
154*055d4590SKeyi Gui60        # 007f: iadd
155*055d4590SKeyi Gui61        # 0080: ladd
156*055d4590SKeyi Gui62        # 0081: fadd
157*055d4590SKeyi Gui63        # 0082: dadd
158*055d4590SKeyi Gui64        # 0083: isub
159*055d4590SKeyi Gui65        # 0084: lsub
160*055d4590SKeyi Gui66        # 0085: fsub
161*055d4590SKeyi Gui67        # 0086: dsub
162*055d4590SKeyi Gui68        # 0087: imul
163*055d4590SKeyi Gui69        # 0088: lmul
164*055d4590SKeyi Gui6a        # 0089: fmul
165*055d4590SKeyi Gui6b        # 008a: dmul
166*055d4590SKeyi Gui6c        # 008b: idiv
167*055d4590SKeyi Gui6d        # 008c: ldiv
168*055d4590SKeyi Gui6e        # 008d: fdiv
169*055d4590SKeyi Gui6f        # 008e: ddiv
170*055d4590SKeyi Gui70        # 008f: irem
171*055d4590SKeyi Gui71        # 0090: lrem
172*055d4590SKeyi Gui72        # 0091: frem
173*055d4590SKeyi Gui73        # 0092: drem
174*055d4590SKeyi Gui74        # 0093: ineg
175*055d4590SKeyi Gui75        # 0094: lneg
176*055d4590SKeyi Gui76        # 0095: fneg
177*055d4590SKeyi Gui77        # 0096: dneg
178*055d4590SKeyi Gui78        # 0097: ishl
179*055d4590SKeyi Gui79        # 0098: lshl
180*055d4590SKeyi Gui7a        # 0099: ishr
181*055d4590SKeyi Gui7b        # 009a: lshr
182*055d4590SKeyi Gui7c        # 009b: iushr
183*055d4590SKeyi Gui7d        # 009c: lushr
184*055d4590SKeyi Gui7e        # 009d: iand
185*055d4590SKeyi Gui7f        # 009e: land
186*055d4590SKeyi Gui80        # 009f: ior
187*055d4590SKeyi Gui81        # 00a0: lor
188*055d4590SKeyi Gui82        # 00a1: ixor
189*055d4590SKeyi Gui83        # 00a2: lxor
190*055d4590SKeyi Gui84 05 ff  # 00a3: iinc 05, #-1
191*055d4590SKeyi Gui85        # 00a6: i2l
192*055d4590SKeyi Gui86        # 00a7: i2f
193*055d4590SKeyi Gui87        # 00a8: i2d
194*055d4590SKeyi Gui88        # 00a9: l2i
195*055d4590SKeyi Gui89        # 00aa: l2f
196*055d4590SKeyi Gui8a        # 00ab: l2d
197*055d4590SKeyi Gui8b        # 00ac: f2i
198*055d4590SKeyi Gui8c        # 00ad: f2l
199*055d4590SKeyi Gui8d        # 00ae: f2d
200*055d4590SKeyi Gui8e        # 00af: d2i
201*055d4590SKeyi Gui8f        # 00b0: d2l
202*055d4590SKeyi Gui90        # 00b1: d2f
203*055d4590SKeyi Gui91        # 00b2: i2b
204*055d4590SKeyi Gui92        # 00b3: i2c
205*055d4590SKeyi Gui93        # 00b4: i2s
206*055d4590SKeyi Gui94        # 00b5: lcmp
207*055d4590SKeyi Gui95        # 00b6: fcmpl
208*055d4590SKeyi Gui96        # 00b7: fcmpg
209*055d4590SKeyi Gui97        # 00b8: dcmpl
210*055d4590SKeyi Gui98        # 00b9: dcmpg
211*055d4590SKeyi Gui99 0000   # 00ba: ifeq 00ba
212*055d4590SKeyi Gui9a fffd   # 00bd: ifne 00ba
213*055d4590SKeyi Gui9b fffa   # 00c0: iflt 00ba
214*055d4590SKeyi Gui9c fff7   # 00c3: ifge 00ba
215*055d4590SKeyi Gui9d fff4   # 00c6: ifgt 00ba
216*055d4590SKeyi Gui9e fff1   # 00c9: ifle 00ba
217*055d4590SKeyi Gui9f 000f   # 00cc: if_icmpeq 00db
218*055d4590SKeyi Guia0 000c   # 00cf: if_icmpne 00db
219*055d4590SKeyi Guia1 0009   # 00d2: if_icmplt 00db
220*055d4590SKeyi Guia2 0006   # 00d5: if_icmpge 00db
221*055d4590SKeyi Guia3 0003   # 00d8: if_icmpgt 00db
222*055d4590SKeyi Guia4 0000   # 00db: if_icmple 00db
223*055d4590SKeyi Guia5 0000   # 00de: if_acmpeq 00de
224*055d4590SKeyi Guia6 0000   # 00e1: if_acmpne 00e1
225*055d4590SKeyi Guia7 ff1c   # 00e4: goto 0000
226*055d4590SKeyi Guia8 0000   # 00e7: jsr 00e7
227*055d4590SKeyi Guia9 2f     # 00ea: ret 2f
228*055d4590SKeyi Guiaa 000000 # 00ec: tableswitch + padding
229*055d4590SKeyi Gui fffffffe #   default: 000000ea
230*055d4590SKeyi Gui 12340000 #   low: 12340000
231*055d4590SKeyi Gui 12340007 #   high: 12340007
232*055d4590SKeyi Gui ffffff14 #   [0]: 00000000
233*055d4590SKeyi Gui ffffff15 #   [1]: 00000001
234*055d4590SKeyi Gui ffffff16 #   [2]: 00000002
235*055d4590SKeyi Gui ffffff17 #   [3]: 00000003
236*055d4590SKeyi Gui ffffff18 #   [4]: 00000004
237*055d4590SKeyi Gui ffffff19 #   [5]: 00000005
238*055d4590SKeyi Gui ffffff1b #   [6]: 00000007
239*055d4590SKeyi Gui ffffff1d #   [7]: 00000009
240*055d4590SKeyi Guiab 000000 # 011c: lookupswitch + padding
241*055d4590SKeyi Gui ffffffd0 #   default: 000000ec
242*055d4590SKeyi Gui 00000004 #   npairs: 4
243*055d4590SKeyi Gui 89761234 #   match[0]: 89761234
244*055d4590SKeyi Gui 0000002c #   offset[0]: 0148
245*055d4590SKeyi Gui 00001000 #   match[1]: 00001000
246*055d4590SKeyi Gui 0000002d #   offset[1]: 0149
247*055d4590SKeyi Gui 03333333 #   match[2]: 03333333
248*055d4590SKeyi Gui 0000002d #   offset[2]: 0149
249*055d4590SKeyi Gui 79787776 #   match[3]: 79787776
250*055d4590SKeyi Gui 0000002f #   offset[3]: 014b
251*055d4590SKeyi Guiac        # 0148: ireturn
252*055d4590SKeyi Guiad        # 0149: lreturn
253*055d4590SKeyi Guiae        # 014a: freturn
254*055d4590SKeyi Guiaf        # 014b: dreturn
255*055d4590SKeyi Guib0        # 014c: areturn
256*055d4590SKeyi Guib1        # 014d: return
257*055d4590SKeyi Guib2 0014   # 014e: getstatic 0014
258*055d4590SKeyi Guib3 0014   # 0151: putstatic 0014
259*055d4590SKeyi Guib4 0014   # 0154: getfield 0014
260*055d4590SKeyi Guib5 0014   # 0157: putfield 0014
261*055d4590SKeyi Guib6 0015   # 015a: invokevirtual 0015
262*055d4590SKeyi Guib7 0015   # 015d: invokespecial 0015
263*055d4590SKeyi Guib8 0015   # 0160: invokestatic 0015
264*055d4590SKeyi Guib9 0016 01 00  # 0163: invokeinterface 0016
265*055d4590SKeyi Guibb 0001   # 0169: new 0001
266*055d4590SKeyi Guibc 04     # 016c: newarray boolean
267*055d4590SKeyi Guibc 05     # 016e: newarray char
268*055d4590SKeyi Guibc 06     # 0170: newarray float
269*055d4590SKeyi Guibc 07     # 0172: newarray double
270*055d4590SKeyi Guibc 08     # 0174: newarray byte
271*055d4590SKeyi Guibc 09     # 0176: newarray short
272*055d4590SKeyi Guibc 0a     # 0178: newarray int
273*055d4590SKeyi Guibc 0b     # 017a: newarray long
274*055d4590SKeyi Guibd 0001   # 017c: anewarray 0001
275*055d4590SKeyi Guibe        # 017f: arraylength
276*055d4590SKeyi Guibf        # 0180: athrow
277*055d4590SKeyi Guic0 0002   # 0181: checkcast 0002
278*055d4590SKeyi Guic1 0002   # 0184: instanceof 0002
279*055d4590SKeyi Guic2        # 0187: monitorenter
280*055d4590SKeyi Guic3        # 0188: monitorexit
281*055d4590SKeyi Guic415 0123 # 0189: wide iload 0123
282*055d4590SKeyi Guic416 0124 # 018d: wide lload 0124
283*055d4590SKeyi Guic417 0125 # 0191: wide fload 0125
284*055d4590SKeyi Guic418 0126 # 0195: wide dload 0126
285*055d4590SKeyi Guic419 0127 # 0199: wide aload 0127
286*055d4590SKeyi Guic436 20f0 # 019d: wide istore 20f0
287*055d4590SKeyi Guic437 20f1 # 01a1: wide lstore 20f1
288*055d4590SKeyi Guic438 20f2 # 01a5: wide fstore 20f2
289*055d4590SKeyi Guic439 20f3 # 01a9: wide dstore 20f3
290*055d4590SKeyi Guic43a 20f4 # 01ad: wide astore 20f4
291*055d4590SKeyi Guic4a9 ffff # 01b1: wide ret ffff
292*055d4590SKeyi Guic484 0002 1000 # 01b5: wide iinc 0002, 1000
293*055d4590SKeyi Guic5 0002 04 # 01bb: multianewarray 0002, #04
294*055d4590SKeyi Guic6 fe41   # 01bf: ifnull 0000
295*055d4590SKeyi Guic7 0000   # 01c2: ifnonnull 01c2
296*055d4590SKeyi Guic8 70000000 # 01c5: goto_w 700001c5
297*055d4590SKeyi Guic9 fffffffb # 01ca: jsr_w 000001c5
298*055d4590SKeyi Guica        # 01cf: <unused>
299*055d4590SKeyi Gui
300*055d4590SKeyi Gui0000      # exception_table_length
301*055d4590SKeyi Gui0000      # attributes_count
302*055d4590SKeyi Gui
303*055d4590SKeyi Gui0000  # attributes_count
304