精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

一篇帶給你 Java Class 詳解

系統 OpenHarmony
class文件的結構分析就到這里了,通過一個簡單的類去探索編譯器如何實現類的編寫,那么再復雜的類我們也能一步一步分析出來,只是需要我們更加細心。

??想了解更多內容,請訪問:??

??51CTO OpenHarmony技術社區??

??https://ost.51cto.com??

  • 基于棧和基于寄存器指令區別?
  • 什么是直接引用和間接引用?
  • class文件怎么來的?
  • apt與AMS字節碼插樁?

第一節 Class 文件介紹

1、 背景

“計算機只認識0和1,所以我們寫的程序需要被編譯 器翻譯成由0和1構成的二進制格式才能被計算機執行。”十多年過去了,今天的計算機仍然只能識別0和1,但由于最近十年內虛擬機以及大量建立在虛擬機之上的程序語言如雨后春筍般出現并蓬勃發展,把我們編寫的程序編譯成二進制本地機器碼(Native Code)已不再是唯一的選擇,越來越多的程序語言選擇了與操作系統和機器指令集無關的、平臺中立的格式作為程序編譯后的存儲格式。

Java 語言之所以能實現一次編譯到處運行,就是因為使用所有平臺都支持的字節碼格式

第二節 Class類文件的結構

1、class文件格式

一個class文件是由下圖描述出來的。我們可以按這張表的格式去解釋一個class文件。

以u1、u2、u4、u8來分別代表1個字節、2個字節、4個字節和8個字節的無符號數,無符號數可以用來描述數字、索引引用、數量值或者按照UTF-8編碼構成字符串值。

接下來我們用這一小段樣本代碼來說明class文件的具體內容。再復雜的java源文件都是可以通過這樣的方式分析出來。

public class TestClass {
private int m;
public int inc() {
return m + 1;
}
}

我們將上面的代碼用編譯器進行編譯得到一個TestClass.class文件。通過Windows工具“010Editor”對這個class文件進行閱讀。

下面是010Editor上面class二進制內容:

0A FE BA BE : 魔數(它的唯一作用是確定這個文件是否為一個能被虛擬機接受的Class文件)。

00 00 00 34 : 次版本號與主版本號 次版本號為0,主版本號為52(只能被jdk1.1~1.8 識別)。

class主版本與jdk版本關系(部分)。

2、 常量池

00 16 : 常量池數量 22,索引是1-21。

為什么常量池的索引不從0開始?

如果后面某些指向常量池的索引值的數據在特定情況下需要表達“不引用任何一個常量池項目”的含義,可以把索引值設置為0來表示。

0A 00 04 00 12( 常量索引:1):

0A: -> 10 通過查表 表示一個Methodref_info。

04: 找到索引為4的常量 -> java/lang/Object。

12 轉十進制得到18 , 這里找到常量池里18的常量代表 ()V。

得到結果: java/lang/Object () V。

09 00 03 00 13( 常量索引:2):

09: -> 09 表示一個Fieldref_info。

最終得到:com/havefun/javaapitest/TestClass 和 m i。

07 00 14( 常量索引:3):

最終結果 :com/havefun/javaapitest/TestClass。

07 00 15( 常量索引:4):

07 表示類信息。

15-> 21 是在常量的索引 -> java/lang/Object。

01 00 01 6D( 常量索引:5): m。

01 00 01 49( 常量索引:6): I。

01 00 06 3C 69 6E 69 74 3E( 常量索引:7):

01 00 03 28 29 56( 常量索引:8): ()V。

01 00 04 43 6F 64 65( 常量索引:9): Code。

01 00 0F 4C 69 6E 65 4E 75 6D 62 65 72 54 61 62 6C 65( 常量索引:10): LineNumberTable。

01 00 12 4C 6F 63 61 6C 56 61 72 69 61 62 6C 65 54 61 62 6C 65( 常量索引:11):

LocalVariableTable

01 00 04 74 68 69 73( 常量索引:12): ----> this

01 00 23 4C 63 6F 6D 2F 68 61 76 65 66 75 6E 2F 6A 61 \

76 61 61 70 6974 65 73 74 2F 54 65 73 74 43 6C 61 73 73 3B( 常量索引:13):

Lcom/havefun/javaapitest/TestClass;

01 00 03 69 6E 63( 常量索引:14): inc

01 00 03 28 29 49( 常量索引:15): ()I

01 00 0A 53 6F 75 72 63 65 46 69 6C 65( 常量索引:16): SourceFile

01 00 0E 54 65 73 74 43 6C 61 73 73 2E 6A 61 76 61( 常量索引:17): TestClass.java

0C 00 07 00 08( 常量索引:18):

0C 表示字段或方法的部分引用。

07 ->

05 -> ()V

最終得到: // “”: ()V。

0C 00 05 00 06( 常量索引:19): 最終得到: // m:I

01 00 21 63 6F 6D 2F 68 61 76 65 66 75 6E 2F 6A 61 \

76 61 61 70 69 74 95 73 74 2F 54 65 73 76 43 6C 61 73 73( 常量索引:20):

最終得到:com/havefun/javaapitest/TestClass。

01 00 10 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74( 常量索引:21):

最終得到:java/lang/Object。

Javap -v 生成的內容,通過上面的分析就很容易看懂這個反編譯過后的常量池要表達的內容了!

Constant pool:
#1 = Methodref #4.#18 // java/lang/Object."<init>":()V
#2 = Fieldref #3.#19 // com/havefun/javaapitest/TestClass.m:I
#3 = Class #20 // com/havefun/javaapitest/TestClass
#4 = Class #21 // java/lang/Object
#5 = Utf8 m
#6 = Utf8 I
#7 = Utf8 <init>
#8 = Utf8 ()V
#9 = Utf8 Code
#10 = Utf8 LineNumberTable
#11 = Utf8 LocalVariableTable
#12 = Utf8 this
#13 = Utf8 Lcom/havefun/javaapitest/TestClass;
#14 = Utf8 inc
#15 = Utf8 ()I
#16 = Utf8 SourceFile
#17 = Utf8 TestClass.java
#18 = NameAndType #7:#8 // "<init>":()V
#19 = NameAndType #5:#6 // m:I
#20 = Utf8 com/havefun/javaapitest/TestClass
#21 = Utf8 java/lang/Object

**訪問標識符、類索引、父類索引與接口索引集合 **。

下圖是class文件結構表里面的一部分,描述了訪問標識,類索引,父類索引與接口集合等。

00 21: ACC_PUBLIC | ACC_SUPER

下面是截取的常量池部分內容,類索引和父類索引都能在上面找到。

#1 = Methodref          #4.#18         // java/lang/Object."<init>":()V
#2 = Fieldref #3.#19 // com/havefun/javaapitest/TestClass.m:I
#3 = Class #20 // com/havefun/javaapitest/TestClass
#4 = Class #21 // java/lang/Object

00 03: 類索引-> 常量池索引3

00 04: 父類索引-> 常量池索引4

00 00: 接口數量0

3、 字段信息

字段表結構如下:

字段訪問標志:

字段表信息:

00 01: 字段數量 1

通過字段表結構讀取6個字節:00 02 00 05 00 06 00 00

00 02 訪問描述符:代表了private

00 05 字段名稱在常量池的索引:m

00 06 描述符在常量池的索引:I

00 00 屬性數量為0

結合起來字段就很容易知道這個是 private 的int類型的字段m。

4、方法表信息

繼續讀class文件后面的內容:00 02 表示有兩個方法。

方法表的結構:

向后讀方法表第一個方法:

00 01: 代表public方法 00 07:方法名 00 08:方法簽名()V

上面這小部分可以得到如下信息:

public com.havefun.javaapitest.TestClass();
descriptor: ()V
flags: ACC_PUBLIC

00 01: 表示屬性表有一個屬性

屬性表結構:

00 09 00 00 00 2F: 通過常量池09表示Code(Code 的含義是Java代碼編譯成字節碼的指令), 后面4個字節表示接下來的屬性長度,2F轉十進制等于47。

Code對應的結構:

接下來的字節碼是:00 01 00 01 表示操作數棧最大深度為1;max_locals代表了局部變量表所需的存儲空間。

再接下來4個字節:00 00 00 05(表示代碼長度)。

再向后讀5個字節表示代碼:2A B7 00 01 B1;。

  • 2A:對應指令aload_0。是將第0個變量槽中為reference類型的本地變量推送到操作數棧頂。
  • B7:指令為invokespecial。指令的作用是以棧頂的reference類型的數據所指向的對象作為方法接收者,調用此對象的實例構造器方法、private方法或者它的父類的方法。這個方法有一個u2類型的參數說明具體調用哪一個方法,它指向常量池中的一個CONSTANT_Methodref_info類型常量,即此方法的符號引用。

這里 00 01 也就是代表了常量池里面#1號常量 =>(// java/lang/Object.“”: ()V)這是一個構造方法。

因為Java默認在每個方法插入一個默認參數this,并且放在變量槽0的位置。上面兩條指令可以理解為 this = new Object(); 把這個this給實例化了。

  • B1:對應指令為return。

說明:這里一個字節表示一條指令操作,那么也就說明Java虛擬機最多不會超過256條指令;

00 00 :異常表長度為0。

00 02:屬性列表數量為2。

那么上面可以得到如下信息:

Code:
stack=1, locals=1, args_size=1
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: return

(1) 屬性表信息

00 0A 00 00 00 06 00 01 00 00 00 03:

通過查表0A對應的常量池里面的:LineNumberTable;LineNumberTable屬性用于描述Java源碼行號與字節碼行號(字節碼的偏移量)之間的對應關系。00 00 00 06 表示屬性長度為6個字節;00 01表示有一個line_number_table;00 00表示是字節碼行號,00 03表示是Java源碼行號.

LineNumberTable對應的結構:

那么這可以得到如下信息:

LineNumberTable:
line 3: 0

00 0B 00 00 00 0C 00 01 00 00 00 05 00 0C 00 0D 00 00:

通過常量池得到0B代表的是 LocalVariableTable。

LocalVariableTable的屬性結構:

local_variable_info結構。

屬性長度0C轉十進制為12;00 01局部變量表長度為1。

00 00 00 05:表示start_pc和length屬性分別代表了這個局部變量的生命周期開始的字節碼偏移量及其作用范圍覆蓋的長度,兩者結合起來就是這個局部變量在字節碼之中的作用域范圍。

0C:在常量池查詢是表示 this;0D:是這個變量的描述符對應的:Lcom/havefun/javaapitest/TestClass。

最后的00 00表示:index是這個局部變量在棧幀的局部變量表中變量槽的位置。

通過上面這一小節可以得到如下信息:

LocalVariableTable:
Start Length Slot Name Signature
0 5 0 this Lcom/havefun/javaapitest/TestClass;

5、 屬性信息

SourceFile屬性結構。

00 10:對應常量池的SourceFile 00 00 00 02:對應的屬性長度為2。

作用:如果不生成這項屬性,當拋出異常時,堆棧中將不會顯示出錯代碼所屬的文件名。

11:轉十進制得到17,sourcefile_index數據項是指向常量池中CONSTANT_Utf8_info型常量的索引,常量值是源碼文件的文件名。通過常量池得知17對應常量為:TestClass.java。

第三節 基于棧指令簡介

1、 基于棧的解釋器執行過程

以一段代碼作為例子說明演示字節碼執行過程。

public int calc() {
int a = 100;
int b = 200;
int c = 300;
return (a + b) * c;
}

編譯成字節碼指令如下:

 public int calc();
descriptor: ()I
flags: ACC_PUBLIC
Code:
stack=2, locals=4, args_size=1
0: bipush 100 // 將100 推到操作數棧
2: istore_1 // 將操作數棧頂的整型值出棧并存放到第1個局部變量槽中
3: sipush 200 // 將200 推到操作數棧
6: istore_2 // 將操作數棧頂的整型值出棧并存放到第2個局部變量槽中
7: sipush 300 // 將300 推到操作數棧
10: istore_3 // 將操作數棧頂的整型值出棧并存放到第3個局部變量槽中
11: iload_1 // 將局部變量槽1的變量放入操作數棧
12: iload_2 // 將局部變量槽2的變量放入操作數棧
13: iadd // 將操作數棧中頭兩個棧頂元素出棧,做整型加法,然后把結果重新入棧
14: iload_3 // 將局部變量槽3的變量放入操作數棧
15: imul // 將操作數棧中頭兩個棧頂元素出棧,做整型乘法,然后把結果重新入棧
16: ireturn // 將結束方法執行并將操作數棧頂 的整型值返回給該方法的調用者

2、 基于棧與基于寄存器指令集區別?

以同樣的1+1這個計算來進行舉例。

基于棧的指令集如下:

iconst_1
iconst_1
iadd
istore_0

基于寄存器指令集如下:

mov eax, 1
add eax, 1

這兩種指令集的優勢與劣勢:

  • 基于棧的指令集主要優點是可移植。
  • 基于寄存器的指令會比基于棧的指令少,但是每條指令會邊長。
  • 基于棧指令集的主要缺點是理論上執行速度相對來說會稍慢一些。

個人總結

class文件的結構分析就到這里了,通過一個簡單的類去探索編譯器如何實現類的編寫,那么再復雜的類我們也能一步一步分析出來,只是需要我們更加細心。我們了解了這些文件的生成過程,個人認為有如下好處:

  • 知道javap -v 反編譯class文件的輸出內容到底是怎么來的。
  • class文件怎么描述一個Java方法或者一個變量。運用方向比如字節碼增強,動態修改或者生成等都是能夠實現的。

??想了解更多內容,請訪問:??

??51CTO OpenHarmony技術社區??

??https://ost.51cto.com??

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2021-04-14 14:16:58

HttpHttp協議網絡協議

2022-03-03 09:05:17

索引MySQL數據查詢

2021-08-06 17:47:46

Kotin高階函數函數

2021-03-28 09:12:58

多線程死鎖技術熱點

2023-03-09 07:47:56

BeanFactorSpring框架

2020-12-18 07:55:47

JavaScriptClassMyClass

2024-04-15 08:17:21

Spring依賴注入循環依賴

2021-07-12 06:11:14

SkyWalking 儀表板UI篇

2022-02-17 08:53:38

ElasticSea集群部署

2021-04-01 10:51:55

MySQL鎖機制數據庫

2024-06-13 08:34:48

2021-04-08 11:00:56

CountDownLaJava進階開發

2021-07-21 09:48:20

etcd-wal模塊解析數據庫

2021-01-28 08:55:48

Elasticsear數據庫數據存儲

2022-03-22 09:09:17

HookReact前端

2021-03-12 09:21:31

MySQL數據庫邏輯架構

2021-06-21 14:36:46

Vite 前端工程化工具

2023-03-29 07:45:58

VS編輯區編程工具

2021-07-08 07:30:13

Webpack 前端Tree shakin

2021-04-14 07:55:45

Swift 協議Protocol
點贊
收藏

51CTO技術棧公眾號

日韩一级免费视频| 扒开jk护士狂揉免费| 日本在线视频中文有码| 国产**成人网毛片九色| 7m第一福利500精品视频| 国产高潮呻吟久久| 国产精品视频一区二区三区综合| 亚洲国产视频在线| 欧美一区二区三区在线免费观看 | 一本一道综合狠狠老| 日韩一本精品| 东京干手机福利视频| 日韩av一二三| 国内精品久久久| 日本美女黄色一级片| 久久国产精品色av免费看| 欧美三区在线视频| 亚洲不卡中文字幕无码| 爆操欧美美女| 欧美国产精品一区| 精品乱码一区| 丰满人妻一区二区三区无码av| 青青草精品视频| 91爱视频在线| 九九热精彩视频| 欧美va久久久噜噜噜久久| 日韩精品在线播放| 乱码一区二区三区| 国产成人免费视频网站视频社区| 色婷婷综合久久久中文字幕| 青春草国产视频| 国产盗摄在线观看| 国产精品嫩草影院com| 久久婷婷国产综合尤物精品| 亚洲精品久久久久久久久久 | 国产精品扒开腿做爽爽爽男男| 欧美成人免费观看视频| 国产精品久久久久一区二区三区厕所| 亚洲精品永久免费精品| 折磨小男生性器羞耻的故事| 国产精品一区免费在线| 欧美性生活一区| 中文字幕欧美人妻精品一区| 亚洲啊v在线| 天天色综合天天| 欧美日韩不卡在线视频| 青青青国内视频在线观看软件| 最新成人av在线| 亚洲一区3d动漫同人无遮挡| 国产视频精品久久| 久久九九久久九九| 欧美日韩综合精品| 成人在线视频成人| 国产日韩欧美不卡在线| 日韩电影免费观看在| 国产女主播在线直播| 日本一区二区视频在线观看| 品久久久久久久久久96高清| 免费福利在线观看| 国产日韩欧美综合一区| 亚洲精品乱码久久久久久蜜桃91 | 亚洲熟女乱色一区二区三区久久久 | 成人影院网站ww555久久精品| 日本高清视频一区二区| 国产视频在线视频| 激情中国色综合| 4438x成人网最大色成网站| av在线免费看片| 久久天堂久久| 精品国产在天天线2019| 久久一区二区电影| 欧美视频免费| 成年无码av片在线| 国产精品99无码一区二区| 亚洲综合国产| 国产精品香蕉在线观看| 国产成人久久精品77777综合 | 国产乱了高清露脸对白| 亚洲亚洲免费| 久久精品国产99国产精品澳门| 国产精品三区在线观看| 亚洲日本国产| 国产精品高精视频免费| 99在线精品视频免费观看软件| 成人精品视频.| 欧美极品一区二区| 欧美jizz18hd性欧美| 亚洲第一狼人社区| 欧美一级黄色影院| 色妞ww精品视频7777| 日韩精品免费在线| 一起操在线播放| 99综合在线| 国产精品视频xxx| 亚洲精品久久久蜜桃动漫 | 天堂午夜影视日韩欧美一区二区| 国产精品视频免费在线| 亚洲av无码一区二区乱子伦| 久久女同互慰一区二区三区| 在线免费观看成人| av资源新版天堂在线| 欧美日韩精品一区二区在线播放| 国偷自产av一区二区三区麻豆| 亚洲最大在线| 欧美激情欧美激情| 中文字幕观看视频| 91影院在线观看| www亚洲国产| 欧美最新精品| 久久视频在线播放| 日韩视频免费直播| 亚洲中文字幕一区| 午夜精品一区二区三区国产| 久久久久久尹人网香蕉| 波多野结衣视频网址| 成人一道本在线| 在线精品日韩| 户外露出一区二区三区| 亚洲精品在线观看网站| 肉色超薄丝袜脚交69xx图片 | 中文字幕成人| 国产丝袜精品视频| 国产一级免费观看| 国产一区二区在线观看免费 | 人操人视频在线观看| 一区二区三区国产豹纹内裤在线 | 日韩毛片在线播放| 国产精品亚洲视频| 亚洲午夜精品一区二区| 亚洲成人av观看| 日韩电影大全免费观看2023年上| 久久久久久久久毛片| 精品亚洲成a人| 先锋影音一区二区三区| 日本不卡一二三| 亚洲精品小视频| 久久久久久91亚洲精品中文字幕| 丁香婷婷综合五月| 国产在线视频综合| 日韩精品成人| 久99九色视频在线观看| av中文字幕观看| 亚洲精品视频在线| 日本r级电影在线观看| 91精品啪在线观看国产18| 国产欧美一区二区三区四区| 9色在线观看| 欧美日韩五月天| 日本不卡一二区| 激情综合网天天干| 免费观看国产视频在线| 亚州一区二区| 久久乐国产精品| 日韩在线免费看| 日本精品一区二区三区四区的功能| 女尊高h男高潮呻吟| 丝袜诱惑制服诱惑色一区在线观看 | 亚洲男人电影天堂| 少妇性l交大片7724com| 欧美激情综合色综合啪啪| 国产精品二区在线观看| 超碰在线cao| 亚洲精品在线91| 五月婷婷激情五月| 亚洲丝袜制服诱惑| 国偷自产av一区二区三区麻豆| 影音先锋中文字幕一区| 久久精品国产精品青草色艺| 韩漫成人漫画| 日韩在线小视频| 99精品视频免费看| 午夜av电影一区| 免费网站在线高清观看| 韩日精品视频一区| 成人免费毛片在线观看| 亚洲深夜福利在线观看| 国产一区二中文字幕在线看| 直接在线观看的三级网址| 亚洲成人aaa| 波多野结衣一区二区三区在线| 中文字幕一区二区三区精华液| 佐佐木明希电影| 日韩制服丝袜先锋影音| 天堂av在线中文| 免费成人三级| 国产精品视频成人| www在线看| 一区二区三区视频观看| 亚洲国产一二三区| 欧美在线啊v一区| 国产一级淫片免费| 国产精品私人自拍| 久久久老熟女一区二区三区91| 日本aⅴ精品一区二区三区| 成年丰满熟妇午夜免费视频| 亚洲成人一品| 2014亚洲精品| 日本国产欧美| 18性欧美xxxⅹ性满足| 麻豆网站视频在线观看| 亚洲久久久久久久久久久| 国产女人高潮的av毛片| 色综合天天天天做夜夜夜夜做| 国产精品国产精品88| 91麻豆蜜桃一区二区三区| 在线免费观看av网| 日韩精品亚洲一区二区三区免费| a级片一区二区| 欧美一区二区三| 国产一区喷水| 无码国模国产在线观看| 国产精品丝袜久久久久久不卡| 1024在线看片你懂得| 国产一区二区三区三区在线观看| 囯产精品一品二区三区| 欧美群妇大交群中文字幕| 久久国产视频精品| 亚洲国产精品影院| 久草视频在线资源站| 国产精品美女久久福利网站| 性高潮久久久久久久| 99在线精品免费| 美女扒开腿免费视频| 国产在线不卡视频| 婷婷激情5月天| 美女视频一区在线观看| 久久久久久久少妇| 亚洲一区视频| 久久精品视频16| 亚洲精品欧美| 欧美一级视频在线播放| 欧美三级不卡| 欧美一级爱爱视频| 欧美精品网站| 超级碰在线观看| 女同性一区二区三区人了人一| 中国成人亚色综合网站| 波多野结衣在线观看一区二区三区| 鲁鲁视频www一区二区| 免费萌白酱国产一区二区三区| 99超碰麻豆| 91九色鹿精品国产综合久久香蕉| 91在线观看欧美日韩| 精品国产一区二| 91探花福利精品国产自产在线| 亚洲国产精选| 91美女福利视频高清| 国产精品白丝久久av网站| 91九色国产社区在线观看| 亚洲在线资源| 999日本视频| 国产香蕉精品| 久久综合九色综合网站| 免费久久久久久久久| 日本不卡一二三| 欧美视频你懂的| 无码人妻丰满熟妇区五十路 | 国产一区二区成人久久免费影院 | 中文字幕天堂av| 国产99精品视频| 一边摸一边做爽的视频17国产| 成人av在线资源网站| 国产乱了高清露脸对白| 国产日产欧美一区二区视频| 69xxx免费| 亚洲欧美激情在线| 国产乡下妇女做爰毛片| 色综合天天综合狠狠| 成人av网站免费观看| 亚洲欧美另类久久久精品2019| 中文字幕99| 久久精品亚洲人成影院| 日本一道在线观看| 伊人成人在线视频| 37pao成人国产永久免费视频| 日本成人在线视频网站| 亚洲欧美日本一区二区三区| 国产成人免费在线观看不卡| 日本精品一二三| 久久亚洲一区二区三区四区| 成人黄视频免费| 欧美第一在线视频| 国产综合18久久久久久| av一区二区高清| av动漫在线播放| 免费看的黄色欧美网站| 九九热精品在线播放| 国产aⅴ综合色| 久久精品国产亚洲AV熟女| 亚洲欧洲精品一区二区三区| 日本少妇性高潮| 欧美色图一区二区三区| 亚洲男人天堂久久| 国产一区二区黄| 久色国产在线| 国产精品视频一区二区高潮| 综合中文字幕| 日韩一区国产在线观看| 欧美精品偷拍| 国产一二三区av| 99久久久国产精品免费蜜臀| 很污很黄的网站| 日韩欧美国产黄色| 精品国自产在线观看| 亚洲欧美日韩网| 免费污视频在线观看| 国产精品视频xxxx| 亚洲第一福利社区| 国产乱人伦精品一区二区三区| 久久天堂成人| 中文字幕人妻一区| 亚洲天堂精品视频| 正在播放亚洲精品| 亚洲男人天堂网| 波多野结衣久久| 亚洲一区二区久久久久久久| sdde在线播放一区二区| 国产v片免费观看| 国产精品一区二区在线观看网站| www.99热| 91国偷自产一区二区三区成为亚洲经典 | 日韩美女一区二区三区| 尤物网在线观看| 国产成人在线播放| 亚洲成人一品| 天堂…中文在线最新版在线| 国产精品综合一区二区三区| 精品女人久久久| 色老综合老女人久久久| 亚洲三区在线播放| 久久久久成人网| 91精品尤物| 久操手机在线视频| 国v精品久久久网| 久久久久久久久久99| 日韩欧美一区二区视频| 成人日韩欧美| 91黄在线观看| 国产精品99免费看| 中文字幕1区2区| 亚洲精品国产a久久久久久| 国产免费叼嘿网站免费| 色久欧美在线视频观看| 久草综合在线| 亚洲一区二区三区免费观看| 免费成人av资源网| 999久久久国产| 欧美日韩免费视频| 米奇精品一区二区三区| 91视频-88av| 午夜精品久久| 蜜臀av粉嫩av懂色av| 精品国产精品三级精品av网址| 天天操天天干天天操| 91高清免费在线观看| 亚洲人成网77777色在线播放| 国产熟女高潮视频| 欧美激情一区二区三区全黄| 一区不卡在线观看| 久热在线中文字幕色999舞| 欧美日韩国产一区二区在线观看| 男人草女人视频| 成人夜色视频网站在线观看| 国产欧美日韩另类| 亚洲免费中文字幕| 精品福利在线| 日韩成人三级视频| 91小视频在线| 中文字幕免费播放| 欧美老肥婆性猛交视频| 国产一区福利| 亚洲 中文字幕 日韩 无码| 中文字幕一区在线| 国产 欧美 自拍| 国产精品久久久av| 欧美破处大片在线视频| 欧美图片一区二区| 欧美一区二区在线免费播放| 19禁羞羞电影院在线观看| 日韩福利二区| 成人免费观看av| 国产精品尤物视频| 欧美精品videos| 精品国产一区二区三区久久久蜜臀| 天天做天天干天天操| 无码av中文一区二区三区桃花岛| 国产高清美女一级毛片久久| 亚洲自拍偷拍色片视频| 亚洲欧美日韩专区| 波多野结衣在线网址| 日韩精品在线免费播放| 亚洲一区二区av| 男人日女人bb视频| 亚洲女同ⅹxx女同tv| 欧美另类自拍| 国产精品久久一区二区三区| 欧美aaaaaa午夜精品| 日韩和一区二区| 久久综合国产精品台湾中文娱乐网| 一本色道久久综合狠狠躁的番外|