日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

关于返回结构体的函数

發(fā)布時間:2023/12/10 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于返回结构体的函数 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

    【前言】寫作本文,源于最近回復的 《匯編中函數(shù)返回結構體的方法》?一文。在網絡上也已經有一些相關文章和相關問題,有的文章已經給出了一部分結果,但總體而言還缺少比較重要的結論。本文以分析 VC6 編譯器,32 位架構為主來重復性分析這個話題。

?

    (一)不超過 8 bytes 的小結構體可以通過 EDX:EAX 返回。

    本文的范例代碼取材于 《匯編中函數(shù)返回結構體的方法》一文,并在此基礎上進行修改和試驗。要研究的第一份代碼如下,定義一個不超過 8 bytes 的小結構體,不超過 8 bytes 是因為這個結構體能夠用 EDX:EAX 容納,我們之后將看到在 release 編譯時,編譯器能夠向返回普通基礎類型那樣進行返回。

?

#include <stdio.h>//不超過 8 bytes 的“小結構體” struct A {int a;int b; };//返回結構體的函數(shù) struct A add(int x, int y) {struct A t;t.a = x * y;return t; }int main() {struct A t = add(3, 4);printf("t.a = %ld\n", t.a);return 0; }

?

    首先,我們需要解決一個常見困惑,就是要明確這段代碼和下面的典型錯誤代碼的區(qū)別:

    char* get_buffer()

    {

      char buf[8];

      return buf;

    }

    上面的 get_buffer 返回的是棧上的臨時變量空間,在函數(shù)返回后,其所在的空間也就被“回收/釋放”了,也就是說函數(shù)返回的地址位于棧的增長方向上,是不穩(wěn)定和不被保證的。

    那么返回結構體的函數(shù)則不同,你可以發(fā)現(xiàn)返回結構體的函數(shù)是工作正常有效的。在 add 函數(shù)中有一個臨時性結構體 t,毫無疑問,t 將在 add 函數(shù)返回時被釋放,但由于 t 被當做“值”進行返回,因此編譯器將保證 add 的返回值對于 add 的調用者(caller)來說是有效的。

?

    另外需要明確的一點是,我個人覺得,現(xiàn)實里這種返回結構體的方式比較少見,后面將會看到這樣做會產生臨時對象和多余拷貝過程,效率不高。常見方法是傳遞結構體指針。但作為語言上允許的方式,有必要弄清楚編譯器如何實現(xiàn)這種方式,而要弄清楚這個問題,需要查看匯編代碼。使用 VC6 輸入上述代碼,下面分別給出其匯編代碼。

?

    (1)debug 版本,匯編代碼如下。

?

small_struct_debug .text:00401020 add proc near ; CODE XREF: j_addj .text:00401020 .text:00401020 var_48 = dword ptr -48h .text:00401020 var_8 = dword ptr -8 .text:00401020 var_4 = dword ptr -4 .text:00401020 arg_0 = dword ptr 8 .text:00401020 arg_4 = dword ptr 0Ch .text:00401020 .text:00401020 push ebp .text:00401021 mov ebp, esp .text:00401023 sub esp, 48h .text:00401026 push ebx .text:00401027 push esi .text:00401028 push edi .text:00401029 lea edi, [ebp+var_48] .text:0040102C mov ecx, 12h .text:00401031 mov eax, 0CCCCCCCCh .text:00401036 rep stosd .text:00401038 mov eax, [ebp+arg_0] .text:0040103B imul eax, [ebp+arg_4] .text:0040103F mov [ebp+var_8], eax .text:00401042 mov eax, [ebp+var_8] .text:00401045 mov edx, [ebp+var_4] .text:00401048 pop edi .text:00401049 pop esi .text:0040104A pop ebx .text:0040104B mov esp, ebp .text:0040104D pop ebp .text:0040104E retn .text:0040104E add endp .text:0040104E .text:0040104E ; 哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪? .text:0040104F dd 4 dup(0CCCCCCCCh) .text:0040105F align 10h .text:00401060 .text:00401060 ; 壙壙壙壙壙壙壙?S U B R O U T I N E 壙壙壙壙壙壙壙壙壙壙壙壙壙壙壙壙壙壙壙? .text:00401060 .text:00401060 ; Attributes: bp-based frame .text:00401060 .text:00401060 main proc near ; CODE XREF: j_mainj .text:00401060 .text:00401060 var_50 = dword ptr -50h .text:00401060 var_10 = dword ptr -10h .text:00401060 var_C = dword ptr -0Ch .text:00401060 var_8 = dword ptr -8 .text:00401060 var_4 = dword ptr -4 .text:00401060 .text:00401060 push ebp .text:00401061 mov ebp, esp .text:00401063 sub esp, 50h .text:00401066 push ebx .text:00401067 push esi .text:00401068 push edi .text:00401069 lea edi, [ebp+var_50] .text:0040106C mov ecx, 14h .text:00401071 mov eax, 0CCCCCCCCh .text:00401076 rep stosd .text:00401078 push 4 .text:0040107A push 3 .text:0040107C call j_add .text:00401081 add esp, 8 .text:00401084 mov [ebp+var_10], eax .text:00401087 mov [ebp+var_C], edx .text:0040108A mov eax, [ebp+var_10] .text:0040108D mov [ebp+var_8], eax .text:00401090 mov ecx, [ebp+var_C] .text:00401093 mov [ebp+var_4], ecx .text:00401096 mov edx, [ebp+var_8] .text:00401099 push edx .text:0040109A push offset ??_C@_0L@CMGB@t?4a?5?$DN?5?$CFld?6?$AA@ ; "t.a = %ld\n" .text:0040109F call printf .text:004010A4 add esp, 8 .text:004010A7 xor eax, eax .text:004010A9 pop edi .text:004010AA pop esi .text:004010AB pop ebx .text:004010AC add esp, 50h .text:004010AF cmp ebp, esp .text:004010B1 call __chkesp .text:004010B6 mov esp, ebp .text:004010B8 pop ebp .text:004010B9 retn .text:004010B9 main endp

?

    下面是實現(xiàn)方式的棧示意圖:

    

?

    總結:

    (1.1)用 edx:eax 傳遞返回值。調用方不需要在棧上向 add 函數(shù)傳遞接受返回值的地址。

    (2.2)debug 版本在調用方生成臨時對象返回值,然后再把臨時對象拷貝到 main 臨時變量所在地址。效率低。

?

    (2)release 版本,匯編代碼如下:

?

small_struct_release .text:00401000 sub_401000 proc near ; CODE XREF: sub_401020+7p .text:00401000 .text:00401000 var_4 = dword ptr -4 .text:00401000 arg_0 = dword ptr 4 .text:00401000 arg_4 = dword ptr 8 .text:00401000 .text:00401000 mov eax, [esp+arg_0] ; add 函數(shù) .text:00401004 mov edx, [esp+var_4] .text:00401008 sub esp, 8 .text:0040100B imul eax, [esp+8+arg_4] .text:00401010 add esp, 8 .text:00401013 retn .text:00401013 sub_401000 endp .text:00401013 .text:00401013 ; 哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪? .text:00401014 align 10h .text:00401020 .text:00401020 ; 壙壙壙壙壙壙壙?S U B R O U T I N E 壙壙壙壙壙壙壙壙壙壙壙壙壙壙壙壙壙壙壙? .text:00401020 .text:00401020 .text:00401020 sub_401020 proc near ; CODE XREF: start+AFp .text:00401020 .text:00401020 var_4 = dword ptr -4 .text:00401020 .text:00401020 sub esp, 8 ; 相當于 main 函數(shù) .text:00401023 push 4 .text:00401025 push 3 .text:00401027 call sub_401000 .text:0040102C add esp, 8 .text:0040102F mov [esp+8+var_4], edx .text:00401033 push eax .text:00401034 push offset aT_aLd ; "t.a = %ld\n" .text:00401039 call sub_401050 .text:0040103E xor eax, eax .text:00401040 add esp, 10h .text:00401043 retn .text:00401043 sub_401020 endp

?

    總結:

    (2.1)同(1.1),用 edx:eax 傳遞返回值,不需要傳遞接收返回值的地址。

    (2.2)release 版本調用方沒有臨時對象,效率基本等同于傳結構體指針。

    (2.3)release 版本優(yōu)化的太厲害,甚至都沒有把返回值完整的拷貝到臨時變量 t (只拷貝了結構體中的成員t.b,t.a 的拷貝被認為沒有存在價值而被優(yōu)化掉了,因為 t.a 的值存于 eax),和高級語言有較大差別。

?

    (二)超過 8 bytes 的結構體,調用方需要提供用于接收返回值的地址。

    如果是超過 8 bytes 的結構體,EDX:EAX 將容納不下,這時就需要調用方提供接受返回值的地址,即調用方在棧上分配臨時對象,并把其地址通過棧傳遞給函數(shù)(先 push 參數(shù),最后 push 用于設置返回值的結構體地址)。

    把上述代碼中的結構體定義增加一個 int 成員即可令結構體超過 8 bytes,即調整上述代碼的 struct 定義:

    struct A
    {
?      int a;
?      int b;
?      int c;
    };

?

    使用 VC6 編譯后產生的匯編代碼如下:

    debug 版本:

large_struct_debug .text:00401020 add proc near ; CODE XREF: j_addj .text:00401020 .text:00401020 var_4C = dword ptr -4Ch .text:00401020 var_C = dword ptr -0Ch .text:00401020 var_8 = dword ptr -8 .text:00401020 var_4 = dword ptr -4 .text:00401020 arg_0 = dword ptr 8 .text:00401020 arg_4 = dword ptr 0Ch .text:00401020 arg_8 = dword ptr 10h .text:00401020 .text:00401020 push ebp .text:00401021 mov ebp, esp .text:00401023 sub esp, 4Ch .text:00401026 push ebx .text:00401027 push esi .text:00401028 push edi .text:00401029 lea edi, [ebp+var_4C] .text:0040102C mov ecx, 13h .text:00401031 mov eax, 0CCCCCCCCh .text:00401036 rep stosd .text:00401038 mov eax, [ebp+arg_4] .text:0040103B imul eax, [ebp+arg_8] .text:0040103F mov [ebp+var_C], eax .text:00401042 mov ecx, [ebp+arg_0] .text:00401045 mov edx, [ebp+var_C] .text:00401048 mov [ecx], edx .text:0040104A mov eax, [ebp+var_8] .text:0040104D mov [ecx+4], eax .text:00401050 mov edx, [ebp+var_4] .text:00401053 mov [ecx+8], edx .text:00401056 mov eax, [ebp+arg_0] .text:00401059 pop edi .text:0040105A pop esi .text:0040105B pop ebx .text:0040105C mov esp, ebp .text:0040105E pop ebp .text:0040105F retn .text:0040105F add endp .text:0040105F .text:00401060 .text:00401060 ; 壙壙壙壙壙壙壙?S U B R O U T I N E 壙壙壙壙壙壙壙壙壙壙壙壙壙壙壙壙壙壙壙? .text:00401060 .text:00401060 ; Attributes: bp-based frame .text:00401060 .text:00401060 main proc near ; CODE XREF: j_mainj .text:00401060 .text:00401060 var_64 = dword ptr -64h .text:00401060 var_24 = dword ptr -24h .text:00401060 var_18 = dword ptr -18h .text:00401060 var_14 = dword ptr -14h .text:00401060 var_10 = dword ptr -10h .text:00401060 var_C = dword ptr -0Ch .text:00401060 var_8 = dword ptr -8 .text:00401060 var_4 = dword ptr -4 .text:00401060 .text:00401060 push ebp .text:00401061 mov ebp, esp .text:00401063 sub esp, 64h .text:00401066 push ebx .text:00401067 push esi .text:00401068 push edi .text:00401069 lea edi, [ebp+var_64] .text:0040106C mov ecx, 19h .text:00401071 mov eax, 0CCCCCCCCh .text:00401076 rep stosd .text:00401078 push 4 .text:0040107A push 3 .text:0040107C lea eax, [ebp+var_24] .text:0040107F push eax .text:00401080 call j_add .text:00401085 add esp, 0Ch .text:00401088 mov ecx, [eax] .text:0040108A mov [ebp+var_18], ecx .text:0040108D mov edx, [eax+4] .text:00401090 mov [ebp+var_14], edx .text:00401093 mov eax, [eax+8] .text:00401096 mov [ebp+var_10], eax .text:00401099 mov ecx, [ebp+var_18] .text:0040109C mov [ebp+var_C], ecx .text:0040109F mov edx, [ebp+var_14] .text:004010A2 mov [ebp+var_8], edx .text:004010A5 mov eax, [ebp+var_10] .text:004010A8 mov [ebp+var_4], eax .text:004010AB mov ecx, [ebp+var_C] .text:004010AE push ecx .text:004010AF push offset ??_C@_0L@CMGB@t?4a?5?$DN?5?$CFld?6?$AA@ ; "t.a = %ld\n" .text:004010B4 call printf .text:004010B9 add esp, 8 .text:004010BC xor eax, eax .text:004010BE pop edi .text:004010BF pop esi .text:004010C0 pop ebx .text:004010C1 add esp, 64h .text:004010C4 cmp ebp, esp .text:004010C6 call __chkesp .text:004010CB mov esp, ebp .text:004010CD pop ebp .text:004010CE retn .text:004010CE main endp

?

    release 版本:

large_struct_release .text:00401000 sub_401000 proc near ; CODE XREF: sub_401030+Cp .text:00401000 .text:00401000 var_8 = dword ptr -8 .text:00401000 var_4 = dword ptr -4 .text:00401000 arg_0 = dword ptr 4 .text:00401000 arg_4 = dword ptr 8 .text:00401000 arg_8 = dword ptr 0Ch .text:00401000 .text:00401000 mov ecx, [esp+arg_4] .text:00401004 mov eax, [esp+arg_0] .text:00401008 sub esp, 0Ch .text:0040100B imul ecx, [esp+0Ch+arg_8] .text:00401010 mov edx, eax .text:00401012 mov [edx], ecx .text:00401014 mov ecx, [esp+0Ch+var_8] .text:00401018 mov [edx+4], ecx .text:0040101B mov ecx, [esp+0Ch+var_4] .text:0040101F mov [edx+8], ecx .text:00401022 add esp, 0Ch .text:00401025 retn .text:00401025 sub_401000 endp .text:00401025 .text:00401025 ; 哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪? .text:00401026 align 10h .text:00401030 .text:00401030 ; 壙壙壙壙壙壙壙?S U B R O U T I N E 壙壙壙壙壙壙壙壙壙壙壙壙壙壙壙壙壙壙壙? .text:00401030 .text:00401030 .text:00401030 sub_401030 proc near ; CODE XREF: start+AFp .text:00401030 .text:00401030 var_14 = dword ptr -14h .text:00401030 var_10 = dword ptr -10h .text:00401030 var_C = dword ptr -0Ch .text:00401030 .text:00401030 sub esp, 18h .text:00401033 push 4 .text:00401035 lea eax, [esp+1Ch+var_C] .text:00401039 push 3 .text:0040103B push eax .text:0040103C call sub_401000 .text:00401041 mov ecx, eax .text:00401043 add esp, 0Ch .text:00401046 mov eax, [ecx] .text:00401048 push eax .text:00401049 push offset aT_aLd ; "t.a = %ld\n" .text:0040104E mov edx, [ecx+4] .text:00401051 mov [esp+20h+var_14], edx .text:00401055 mov ecx, [ecx+8] .text:00401058 mov [esp+20h+var_10], ecx .text:0040105C call sub_401070 .text:00401061 xor eax, eax .text:00401063 add esp, 20h .text:00401066 retn .text:00401066 sub_401030 endp

?

    上述兩種編譯結果,實現(xiàn)的模型基本相同。因此在這里以debug版本代碼為主,一并分析,其棧示意圖如下,下圖左側為 debug 版本,右側是 release 版本:

?

    

?

    總結:

    (1)當結構體超過 8 bytes,不能用 EDX:EAX 傳遞,這時調用方在棧上保留有一個用于填充返回值的結構體,其地址在入棧參數(shù)后 push 到棧上。函數(shù)將會根據(jù)這個地址,把返回值設置到這個地址。

    (2)在 main 函數(shù)中,debug 版本比 release 版本還多了一個臨時對象,效率低。而 release 版本中只有返回值和臨時變量 t,效率略高于 debug。但兩者模型基本一致,總體效率低于傳結構體指針。

    (3)release 版本同樣優(yōu)化比較厲害,main 函數(shù)中對 t 的賦值是不完整的,因為編譯器認為沒有必要,只要滿足代碼等效即可。

?

    最后我們總結針對較大結構體(超過 8 bytes)時,返回結構體的函數(shù)的實現(xiàn)方式的基本模型:

?

    (1)調用方在棧上分配用于接收返回值的臨時結構體,并把地址通過棧傳遞給函數(shù)。

    (2)函數(shù)根據(jù)返回值的地址,設置返回值。

    (3)調用方根據(jù)需要,把返回值再賦值給需要的臨時變量。

    (4)返回時,eax 存儲的是返回值的那個地址。

?

    因此,從上面的過程可以看到,由于存在臨時對象和拷貝操作,其效率比傳遞結構體指針的函數(shù)低。

?

    由于不管 debug 還是 release,對于“大結構體”都會在棧上傳遞返回值的地址,所以我們可以通過下面的代碼,來測試出這樣的結論:函數(shù) add 的返回值(臨時結構體)的地址和 main 中的變量 t 的地址是不同的。原理是,第一個形參的棧頂方向的相鄰元素就是返回值的地址,因此用一個指針指向第一個形參,然后向棧頂移動一格,取出其值,就是返回值的地址。

?

#include <stdio.h>struct A {int a;int b;int c; };struct A add(int x, int y) {struct A t;int* p = &x;p--;printf("address of return struct: %08X\n", *p);t.a = x * y;return t; }int main(int argc, char* argv[]) {struct A t = add(3, 4);struct A *p1 = &t;printf("address of t in main: %p\n", &t);return 0; }

?

    上面的代碼中,有一點需要注意,返回值的地址和 t 的地址的關系是依賴編譯器的,也就是說,沒有任何保證,兩者之間是否相鄰以及它們之間的大小關系。但你可以通過嘗試移動上面的指針 p1,試圖將 p1 指向返回值,但這并不是一個簡單容易的事情(因為編譯器的行為效果是盡量避免讓這個返回值被其他指針指到)。

    

?

轉載于:https://www.cnblogs.com/hoodlum1980/archive/2012/07/18/2598185.html

總結

以上是生活随笔為你收集整理的关于返回结构体的函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

久热久草在线 | 我爱av激情网 | 中文字幕成人在线观看 | 人人爽人人爽人人片 | a视频免费看 | 西西人体4444www高清视频 | 深爱婷婷激情 | 人人爽人人爽人人片av免 | 免费午夜视频在线观看 | 中文十次啦 | 国产美女在线精品免费观看 | 在线高清一区 | 在线观看日韩中文字幕 | 99九九99九九九视频精品 | 色婷婷激情 | 人人澡澡人人 | 久久精品99久久 | 日韩精品最新在线观看 | 亚洲不卡av一区二区三区 | 免费色视频 | 亚洲开心激情 | 人人看人人草 | 人人澡人人爱 | 91视频在线国产 | 欧美激情精品久久久久久 | 国产精品18久久久久久首页狼 | 最近中文字幕高清字幕在线视频 | 97精品一区二区三区 | 狠狠久久综合 | 欧美三人交 | 国产一区播放 | 精品视频久久久久久 | 亚洲精品日韩av | 国产一区二区高清视频 | 国产视频不卡一区 | 久草香蕉在线 | 亚洲天堂精品视频在线观看 | 一级片色播影院 | 中文字幕高清免费日韩视频在线 | 日韩大片在线观看 | 免费av高清 | 综合网中文字幕 | 中文有码在线视频 | 国产做aⅴ在线视频播放 | 黄色毛片大全 | 热久久99这里有精品 | 97在线成人 | 免费观看一级一片 | 国产乱码精品一区二区三区介绍 | 亚洲视频免费视频 | 欧美日韩久久不卡 | 国产亚洲成av片在线观看 | 亚洲最新av在线网址 | 久久久久www| 成年人免费在线观看 | 久草在线视频资源 | 超碰免费av| 91视频观看免费 | 在线观看韩日电影免费 | 日本系列中文字幕 | 一区二区三区四区免费视频 | 国产理论一区二区三区 | 色噜噜噜 | 四虎永久精品在线 | 国产伦精品一区二区三区高清 | 天天操天天干天天插 | www.伊人网.com| 午夜视频福利 | 国产精品剧情在线亚洲 | 综合久久久久久久久 | 久久福利小视频 | 日韩免费中文字幕 | 久久久久女人精品毛片九一 | 91人人揉日日捏人人看 | 色多多视频在线观看 | 三上悠亚一区二区在线观看 | www.啪啪.com| 亚洲在线视频网站 | 五月婷婷色丁香 | 日韩av进入 | 成人av动漫在线观看 | 国产精品久久久久久久久久ktv | 九色精品免费永久在线 | 日产乱码一二三区别在线 | 麻豆高清免费国产一区 | 日韩在线资源 | 欧美色图亚洲图片 | 青青久视频 | 狠狠做六月爱婷婷综合aⅴ 日本高清免费中文字幕 | 天天插狠狠插 | 精品在线视频观看 | 人人爽网站 | 精品国产1区2区3区 国产欧美精品在线观看 | 欧美激情第八页 | 色综合天天综合在线视频 | 国内毛片毛片 | 九九精品毛片 | 久久综合爱| 免费人成网 | 不卡的av中文字幕 | 毛片1000部免费看 | 中文字幕在线观看91 | 免费久久网 | 91传媒在线播放 | 日本黄色大片儿 | 日韩天堂网 | 国产精品久久久久av免费 | 黄av在线 | 高清免费在线视频 | 国产精品免费久久久久久久久久中文 | 久久伦理 | 国产亚洲人 | 久久激情日本aⅴ | 国产成人免费观看久久久 | 国产va饥渴难耐女保洁员在线观看 | 五月婷婷丁香色 | 国产成人在线观看免费 | 日韩av在线小说 | 成人av片在线观看 | 精品亚洲免费视频 | 久久精品视频免费播放 | 天天干天天操天天搞 | 欧美日韩免费在线视频 | 男女啪啪网站 | 九色自拍视频 | 久久无码av一区二区三区电影网 | 久热色超碰 | 亚洲国产日韩一区 | 亚洲aaa级 | 日韩欧美在线观看一区 | 在线观看91视频 | 国产字幕在线观看 | 国产精品久久久久久久久搜平片 | 美女视频a美女大全免费下载蜜臀 | 成人h在线播放 | 99精品亚洲 | 欧美日韩精品在线一区二区 | 婷婷黄色片 | 久久精彩免费视频 | 91色综合| 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 中文在线字幕免 | 亚洲精品久久久久中文字幕m男 | 手机成人av在线 | 精品成人在线 | 三级动图 | av成人在线播放 | 一区二区不卡在线观看 | 精品国产自 | www.久久成人 | 99re8这里有精品热视频免费 | 在线观看精品黄av片免费 | 久久免费视频7 | 欧美激情精品久久久久久免费印度 | 日本狠狠色 | 人人爽人人看 | 91在线视频 | 国色天香永久免费 | 极品久久久久 | 日韩大片免费观看 | 免费欧美精品 | 国产原创中文在线 | 国产剧情在线一区 | 国产一区二区日本 | 国产成人精品一区二区三区在线观看 | 日韩av在线一区二区 | 999国产| 97超碰中文字幕 | 亚洲国产一区二区精品专区 | 国产精久久久久久妇女av | 操操日日 | www.久久久.cum | 在线免费黄色毛片 | 超碰在线亚洲 | 99久久久久久久久 | 九九热中文字幕 | 国产精品久久久久久久久久久久 | 久久神马影院 | 精品字幕在线 | 亚洲欧美国内爽妇网 | 一区二区三区免费在线观看视频 | 久久久免费看片 | 亚洲黄色免费 | 天天摸日日操 | 成人av电影网址 | 成人h视频在线播放 | 在线观看av片 | 日韩成人高清在线 | 丁香六月网 | 在线免费黄色毛片 | 久久99影院| 亚洲 欧美 变态 国产 另类 | 99久久电影 | 日本黄色免费在线 | 免费在线观看av网站 | 色欧美88888久久久久久影院 | 黄a在线 | 五月婷婷爱 | 超碰97在线资源站 | 亚洲日本韩国一区二区 | 国产精品一码二码三码在线 | 欧美成人tv| 日韩中文字幕免费视频 | 中文在线字幕免费观看 | 视频在线国产 | 国内精品久久久久久 | 亚洲激精日韩激精欧美精品 | 国产免费观看视频 | 97精品超碰一区二区三区 | 在线超碰av | 亚洲视频免费在线看 | 天天干夜夜操视频 | www.黄色小说.com | 国产精品电影一区二区 | 99久久免费看 | 91精品国产电影 | www178ccom视频在线 | 亚洲国产中文字幕在线观看 | 天天操天天操天天操 | 日韩毛片在线免费观看 | 亚洲深夜影院 | 亚洲欧美观看 | www.伊人色.com | av综合av | 国产精品二区在线 | 成人影片在线免费观看 | 国产生活一级片 | 狠狠操在线 | 亚洲精品裸体 | 国产馆在线播放 | 久久草在线视频国产 | 麻豆免费看片 | 国产精品99免费看 | 日韩有色 | 亚洲欧洲一区二区在线观看 | 91免费在线播放 | 在线播放国产一区二区三区 | 最近字幕在线观看第一季 | 91在线免费观看国产 | 日韩在线免费电影 | 国产又粗又猛又色又黄视频 | 丁香5月婷婷 | 久久综合偷偷噜噜噜色 | 日韩在线观看你懂的 | 亚洲播放一区 | 精品高清美女精品国产区 | 91高清不卡 | 中文在线免费一区三区 | 在线免费观看国产视频 | 91精品国产99久久久久久红楼 | 黄色大片免费播放 | 国精产品999国精产 久久久久 | 成人在线播放免费观看 | 亚洲日本在线一区 | 欧美91视频| 久久最新视频 | 成片视频在线观看 | 97电影手机 | 久久99精品国产麻豆宅宅 | 99婷婷狠狠成为人免费视频 | 欧美男女爱爱视频 | 亚洲免费av观看 | 久久久99精品免费观看乱色 | 在线观看日韩精品视频 | 欧美三级高清 | 久久精品日产第一区二区三区乱码 | 日韩精品久久中文字幕 | 亚洲精品电影在线 | 亚洲最新视频在线播放 | 激情视频91 | 波多野结衣在线观看一区二区三区 | 久久久久久久久久久久国产精品 | 五月天亚洲激情 | 亚洲国产合集 | 免费福利视频导航 | 波多野结衣一区 | 久久国产美女视频 | www.亚洲视频 | 黄视频色网站 | 波多野结衣电影久久 | 午夜精品一区二区三区视频免费看 | 久久久久久久久久久免费视频 | 狠狠色综合欧美激情 | 亚洲午夜久久久久久久久久久 | 精品极品在线 | 国产精品国产三级国产专区53 | 欧美激情h | 激情欧美日韩一区二区 | 天天摸天天弄 | 亚洲黄色在线播放 | 91超在线| 超碰97人人爱 | 日韩四虎| 在线观看午夜 | 久久爱综合 | 成人免费共享视频 | 色吊丝在线永久观看最新版本 | 韩国精品在线 | 欧美一级视频一区 | 亚洲视频免费视频 | 亚洲精品高清一区二区三区四区 | 免费午夜网站 | 日韩av三区 | 国内视频在线 | 亚洲精品午夜国产va久久成人 | 中文字幕色婷婷在线视频 | 99视频精品全部免费 在线 | 亚洲免费不卡 | 亚洲精品ww | 国产欧美综合在线观看 | av免费播放 | 五月激情丁香婷婷 | 精品国模一区二区三区 | 成人av网页 | 久色 网 | 成年人在线观看视频免费 | 热久久免费视频精品 | 天天操综| 国产美女主播精品一区二区三区 | 91传媒免费观看 | 欧美极品少妇xxxxⅹ欧美极品少妇xxxx亚洲精品 | 免费在线成人av | 国产成人精品福利 | 久久99在线观看 | 免费av黄色 | 国产在线高清视频 | 在线影视 一区 二区 三区 | 久久久久久久免费看 | 日韩欧美一区二区三区在线 | 日韩有码专区 | 久久99精品久久久久久秒播蜜臀 | 国产日韩欧美网站 | 天天操欧美| 色婷婷久久久综合中文字幕 | 亚洲经典精品 | 久久久精品久久 | 91黄视频在线| wwwwwww黄| 久久精品亚洲国产 | 成人小视频在线免费观看 | 一区电影 | 欧美精品免费视频 | 在线视频观看你懂的 | 黄色大片中国 | 欧美va日韩va| 91精品在线免费观看 | 大胆欧美gogo免费视频一二区 | 亚洲精品国产成人 | 国产精品青青 | 99热在线看| 国产一级视频在线 | 国产精品av免费 | 狠狠干夜夜操 | 欧美日韩一区二区在线观看 | 亚洲视频 中文字幕 | 中文av影院 | 久草视频2| 中文字幕成人在线观看 | 成人免费视频网址 | 91精品一区二区三区久久久久久 | av福利在线导航 | 免费av大全 | 亚洲精选视频免费看 | 夜夜夜草 | 久久国内免费视频 | 日韩视频1区 | 最新日韩在线观看 | 成人av一区二区兰花在线播放 | 黄网站免费久久 | 亚洲日日夜夜 | 999国产在线 | 在线 国产一区 | 激情网五月天 | 久久久久伊人 | 伊人婷婷| 一级性视频 | 丁香六月中文字幕 | 白丝av免费观看 | 免费视频你懂得 | 久久精品久久精品 | 精品国产视频在线观看 | 91成人区 | 美女黄色网在线播放 | 婷婷久久综合网 | 亚洲成免费 | 密桃av在线 | 午夜精品久久久久久久久久久久 | 亚洲精品一区二区三区在线观看 | 国产成人精品一区二区三区网站观看 | 久久免费视频5 | 日韩在线播放视频 | 女人18精品一区二区三区 | 欧美日韩不卡一区二区 | 久99久在线视频 | 亚洲精品午夜久久久 | 成人av高清在线观看 | 国产精品美女视频网站 | 韩国一区二区三区在线观看 | 国产精品久久久久久久久久久久 | 成人免费观看在线视频 | 亚洲精品久久久久www | 亚洲国产视频直播 | 日韩在线观看视频网站 | 奇米影视在线99精品 | 午夜久久电影网 | 色先锋资源网 | 最近能播放的中文字幕 | 人人超碰97 | 色com网| 国产综合片 | avv天堂| 日韩经典一区二区三区 | 亚洲一级特黄 | 一级片视频免费观看 | 高清av中文在线字幕观看1 | 免费成人在线电影 | 中文字幕一区三区 | 亚洲综合一区二区精品导航 | 成人性生交大片免费观看网站 | www操操 | 91手机视频在线 | 最新中文字幕在线观看视频 | 亚洲国产成人久久 | 国产精品欧美久久久久三级 | 久久国产精品99国产 | 91精品国产99久久久久 | 97超碰人人澡人人 | 亚洲人天堂 | 欧洲精品久久久久毛片完整版 | 亚洲欧美日韩精品一区二区 | 中文字幕二区在线观看 | 久久国产手机看片 | 一本一本久久a久久精品综合 | 欧美激情精品久久久久久 | 天堂va在线高清一区 | 亚洲五月婷婷 | 国内精品中文字幕 | 99se视频在线观看 | 日韩a在线| 精品女同一区二区三区在线观看 | 亚洲伦理中文字幕 | 69视频在线 | 亚洲精品视频大全 | 亚洲成人av片 | 91视频电影 | 午夜久草| 久久九九久久九九 | 国内久久久久 | 成人a毛片 | 黄色小说视频网站 | 成年人视频免费在线 | 最近中文字幕免费视频 | 91人人视频在线观看 | 超薄丝袜一二三区 | 国产亚洲精品电影 | 午夜91在线| 骄小bbw搡bbbb揉bbbb | 五月婷婷黄色 | 日韩中文字幕电影 | 天天干夜夜擦 | 国产一二三区在线观看 | 色综合久久五月 | 在线观看91精品视频 | 成人精品一区二区三区电影免费 | 丰满少妇在线观看网站 | 很黄很色很污的网站 | 又黄又色又爽 | 手机在线小视频 | 成年人电影毛片 | 久草在线视频首页 | 成人小电影在线看 | www.少妇| 免费又黄又爽的视频 | 天天玩夜夜操 | 欧洲一区二区三区精品 | 国产在线观看你懂得 | 亚洲一区免费在线 | 色综合婷婷久久 | 免费h精品视频在线播放 | 国产精品99久久久久久久久久久久 | 香蕉久久久久 | 亚洲综合色丁香婷婷六月图片 | 国产精品久久久久av | 九九热免费在线视频 | 亚洲国产精品成人综合 | 天天天综合网 | 日韩中文字幕视频在线观看 | 99久久精品网 | 欧美日韩一区二区三区不卡 | 亚洲国产成人精品久久 | 国产又粗又硬又爽视频 | 国产精品久久久久久久久蜜臀 | 亚洲国产精品成人va在线观看 | 日韩欧美网址 | 五月开心网 | 欧美色综合天天久久综合精品 | 综合网成人 | 免费看污在线观看 | 亚洲天天在线日亚洲洲精 | 久久久久久高潮国产精品视 | 亚洲在线观看av | 永久免费观看视频 | 国产成人av福利 | 国产精品一区二区免费 | 国产成人一区二区啪在线观看 | 一区二区三区日韩在线观看 | 精品嫩模福利一区二区蜜臀 | 免费在线播放av电影 | 永久黄网站色视频免费观看w | 伊人狠狠色丁香婷婷综合 | 青青草华人在线视频 | 97在线免费视频 | 在线观看免费av网 | 欧美精品一级视频 | 欧美一区中文字幕 | 丁香婷婷综合激情五月色 | 国产精久久久久久久 | 狠狠狠色丁香婷婷综合久久五月 | 欧美老女人xx | 九九色综合 | 日韩av高潮 | 欧美日韩在线观看一区 | 在线不卡的av | 欧美一二三专区 | 99久久精品国产免费看不卡 | 91福利区一区二区三区 | 人人玩人人添人人 | 五月婷婷综合在线视频 | 国产香蕉视频在线播放 | 亚洲天堂va | 日韩网站免费观看 | 久久1电影院 | 黄色特一级| 精选久久| 色com网 | 丁香婷五月 | 色欧美成人精品a∨在线观看 | 成人一级片视频 | 亚洲电影黄色 | 国产字幕在线观看 | 亚洲资源视频 | 天天操天天摸天天射 | 精品视频在线免费 | 精品一二 | 成年人免费看av | 成人在线播放视频 | 中文字幕在线国产 | 91av视频网站| 天天视频色版 | 国产成人av一区二区三区在线观看 | 久久久久北条麻妃免费看 | 国产精品一区二区三区在线 | 欧美激情在线看 | 久草.com | 97超碰在线久草超碰在线观看 | 精品在线一区二区 | 亚洲国产精品传媒在线观看 | 国产欧美精品一区二区三区四区 | 国产福利av| 国产一区二区三精品久久久无广告 | 手机在线观看国产精品 | 精品在线观看一区二区三区 | 国内精品久久久久影院一蜜桃 | 五月天综合在线 | 亚洲人成网站精品片在线观看 | 亚洲欧美在线观看视频 | 久久久96 | 久久激情精品 | av品善网 | 色婷婷电影网 | 亚洲综合成人婷婷小说 | 成年人视频在线免费 | 午夜影院先 | 色瓜| 免费看高清毛片 | 丁香婷婷深情五月亚洲 | 国产九九精品视频 | 这里有精品在线视频 | 久久色在线播放 | 免费的黄色的网站 | 日韩另类在线 | 色婷婷综合在线 | 日日天天 | 久久视频这里有久久精品视频11 | 在线免费观看黄色 | 欧美一二三区在线观看 | 人人澡人人爱 | 久久精品爱爱视频 | 亚洲精品乱码久久久久久久久久 | 色免费在线 | 亚洲精品乱码久久久久v最新版 | 久久福利影视 | 丁香花中文字幕 | 亚洲精品国产精品国自产 | 成人性生交大片免费看中文网站 | 国产精品视频永久免费播放 | 国产偷v国产偷∨精品视频 在线草 | 久久人人做| 91亚洲精品久久久中文字幕 | 欧美一区日韩精品 | 玖玖视频国产 | 精品一二 | 黄色免费在线视频 | 日韩毛片在线一区二区毛片 | 国内久久看 | 在线电影91 | 国产精品久久久久久吹潮天美传媒 | 狠狠躁日日躁狂躁夜夜躁 | 亚洲国产精品电影 | 男女精品久久 | 日韩在线免费高清视频 | 国产精品美女久久久久久久 | 久久福利 | 国产一级片免费播放 | 九九导航 | 国产亚洲精品精品精品 | 中文字幕韩在线第一页 | 亚洲国产精品99久久久久久久久 | 特级西西444www大胆高清无视频 | 99色资源| 国产麻豆视频免费观看 | 特级毛片网 | 欧美日韩调教 | 国产精品免费观看国产网曝瓜 | 日韩欧美高清在线 | 99爱在线| 波多野结衣电影久久 | 手机在线小视频 | 高清免费在线视频 | 亚洲精品国久久99热 | 成人av资源网| 四虎国产精 | 日韩一区在线免费观看 | 亚洲黑丝少妇 | 国模一区二区三区四区 | 国产精品久久久影视 | 在线色亚洲 | 日韩理论片在线 | 蜜臀久久99静品久久久久久 | 国产又粗又猛又黄又爽的视频 | 中文字幕在线人 | 97香蕉久久国产在线观看 | 国产精品网站一区二区三区 | www.一区二区三区 | 99超碰在线观看 | 久久综合久久综合久久综合 | 99亚洲国产精品 | 中文字幕在线观看不卡 | 国产亚洲欧美一区 | 国产一区二区三区高清播放 | 国产成人精品综合久久久 | 一区 二区电影免费在线观看 | 国产精品美女视频 | 国产成人免费网站 | 麻豆视频免费网站 | 自拍超碰在线 | 久草免费福利在线观看 | 亚洲国产精品日韩 | 五月天国产精品 | 99久久99久久免费精品蜜臀 | 国产片免费在线观看视频 | 日韩 国产 | 九九99 | 在线视频区 | 天天干,天天射,天天操,天天摸 | 日本精品免费看 | 中文字幕网址 | 国产日韩欧美在线观看视频 | 日产中文字幕 | 999久久国产 | 亚洲乱码精品久久久久 | 国产丝袜美腿在线 | 国产精品麻豆91 | 高清av免费一区中文字幕 | 久久黄色免费视频 | 欧美精品中文在线免费观看 | 中午字幕在线观看 | 日日操网站 | 久日精品 | 99免费在线 | 天堂久色 | 久久激情精品 | japanesexxxhd奶水| 亚洲无线视频 | 亚洲精品国产综合99久久夜夜嗨 | 在线黄色av | 午夜精品一区二区国产 | 91桃色国产在线播放 | 日本中文在线 | 婷婷色在线观看 | 在线播放 日韩专区 | 999久久久精品视频 日韩高清www | 欧美极度另类性三渗透 | 中文字幕av电影下载 | 91女神的呻吟细腰翘臀美女 | 久久久久久久免费 | av免费电影在线 | 青青河边草免费观看 | 亚洲激情小视频 | 欧美性大战久久久久 | 色视频一区| 99久高清在线观看视频99精品热在线观看视频 | 国产精品aⅴ | 色狠狠操| 天天干 夜夜操 | 青青河边草免费直播 | 亚洲精品在线观看免费 | 国产精品久久久久9999 | 国产美女在线免费观看 | 91私密视频 | 亚洲精品视频在线观看免费 | 中文字幕日韩在线播放 | 天天爽夜夜爽人人爽曰av | a资源在线 | 亚洲一区二区三区在线看 | 天堂av免费 | 免费在线激情电影 | 欧美最新另类人妖 | 99在线精品视频 | 在线观看视频福利 | 成人国产一区 | 免费看三级网站 | 超碰在线日韩 | 91综合视频在线观看 | 精品国产伦一区二区三区观看说明 | 色偷偷88888欧美精品久久久 | 亚洲成av片人久久久 | 手机av永久免费 | 国产精品免费一区二区三区在线观看 | 99九九99九九九视频精品 | 成年人免费电影 | 99久e精品热线免费 99国产精品久久久久久久久久 | 欧美在线视频一区二区三区 | 波多野结衣一区 | 中文字幕在线观看第二页 | 欧美一级小视频 | 欧美一区二区在线免费看 | 五月综合婷 | 欧美激情片在线观看 | 国产99久久久国产精品免费二区 | 黄色软件在线观看 | 超碰人人射 | 亚洲精品免费在线观看 | 91av在线精品 | 日韩在线中文字幕视频 | av丝袜制服 | 免费观看av网站 | 又长又大又黑又粗欧美 | 成人a在线| 九九亚洲精品 | 综合色中文 | 久久精品99久久 | 久插视频 | 国产女教师精品久久av | 日本激情视频中文字幕 | 国产亚洲在线视频 | 国产精久久久 | 国外调教视频网站 | 国产又粗又猛又黄视频 | 亚洲精品高清视频 | 免费看三级网站 | 狠狠操影视 | 国产午夜在线观看视频 | 色综合天天综合网国产成人网 | 亚洲精品国产精品久久99热 | 四虎亚洲精品 | 久草在线综合网 | 三上悠亚一区二区在线观看 | 免费国产在线观看 | 日韩电影在线观看一区二区三区 | 中文字幕一区二区在线播放 | 99热精品免费观看 | 中文字幕精品一区 | 久久久久国产成人免费精品免费 | 免费在线观看毛片网站 | 日本性动态图 | 99国产一区二区三精品乱码 | 成人免费看片网址 | 中文 一区二区 | 日本中文乱码卡一卡二新区 | 一区二区日韩av | 一区二区三区四区五区在线 | 国产一区在线免费 | 99热国产在线观看 | 日韩av网站在线播放 | 精品国产乱码久久久久久天美 | 日b视频在线观看网址 | .国产精品成人自产拍在线观看6 | 激情九九 | www.狠狠插.com| 欧美成人中文字幕 | 偷拍精品一区二区三区 | 天天综合狠狠精品 | 国产精品一区二区无线 | 国产一区在线免费观看视频 | 久久久久久久久久久久久影院 | 午夜精品久久久99热福利 | 久草影视在线 | 国产美女被啪进深处喷白浆视频 | 99爱精品在线 | a视频在线观看免费 | 一区二区三区日韩精品 | 国产免费观看久久 | 亚洲九九影院 | 亚洲激情在线播放 | 欧美一区二区三区在线播放 | 久久精品99国产国产精 | 国产一区二区三区黄 | 日韩欧美精品在线观看 | 福利网址在线观看 | 不卡的av电影在线观看 | 成年人免费在线观看网站 | 久久精品之 | 日本成人中文字幕在线观看 | 91精品视频一区二区三区 | www.夜夜爽 | 久久精品国产免费观看 | 91精品在线视频观看 | 婷婷激情av | 91av资源在线 | 成人cosplay福利网站 | 伊人六月| 97韩国电影 | 午夜电影一区 | 国内精品视频在线 | 日韩一级电影网站 | 激情 婷婷 | 国产精品高清在线观看 | www.国产在线视频 | 国产特级毛片aaaaaaa高清 | 久久综合精品国产一区二区三区 | 欧美日韩18 | 精品在线播放 | 久久视频一区二区 | 美女免费视频一区 | 欧美色婷 | 成人av一区二区兰花在线播放 | 国产精品2区 | 国产一线二线三线性视频 | 在线观看日本韩国电影 | 狠狠干婷婷色 | 97在线精品国自产拍中文 | 色婷婷免费 | 亚洲黄网站 | 中文在线字幕免费观看 | 国产精品欧美一区二区三区不卡 | 日韩特黄一级欧美毛片特黄 | 最近中文字幕完整视频高清1 | 美女福利视频一区二区 | 午夜久草 | 天天看天天干天天操 | 欧美a级在线免费观看 | 奇米网网址 | 尤物一区二区三区 | 成人影视免费看 | 激情电影影院 | 日本一区二区三区视频在线播放 | 黄网站色成年免费观看 | 96视频在线 | 成人在线免费观看视视频 | 欧美极品xxx | 激情欧美日韩一区二区 | 在线a亚洲视频播放在线观看 | 国产精品 中文在线 | 在线观看日本韩国电影 | 日韩美视频 | 久久超碰网 | 2021久久 | 久久久久五月天 | 99视频精品视频高清免费 | 国产成人福利在线 | av电影在线观看完整版一区二区 | 色91av| 精品夜夜嗨av一区二区三区 | 国产一级二级av | 国产精品成人a免费观看 | 国产一二三四在线观看视频 | 97国产 | 91av亚洲| 一级免费av | 狠狠色伊人亚洲综合网站野外 | 久久精品com| 日韩精品中文字幕在线不卡尤物 | 色综合久久88 | 久久国产片 | 国产精品免费视频一区二区 | 精品亚洲va在线va天堂资源站 | 国产精品网红直播 | 婷婷在线色 | 欧美精品在线观看 | 九九在线国产视频 | 成人黄色片免费 | 国偷自产视频一区二区久 | 91.麻豆视频 | 国产成人久久久久 | 不卡视频在线 | 在线免费观看黄网站 | 男女激情片在线观看 | 免费av在线网站 | 婷婷综合久久 | 日韩久久视频 | 久久国产精品久久久 | 欧美福利视频一区 | 男女靠逼app | 人人爽爽人人 | 久久精品在线免费观看 | 在线免费观看黄 | 97在线观看免费视频 | 日韩精品中字 | av最新资源| 日韩综合在线观看 | 午夜精品福利影院 | 91视频黄色 | 色视频网站在线观看一=区 a视频免费在线观看 | 夜夜爽天天爽 | 日韩电影在线观看一区二区 | 久一网站| 免费在线日韩 | 国产精品18久久久久久久网站 | 天天爽天天搞 | 91网站免费观看 | 91天堂在线观看 | 成人免费在线观看av | 国产精品黄色av | 超碰人人草 | 天天操天天摸天天射 | 国产精品中文字幕在线播放 | 国产在线一卡 | 欧美地下肉体性派对 | 三级av免费 | 久草视频在线看 | 91成人精品 | 伊人影院99 | 在线v片 | 久久久精品国产一区二区电影四季 | 国产h片在线观看 | 亚洲 欧美日韩 国产 中文 | 日韩久久精品一区二区三区 | 97电影在线观看 | 黄色一级在线视频 | 国产色网 | 国产在线 一区二区三区 | 9999亚洲| 国产区精品在线 | 国产尤物在线视频 | 精品国产一区二区三区噜噜噜 | 九色最新网址 | 九七视频在线 | 黄在线| 国产五月| 久草com| 欧美色图30p | 国产97在线观看 | 天天躁天天操 | 亚洲视频h | 欧美色伊人 | 综合五月婷婷 | 欧美一区二区伦理片 | 久久精品爱爱视频 | 国产高清在线精品 | 亚洲免费小视频 | 99在线视频免费观看 | aaa日本高清在线播放免费观看 | 欧美一级艳片视频免费观看 | 久久国产精品成人免费浪潮 | 视频一区二区三区视频 | 91久久在线观看 | 91精品91 | 日韩欧美在线免费观看 | 精品夜夜嗨av一区二区三区 | 天天干一干 | 国产精品成久久久久 | 日日干激情五月 | 91av在线视频免费观看 | 亚洲视频免费在线看 | 十八岁以下禁止观看的1000个网站 | 成人九九视频 | 日韩精品一区二区三区高清免费 | av在线网站大全 | www日| 免费黄色a网站 | 中文av一区二区 | 一区二区精品在线 | 国产精品资源在线 | 操天天操 | 精品免费国产一区二区三区四区 | 成人99免费视频 | 九九99视频 | 成人黄色免费观看 | 99视频免费看| 一级欧美日韩 | 干干干操操操 | 一区二区不卡视频在线观看 | 成人91免费视频 | 亚洲精品乱码久久久久 | 五月天久久激情 | 在线va视频 | 在线观看电影av |