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

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

剖析java的class文件結構

瀏覽:201日期: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久久,三上悠亚国产精品一区二区三区
91精品啪在线观看国产爱臀| 日韩精品一区第一页| 国产视频欧美| 夜久久久久久| 亚洲欧美日韩在线观看a三区 | 国产精品久久久网站| 日本麻豆一区二区三区视频| 91伊人久久| 青青草伊人久久| 国产精品天天看天天狠| 高清一区二区三区| 久久国产精品成人免费观看的软件| 久久超碰99| 在线亚洲免费| 国产精品一国产精品k频道56| 久久精品国产成人一区二区三区| 激情视频网站在线播放色| 美女av在线免费看| 五月婷婷亚洲| 国产精品a久久久久| 99精品视频精品精品视频| 蜜臀av在线播放一区二区三区| 久久精品99国产精品| 精品三级久久| 日韩va亚洲va欧美va久久| 国产成人精品一区二区三区在线| 香蕉国产精品| 欧美亚洲一区二区三区| 99精品视频在线| 日本亚洲最大的色成网站www| 国产成人精品三级高清久久91| 91精品二区| 国产精品99一区二区三| 免费人成在线不卡| 日韩中文影院| 尹人成人综合网| 欧美资源在线| yellow在线观看网址| 四虎精品一区二区免费| 久久九九精品| 精品一区二区三区视频在线播放| 日av在线不卡| 国产一区二区三区免费在线 | 麻豆精品视频在线观看| 另类综合日韩欧美亚洲| 麻豆9191精品国产| 亚洲伊人av| 国产精品天天看天天狠| 亚洲精品日本| 国产精品腿扒开做爽爽爽挤奶网站| 麻豆成人91精品二区三区| 亚洲毛片一区| 热久久久久久久| 亚洲婷婷免费| 久久中文字幕av| 久久精品理论片| 欧美日韩在线精品一区二区三区激情综合| 国产综合婷婷| 亚洲福利免费| 婷婷激情图片久久| 亚洲精品99| 日韩视频一区| 国产色综合网| 免费在线观看日韩欧美| 亚洲五月综合| 日本少妇一区二区| 久久爱www.| 91亚洲国产成人久久精品| 久久久国产精品网站| 另类综合日韩欧美亚洲| 国产香蕉精品| 国产亚洲精品精品国产亚洲综合| 欧美另类中文字幕| 精品国产一区二区三区av片| 精品国产aⅴ| 亚洲成人国产| 亚洲麻豆一区| 精品一区视频| 亚洲精品a级片| 日本成人在线一区| 福利精品一区| 日韩一区二区免费看| 日韩激情中文字幕| 国产精品99视频| 香蕉成人久久| 国产日韩欧美一区二区三区在线观看 | 国产一区二区三区久久| 欧美日韩中文字幕一区二区三区| 蜜桃久久精品一区二区| 国产精品午夜一区二区三区| 久久精品1区| 欧美日韩午夜| www成人在线视频| 一区二区亚洲视频| av在线日韩| 国产伦理久久久久久妇女| 色在线视频观看| 日韩中文字幕91| 欧美三级精品| 国产欧美精品久久| 国产精品毛片| 日韩精品欧美激情一区二区| 男人的天堂久久精品| 色爱综合网欧美| 日韩va亚洲va欧美va久久| 欧美1区2区3区| 精品美女在线视频| 日韩av成人高清| 中文字幕av一区二区三区四区| 日韩国产一区二区| 国产精品密蕾丝视频下载| 欧美不卡在线| 福利视频一区| 欧美国产视频| 久久国内精品视频| 牛牛精品成人免费视频| 欧美久久亚洲| 国产成人久久| 国产精品密蕾丝视频下载| 影音先锋久久| 亚洲国产影院| 激情久久五月| 欧美手机在线| 亚洲福利国产| 91久久在线| 日韩一级不卡| 亚洲国内精品| 欧美va亚洲va日韩∨a综合色| 婷婷激情一区| 婷婷色综合网| 欧美中文日韩| 91精品视频一区二区| 国产欧美三级| 麻豆精品av| 97精品中文字幕| 免费污视频在线一区| 欧美亚洲在线日韩| 国产亚洲一级| 欧美日本三区| 国产精品久久久久蜜臀| 精精国产xxxx视频在线播放 | 一本大道色婷婷在线| 亚洲精品.com| 综合亚洲自拍| 91精品国产自产精品男人的天堂| 国产精品videossex久久发布 | 国产精品婷婷| 久久精品凹凸全集| 91一区二区| 婷婷中文字幕一区| 91麻豆精品激情在线观看最新| 久久国产视频网| 久久婷婷av| 国产私拍福利精品视频二区| 91视频一区| 日韩一区免费| 成人小电影网站| 天堂成人国产精品一区| 欧美国产日韩电影| 亚洲精品a级片| 久久精品三级| 爽好久久久欧美精品| 免费在线欧美黄色| 国产精品视区| 午夜av不卡| 国产精品一区二区av交换| 欧美成人基地| 美腿丝袜亚洲三区| 亚洲资源网站| 国产综合精品一区| 久久久久免费| 久久国产三级精品| 伊人精品久久| 亚洲制服少妇| 尤物tv在线精品| 国产精品毛片久久| 久久精品97| 日本一区中文字幕| 久久最新视频| 99视频一区| 免费国产自久久久久三四区久久| 日本三级亚洲精品| 亚洲综合婷婷| 一区二区三区四区日韩| 婷婷丁香综合| 狠狠爱www人成狠狠爱综合网| 精品国产日韩欧美精品国产欧美日韩一区二区三区 | 在线亚洲国产精品网站| 日韩另类视频| 成人在线视频区| 精品不卡一区| sm久久捆绑调教精品一区| 国产黄色一区| 成人在线视频区| 不卡一二三区| 日韩精品1区| 久久久久中文| 欧美一区二区性| 香蕉精品视频在线观看| 亚洲激情二区|