Java??????Class??????????
???????????? ???????[ 2013/10/21 10:01:59 ] ????????
????ClassFile?????16????????????????е?????????????????£?
????(1) magic
???????Class??????4??????????????????magic number??: 0xCAFEBABE????????????????????????????Java Class??????Java Class??????????????????????0xCAFEBABE??????????????Java Class????????????????淶J??????Java?????“Oak”?????????????????????????????Java????????????????????????????????J
????(2) minor_version??major_version
????Class?????????4??????????Ρ????汾????????и??????汾??????д?汾???Java?????????????Class????????Class?????汾???????Java?????????????????Ч??Χ??Java??????????????Class?????????J2SE5.0?汾????????????????J2SE6.0?汾????????????????Class?????
????(3) constant_pool_count
?????汾??????????constant_pool_count????????????????????????????????????Class????г??????б???????????????????????????????0??constant_pool??????????????????Class?????constant_pool?б??У?????????????Java??????????????????????????б????????constant_pool_count-1?????????????????????????1??constant_pool_count-1??
??????????????м????????????????£?????????constant_pool?????????б????constant_pool[ ]???????????????????б??е?????????????(???)????Щ?????????????????????????cp_type???????
????cp_type
??????????? ????
????CONSTANT_Class 7
????CONSTANT_Fieldref 9
????CONSTANT_Methodref 10
????CONSTANT_InterfaceMethodref 11
????CONSTANT_String 8
????CONSTANT_Integer 3
????CONSTANT_Float 4
????CONSTANT_Long 5
????CONSTANT_Double 6
????CONSTANT_NameAndType 12
????CONSTANT_Utf8 1
????(4) constant_pool[ ]
????constant_pool_count????????constant_pool[ ]???????????б?????д洢???ClassFile???????????????????????????????????????final????????????????????????Java Class????У?????????????????cp_info??????????????????б?????constant_pool_count-1???????????????cp_info????????constant_pool[ ]???顣?????constant_pool_count-1??constant_pool??????????????????????????????????????????????????????????????
????cp_info
????cp_info???tag?????????????byte???????????????cp_info?????????????????tag?????????
???????????????cp_info????????????????Class????У???????????о?????????CONSTANT_Xxxx_info??constant_pool??????????????cp_info???tag?????????????????????????cp_info?????info[]???????????????磬CONSTANT_Class_info???info[]???“u2 name_index”????CONSTANT_Utf8_info???info[]???“u2 length; u1 bytes[length];”?????????????cp_info?????????????С?????????????????????????С????????????????б??е????????????????????????????????б???С?????????Class????У????????б???????????????????
??????cp_info?????cp_type????????????????cp_info????tag(???)?????1????????cp_info?????CONSTANT_Utf8_info???????cp_info????tag?????3???????cp_info?????CONSTANT_Integer_info???????????????????Щ????????????JVM Spec??(2nded)???????????Inside JVM??(2nded)????????
????(5) access_flags
???????????????????????access_flags??access_flags?????????Java??????Щ??????????????磬?????????????ж????????????????????????????????????????У????????Щ???η???????????????????????????????access_flags??????Java???????????????????????????(mask???????????????access_flags????????з?????????????????δ????????λ??Class????ж????????0?????磬??access_flags?????0x0001???????Java??????????????ACC_PUBLIC????access_flags?????0x0011???????Java??????????????ACC_PUBLIC??ACC_FINAL?????????????????λ?????????0x0011?????????????)??
???????Java?????????access_flags????????±??????
????access_flags
??????????? ? ????
????ACC_PUBLIC 0x0001 ?????public?????????????????
????ACC_FINAL 0x0010 ?????final??????????????
????ACC_SUPER 0x0020 ??invokespecial????????????
????ACC_INTERFACE 0x0200 ????????????????????????
????ACC_ABSTRACT 0x0400 ?????abstract????????????
?????????????????????????Java?????????????б???е??????????????????е???????н????????????????????JVM Spec??(2nded)??
??????
???·???
??????????????????
2023/3/23 14:23:39???д?ò??????????
2023/3/22 16:17:39????????????????????Щ??
2022/6/14 16:14:27??????????????????????????
2021/10/18 15:37:44???????????????
2021/9/17 15:19:29???·???????·
2021/9/14 15:42:25?????????????
2021/5/28 17:25:47??????APP??????????
2021/5/8 17:01:11