日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

剖析java的class文件結構

瀏覽:197日期:2024-07-02 14:24:50
內容: 定義:u1 1個字節為單位的非負值 u2 2個字節為單位的非負值 u3 . . . . . . . . (其他以此類推 ) Java文件結構用類似struct的描述如下: ClassFile { u4 magic; // 必須為: 0xCAFEBABE u2 minor_version; u2 major_version; //CLASS文件結構主次版本號 JAVA2支持45.0-46.0 u2 constant_pool_count; //記錄常量信息 cp_info constant_pool[constant_pool_count-1]; //計數從1開始 u2 access_flags; //class/interface訪問權限 u2 this_class; //指向constant_poll中的有效索引值 u2 super_class; //0或指向constant_poll中的有效索引值,對于interface必須為非0 u2 interfaces_count; //superinterfaces的個數 u2 interfaces[interfaces_count]; //計數[0,count-1) 對應constant_pool中的一個索引值 u2 fields_count; field_info fields[fields_count]; //主要用于記錄class及實例中的變量 u2 methods_count; method_info methods[methods_count]; u2 attributes_count; attribute_info attributes[attributes_count]; } cp_info { u1 tag; u1 info[]; }tag 意義如下: 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 此時cp_info分別對應結構變化為 1. CONSTANT_Class CONSTANT_Class_info { u1 tag; u2 name_index; } 2. CONSTANT_Fieldref CONSTANT_Fieldref_info { u1 tag; u2 class_index; //constant_pool的索引,對應CONSTANT_Class_info u2 name_and_type_index;//constant_pool的索引,對應CONSTANT_NameAndType_info } 3. CONSTANT_Methodref CONSTANT_Methodref_info { u1 tag; u2 class_index; u2 name_and_type_index; } 4. CONSTANT_InterfaceMethodref CONSTANT_InterfaceMethodref_info { u1 tag; u2 class_index; u2 name_and_type_index; } 5. CONSTANT_String CONSTANT_String_info { u1 tag; u2 string_index; } 6. CONSTANT_Integer CONSTANT_Integer_info { u1 tag; u4 bytes; } 7. CONSTANT_Float CONSTANT_Float_info { u1 tag; u4 bytes; } 8. CONSTANT_Long CONSTANT_Long_info { u1 tag; u4 high_bytes; u4 low_bytes; } 9. CONSTANT_Double CONSTANT_Double_info { u1 tag; u4 high_bytes; u4 low_bytes } 10.CONSTANT_NameAndType CONSTANT_NameAndType_info { u1 tag; u2 name_index; u2 descriptor_index; } 11.CONSTANT_Utf8 CONSTANT_Utf8_info { u1 tag; u2 length; u1 bytes[length]; } access_flags意義如下: ACC_PUBLIC 0x0001 ACC_FINAL 0x0010 ACC_SUPER 0x0020 ACC_INTERFACE 0x0200 ACC_ABSTRACT 0x0400 如果是interface那么必須置ACC_INTERFACE,如果沒有置ACC_INTERFACE則定義的是一個類而非接口。 如果設置了ACC_INTERFACE,那么ACC_ABSTRACT位也必須被設置,當然也可以設置ACC_PUBLIC。 ACC_SUPER用以表明invokespecial語義,Sun公司老的JAVA編譯器沒有設置ACC_SUPER,并且老的JVM 忽略ACC_SUPER位,但新的編譯器應該實現invokespecial語義。 其他未指明的位保留將來使用,并且編譯器應當將其置為0,同時Java虛擬機應當忽略他們。 this_class: constant_pool中的索引值,指向的元素的cp_info等價為CONSTANT_Class_info CONSTANT_Class_info { u1 tag; //必須為CONSTANT_Class (7) u2 name_index; //為指向constant_pool中的一個索引值 } name_index :指向的元素的cp_info等價為CONSTANT_Utf8_info CONSTANT_Utf8_info { u1 tag; //必須為CONSTANT_Utf8 (1) u2 length; u1 bytes[length]; //Utf8編碼的字符串 } field_info { u2 access_flags; //訪問控制權 u2 name_index; //constant_pool中的索引,對應于CONSTANT_Utf8_info描述。 u2 descriptor_index; //constant_pool中的索引,對應于CONSTANT_Utf8_info描述。 u2 attributes_count; attribute_info attributes[attributes_count]; //attribute_info將在mothods后描述。 } field_info中access_flages意義如下: ACC_PUBLIC 0x0001 ACC_PRIVATE 0x0002 ACC_PROTECTED 0x0004 ACC_STATIC 0x0008 ACC_FINAL 0x0010 ACC_VOLATILE 0x0040 ACC_TRANSIENT 0x0080 其中很顯然不能同時為ACC_FINAL和ACC_VOLATILE ;且前三項是互斥的。 interface必須置ACC_PUBLIC, ACC_STATIC,ACC_FINAL位,且不能置其他位。 其他未指明的位保留將來使用,并且編譯器應當將其置為0,同時Java虛擬機應當忽略他們。 methods指明了類中的所有方法。 method_info { u2 access_flags; u2 name_index; //指向constant_pool的入口,對應為CONSTANT_Utf8_info u2 descriptor_index; //指向constant_pool的入口,對應為CONSTANT_Utf8_info u2 attributes_count; attribute_info attributes[attributes_count]; //此處只能出現Code、Exceptions、Synthetic、Deprecated四種類型的屬性 } access_flags訪問權描述如下: ACC_PUBLIC 0x0001 ACC_PRIVATE 0x0002 ACC_PROTECTED 0x0004 ACC_STATIC 0x0008 ACC_FINAL 0x0010 ACC_SYNCHRONIZED 0x0020 ACC_NATIVE 0x0100 ACC_ABSTRACT 0x0400 ACC_STRICT 0x0800 attribute_info { u2 attribute_name_index; //constant_pool中的索引,對應于CONSTANT_Utf8_info描述。 u4 attribute_length; u1 info[attribute_length]; } 現在已經預定義的屬性有: 1. SourceFile : attribute_info被替代為: SourceFile_attribute { u2 attribute_name_index; u4 attribute_length; u2 sourcefile_index; //指向constant_pool中的一個CONSTANT_Utf8_info 結構。 } 2. ConstantValue : attribute_info被替代為: ConstantValue_attribute { u2 attribute_name_index; u4 attribute_length; //必須為2 u2 constantvalue_index; } 對于constantvalue_index意義如下: longCONSTANT_Long floatCONSTANT_Float double CONSTANT_Double int, short, char, byte, boolean CONSTANT_Integer String CONSTANT_String ConstantValue用于field_info 中,用于描述一個static常量, 且此時field_info的access_flags應為ACC_STATIC 3. Code : attribute_info被替代為: Code_attribute { u2 attribute_name_index; u4 attribute_length; u2 max_stack; //執行此函數時可用的棧的最大深度 u2 max_locals; //執行此函數可用到的最大本地變量數目,包括參數。 // 注意:一個long/double相當于2個變量數目. u4 code_length; //本函數用到的代碼長度。 u1 code[code_length]; //實現本函數的真正字節碼 u2 exception_table_length; { u2 start_pc; u2 end_pc; //捕獲違例時執行代碼數組中的[start_pc, end_pc)部分 u2 handler_pc; //現在還不大明白他是干嘛的!! u2 catch_type; //指向constant_pool的索引,對應CONSTANT_Class_info }exception_table[exception_table_length]; u2 attributes_count; attribute_info attributes[attributes_count]; } CONSTANT_Class_info { u1 tag; //必須為CONSTANT_Class (7) u2 name_index; //不用我再說了吧? } Code屬性用于method_info結構中。 4. Exceptions : attribute_info被替代為: Exceptions_attribute { u2 attribute_name_index; u4 attribute_length; u2 number_of_exceptions; u2 exception_index_table[number_of_exceptions]; } 5. InnerClasses : attribute_info被替代為: InnerClasses_attribute { u2 attribute_name_index; u4 attribute_length; u2 number_of_classes; { u2 inner_class_info_index; u2 outer_class_info_index; u2 inner_name_index; u2 inner_class_access_flags; } classes[number_of_classes]; } 6. Synthetic : attribute_info被替代為: Synthetic_attribute { u2 attribute_name_index; //不用廢話了吧? u4 attribute_length; //必須為0 } Synthetic用在 field_info、 method_info 中, 一個沒有出現在源程序中的變量必須使用Synthetic標記。 7. LineNumberTable : attribute_info被替代為: LineNumberTable_attribute { u2 attribute_name_index; u4 attribute_length; u2 line_number_table_length; { u2 start_pc; //代碼數組中的開始處 u2 line_number; //源文件中的行號(對于每一非空行都有這么一項) } line_number_table[line_number_table_length]; } LineNumberTable用于Code屬性中,通常用于調試。 8. LocalVariableTable : attribute_info被替代為: LocalVariableTable_attribute { u2 attribute_name_index; u4 attribute_length; u2 local_variable_table_length; { u2 start_pc; u2 length; //當解釋到代碼數組的[start_pc,start_pc+length] //時變量必須被賦值?? u2 name_index; u2 descriptor_index; u2 index; //到本地變量數組的一個索引 } local_variable_table[local_variable_table_length]; } 9. Deprecated : attribute_info被替代為: Deprecated_attribute { u2 attribute_name_index; u4 attribute_length; //必須為0 } 當然你也可以定義自己的屬性,但要你自己的編譯器和虛擬機實現。JVM將忽略自己不認可的屬性。來實踐一下吧!編寫一個最簡單的程序:class Test { public static void main(String[] args) { System.out.println('Hello World!'); }}c:work>javac Test.javac:work>filedump Test.classFile Dump V0.3 Beta by cloud (safesuite@363.net).01:00 ca fe ba be 00 03 00 2d 00 1d 0a 00 06 00 0f 09 .......-........01:01 00 10 00 11 08 00 12 0a 00 13 00 14 07 00 15 07 ................01:02 00 16 01 00 06 3c 69 6e 69 74 3e 01 00 03 28 29 ........()01:03 56 01 00 04 43 6f 64 65 01 00 0f 4c 69 6e 65 4e V...Code...LineN01:04 75 6d 62 65 72 54 61 62 6c 65 01 00 04 6d 61 69 umberTable...mai01:05 6e 01 00 16 28 5b 4c 6a 61 76 61 2f 6c 61 6e 67 n...([Ljava/lang01:06 2f 53 74 72 69 6e 67 3b 29 56 01 00 0a 53 6f 75 /String;)V...Sou01:07 72 63 65 46 69 6c 65 01 00 09 54 65 73 74 2e 6a rceFile...Test.j>d02:00 61 76 61 0c 00 07 00 08 07 00 17 0c 00 18 00 19 ava.............02:01 01 00 0c 48 65 6c 6c 6f 20 57 6f 72 6c 64 21 07 ...Hello World!.02:02 00 1a 0c 00 1b 00 1c 01 00 04 54 65 73 74 01 00 ..........Test..02:03 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 .java/lang/Objec02:04 74 01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 53 79 t...java/lang/Sy02:05 73 74 65 6d 01 00 03 6f 75 74 01 00 15 4c 6a 61 stem...out...Lja02:06 76 61 2f 69 6f 2f 50 72 69 6e 74 53 74 72 65 61 va/io/PrintStrea02:07 6d 3b 01 00 13 6a 61 76 61 2f 69 6f 2f 50 72 69 m;...java/io/Pri>d03:00 6e 74 53 74 72 65 61 6d 01 00 07 70 72 69 6e 74 ntStream...print03:01 6c 6e 01 00 15 28 4c 6a 61 76 61 2f 6c 61 6e 67 ln...(Ljava/lang03:02 2f 53 74 72 69 6e 67 3b 29 56 00 20 00 05 00 06 /String;)V. ....03:03 00 00 00 00 00 02 00 00 00 07 00 08 00 01 00 09 ................03:04 00 00 00 1d 00 01 00 01 00 00 00 05 2a b7 00 01 ............*...03:05 b1 00 00 00 01 00 0a 00 00 00 06 00 01 00 00 00 ................03:06 01 00 09 00 0b 00 0c 00 01 00 09 00 00 00 25 00 ..............%.03:07 02 00 01 00 00 00 09 b2 00 02 12 03 b6 00 04 b1 ................>d04:00 00 00 00 01 00 0a 00 00 00 0a 00 02 00 00 00 05 ................04:01 00 08 00 06 00 01 00 0d 00 00 00 02 00 0e ..............>解讀一下:ca fe ba be magic00 03 00 2d 次主版本號,換算一下: 45.3 (注意,不是高字節在前,別犯職業病!)00 1d constant_pool元素個數加一 : 29 那么constant_pool就是[1-28]constant_pool: 1-281. 0a 00 06 00 0f 0x0a :CONSTANT_InterfaceMethodref 0x06 :class index 0x0f :name-type-index2. 09 00 10 00 11 0x09 : CONSTANT_Fieldref 0x10: . . . 0x11 : . . . .3. 08 00 12 0x08 : CONSTANT_String 0x12 : string_index4. 0a 00 13 00 14 0x0a同于1.5. 07 00 15 0x07 : CONSTANT_Class 0x15 : name_index6. 07 00 16 7. 01 00 06 3c 69 6e 69 74 3e 01 ... 0x01 CONSTANT_Utf8 0x06 : string length '' : 構造函數8. 01 00 03 28 29 56 ...()V 函數,無參數 0x01 . . . . . . 0x03 : . . . . '()V' : . . .9. 01 00 04 43 6f 64 65 ...Code10. 01 00 0f 4c 69 6e 65 4e 75 6d 62 65 72 54 61 62 6c 65 ...LineNumberTable11. 01 00 04 6d 61 69 6e ...main12. 01 00 16 28 5b 4c 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 3b 29 56 ...([Ljava/lang/String;)V 函數,參數為String[]類型13. 01 00 0a 53 6f 75 72 63 65 46 69 6c 65 ...SourceFile14. 01 00 09 54 65 73 74 2e 6a 61 76 61 ...Test.java15. 0c 00 07 00 08 0x0c:CONSTANT_NameAndType 07 : name-index 08:name-type-index16. 07 00 1717. 0c 00 18 00 1918. 01 00 0c 48 65 6c 6c 6f 20 57 6f 72 6c 64 21 ...Hello World!19. 07 00 1a20. 0c 00 1b 00 1c21. 01 00 04 54 65 73 74 ...Test22. 01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 4f 62 6a 65 63 74 ...java/lang/Object23. 01 00 10 6a 61 76 61 2f 6c 61 6e 67 2f 53 79 73 74 65 6d ...java/lang/System24. 01 00 03 6f 75 74 ...out25. 01 00 15 4c 6a 61 76 61 2f 69 6f 2f 50 72 69 6e 74 53 74 72 65 61 6d 3b ...Ljava/io/PrintStream;26. 01 00 13 6a 61 76 61 2f 69 6f 2f 50 72 69 6e 74 53 74 72 65 61 6d...java/io/PrintStream27. 01 00 07 70 72 69 6e 74 6c 6e ...println28. 01 00 15 28 4c 6a 61 76 61 2f 6c 61 6e 67 2f 53 74 72 69 6e 67 3b 29 56 ...(Ljava/lang/String;)V00 20 access_flags 00 05 this_class00 06 super_class00 00 interfaces_count00 00 fields_count00 02 methods_countmethods[2]:method_info { u2 access_flags; u2 name_index; u2 descriptor_index; u2 attributes_count; attribute_info attributes[attributes_count];}0. 00 00 access_flags; 00 07 name_index; 看看constant_pool的第7項: 表明當前描述構造函數 00 08 descriptor_index; 00 01 attributes_count; 00 09 attribute_name_index 0x09 看看constant_pool的第9項,簡單明了Code ??! 00 00 00 1d attribute_length = 29 00 01 max_stack 00 01 max_locals 00 00 00 05 code_length 2a b7 00 01 b1 JVM定義的操作碼代碼段數組 00 00 exception_table_length 00 01 attributes_count 一個,接下來是attribute_info結構 00 0a attribute_name_index 看看constant_pool的第10項: LineNumberTable(顯然調試用) 00 00 00 06 attribute_length 00 01 line_number_table_length 00 00 start_pc 00 01 line_number1. 00 09 access_flags PUBLIC & STATIC 00 0b name_index; 表明當前描述main函數 00 0c descriptor_index; ...([Ljava/lang/String;)V 00 01 attributes_count; 00 09 attribute_name_index Code 00 00 00 25 attribute_length = 37 00 02 max_stack 00 01 max_locals 00 00 00 09 code_length b2 00 02 12 03 b6 00 04 b1 代碼數組 codeArray1[0-8] 00 00 exception_table_length 00 01 attributes_count 接下來是attribute_info結構 00 0a attribute_name_index LineNumberTable 00 00 00 0a attribute_length 00 02 line_number_table_length 00 00 start_pc 00 05 line_number 00 08 start_pc : codeArray1[8] = 0xb1 return 00 06 line_number 第6行源程序為 } 00 01 attributes_count00 0d attribute_name_index 屬性為SourceFile00 00 00 02 attribute_length00 0e sourcefile_index constant_pool[0x0e] ---> 'Test.java'接下來我們看看main()函數對應的代碼:b2 00 02 12 03 b6 00 04 b10xb2 0x00 0x02 : getstatic #2 看看constant_pool[0x02] :09 00 10 00 11 0x09 : CONSTANT_Fieldref 0x10: class index 0x11 :name-type-index constant_pool[0x10]: constant_pool[0x17] : java/lang/System constant_pool[0x11]: 0x18 : class index 0x19 :name-type-index constant_pool[0x18] : out constant_pool[0x19] : Ljava/io/PrintStream 即 System.out 為 java.io.PrintStream 類型 0x12 0x03 : ldc #3 看看 constant_pool[3] : 08 00 12 0x08 : CONSTANT_String 0x12 : string_index 指向一個字符串 constant_pool[0x12]: 'Hello World!' 故該指令加載了字符串索引到本地棧0xb6 0x00 0x04: invokevirtual #4 -----到constant_pool查查 0x13 :class 0x14 :name-type 看看constant_pool[0x13]:java/io/PrintStream constant_pool[20] : 00 1b 00 1c constant_pool[0x1b]:println . . . . :(Ljava/lang/String;)V 故該指令調用了 java.io.PrintStream.println(java.lang.String) 而參數則為 ldc #3 加載的 'Hello World!'0xb1 : return關于opcode的更多信息參見 http://mrl.nyu.edu/~meyer/jvmref/ 和JVM文檔轉自 http://watercloud.nease.net/ Java, java, J2SE, j2se, J2EE, j2ee, J2ME, j2me, ejb, ejb3, JBOSS, jboss, spring, hibernate, jdo, struts, webwork, ajax, AJAX, mysql, MySQL, Oracle, Weblogic, Websphere, scjp, scjd
標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久国产麻豆精品| 国产精品片aa在线观看| 蜜臀久久99精品久久久久宅男 | 九九综合在线| 日韩在线a电影| 国产精品亚洲四区在线观看| 最新中文字幕在线播放| 国产视频一区三区| 久久激情综合网| 黄色在线观看www| 国产精区一区二区| 欧美一区=区| 午夜一区在线| 午夜久久av | 亚洲永久精品唐人导航网址| 中文字幕av亚洲精品一部二部| 婷婷亚洲成人| 老司机精品在线| 日韩欧美综合| 蜜臀av免费一区二区三区| 国产亚洲网站| 青青青国产精品| 国产成人精品亚洲线观看 | 日韩精品免费观看视频| 国产亚洲高清一区| 成人一区不卡| 蜜臀久久99精品久久一区二区| 国产农村妇女精品一二区| 亚洲一级淫片| 另类欧美日韩国产在线| 免费成人在线视频观看| 蜜桃91丨九色丨蝌蚪91桃色| 岛国av在线播放| 婷婷亚洲成人| 国产91精品对白在线播放| 国产伦精品一区二区三区视频 | 国产亚洲欧美日韩精品一区二区三区| 国产乱论精品| 日本综合字幕| 视频一区二区中文字幕| 国产精品久久久久久av公交车| 黄色在线网站噜噜噜| 亚洲在线免费| 欧美国产另类| 欧美日韩国产探花| 亚洲91网站| 成人亚洲精品| 视频一区在线播放| 美女久久久精品| 在线视频精品| 久久一区精品| 丝袜美腿亚洲一区二区图片| 美女精品视频在线| 亚洲欧洲午夜| 精品久久一区| 免费看精品久久片| 国产黄大片在线观看| 蜜桃传媒麻豆第一区在线观看| 精品一二三区| 免费在线视频一区| 另类欧美日韩国产在线| 中文字幕日本一区| 九一成人免费视频| 欧美三区四区| 国产69精品久久| 国产精品高潮呻吟久久久久| 日欧美一区二区| 免费在线看一区| 中文精品在线| 香蕉精品视频在线观看| 日韩中文字幕高清在线观看| 麻豆精品在线观看| 国产伦理一区| 色在线中文字幕| 成人啊v在线| 日本亚洲最大的色成网站www | 日韩三区免费| 欧美日本不卡高清| 精品日韩一区| 日韩精品三级| 亚洲精品小说| 麻豆成全视频免费观看在线看| 欧美亚洲色图校园春色| 欧美日韩精品一本二本三本| 国产成人久久精品麻豆二区| 久久精品99国产精品| 蜜乳av另类精品一区二区| 久久免费高清| 成人国产精选| 日本99精品| 日韩精品一级二级| 国模 一区 二区 三区| 日产午夜精品一线二线三线| 国产欧美日韩一级| 深夜福利亚洲| 欧美综合国产| 亚州av乱码久久精品蜜桃| 久久毛片亚洲| 精品日韩在线| 欧美精品导航| 国产精品videossex久久发布 | 天使萌一区二区三区免费观看| 日韩一级不卡| 中文一区一区三区免费在线观 | 久久一区二区三区喷水| www.九色在线| 国产成人精选| 黄色精品视频| 精品一区电影| 九九99久久精品在免费线bt| 国产色99精品9i| 欧美一区自拍| 91麻豆精品激情在线观看最新| 少妇精品久久久一区二区三区| 亚洲午夜国产成人| 欧美日韩精品一本二本三本 | 欧美一区二区性| 久久网站免费观看| 国内激情久久| 午夜精品一区二区三区国产| 欧美精品羞羞答答| 欧美精品羞羞答答| 午夜精品亚洲| 精品国产一区二区三区噜噜噜| 蜜臀av亚洲一区中文字幕| 欧美综合精品| 国产欧美一区二区三区精品酒店 | 国产91在线精品| 99久久婷婷| 免费成人在线影院| 国产欧美另类| 日韩和的一区二在线| 国产午夜精品一区二区三区欧美| 色综合视频一区二区三区日韩 | 色婷婷久久久| 1024精品一区二区三区| 99久久久久久中文字幕一区| 欧美日韩国产高清电影| 在线免费观看亚洲| 国产亚洲欧美日韩在线观看一区二区| 美女精品视频在线| 91精品xxx在线观看| 日韩一区二区免费看| 视频一区中文字幕精品| 国产精品一站二站| 国产精品久久久久久久免费观看| 日韩专区精品| 好看不卡的中文字幕| 亚洲精品福利| 国产精品最新自拍| 色网在线免费观看| 伊人精品视频| 日韩高清在线一区| zzzwww在线看片免费| 黄色欧美日韩| 欧美日本不卡| 成人福利视频| 夜久久久久久| 日本午夜免费一区二区 | 麻豆国产精品777777在线| 91精品精品| 日本亚洲视频| 日韩一区二区三区免费| 欧美亚洲人成在线| 欧美特黄一级| 国产精品久久亚洲不卡| 午夜久久久久| 成人亚洲精品| 日韩精品视频一区二区三区| 日韩和的一区二在线| 国产情侣久久| 欧美综合二区| 日韩欧美一区免费| 国产色99精品9i| 伊人成人网在线看| 国产精品美女久久久久久不卡| 国产极品一区| 亚洲欧洲午夜| 精品丝袜久久| 香蕉成人久久| 国产精品中文字幕亚洲欧美 | 激情视频网站在线播放色| 免费看精品久久片| 激情视频网站在线播放色| 亚洲精品乱码久久久久久蜜桃麻豆| 精品视频97| 深夜福利亚洲| 欧美 日韩 国产一区二区在线视频| 国产情侣一区| 欧美一区=区| 国产精品成人a在线观看| 蜜桃视频免费观看一区| 日韩毛片视频| 国产毛片精品久久| 欧美1级日本1级| 狂野欧美性猛交xxxx| 亚洲精选91| 图片区亚洲欧美小说区| 精品国产乱码久久久| 亚洲精品日韩久久|