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