• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    VB與Lua交互調(diào)用的研究與實現(xiàn)

    2015-09-28 07:21:02黃皓中山市廣播電視大學(xué)中山528400
    現(xiàn)代計算機(jī) 2015年30期
    關(guān)鍵詞:腳本語言堆棧調(diào)用

    黃皓(中山市廣播電視大學(xué),中山 528400)

    VB與Lua交互調(diào)用的研究與實現(xiàn)

    黃皓
    (中山市廣播電視大學(xué),中山 528400)

    0 引言

    VB和Lua都是當(dāng)今廣為流行的程序設(shè)計語言。Lua是簡潔、輕量、可擴(kuò)展的腳本語言,1993年誕生于巴西里約熱內(nèi)盧天主教大學(xué)。Lua的優(yōu)點在于:可嵌入、跨平臺、運(yùn)行高效、語法簡潔、免費開源、小巧輕便。近年來,Lua除了游戲開發(fā)以外,還廣泛地應(yīng)用于其他領(lǐng)域。

    VB是Microsoft的可視化、基于對象和采用事件驅(qū)動方式的快速應(yīng)用程序開發(fā) (RAD)工具。它源自于BASIC語言,簡單易學(xué);擁有圖形用戶界面(GUI),可使用Win32 API函數(shù)、動態(tài)鏈接庫(DLL)、對象的鏈接與嵌入(OLE)、開放式數(shù)據(jù)連接(ODBC)等技術(shù),功能強(qiáng),開發(fā)效率高。

    VB和Lua各有優(yōu)勢,如能取長補(bǔ)短,互為補(bǔ)充,則在程序設(shè)計中可以更高效、靈活地達(dá)成目標(biāo)。例如使用VB來進(jìn)行GUI界面設(shè)計、訪問數(shù)據(jù)庫,而Lua進(jìn)行程序配置和字符串的處理等。

    1 宿主語言與Lua的交互

    Lua是用C編寫的,在設(shè)計時就以嵌入宿主語言C/C++程序為目標(biāo),因此其與宿主語言的交互由一系列C API構(gòu)成,所有的API在lua.h、lauxlib.h、lualib.h三個C頭文件中定義。VB的數(shù)據(jù)類型以及函數(shù)使用方式與

    C相似,其與Lua的交互調(diào)用可以參照C/C++的方式。

    Lua與宿主程序通過一個虛擬的堆棧進(jìn)行數(shù)據(jù)交換。缺省的堆棧大小由LUA_MINSTACK定義,一般為20,可以使用lua_checkstack函數(shù)來擴(kuò)大可用堆棧的尺寸。Lua遵循FILO規(guī)則使用堆棧。而宿主語言可以通過索引使用棧中元素。索引值為正表示棧中的絕對位置(從1開始);索引值為負(fù)則指從棧頂開始的偏移量。如堆棧有n個元素,那么索引1或-n表示第一個被壓入堆棧的元素(棧底),而索引n或-1則指最后一個元素(棧頂)。索引index在1到棧頂之間有效,0不是有效的索引值。

    (1)壓入堆棧

    lua_getglobal(lua_State*L,const char*name)

    把全局變量name里的值壓入堆棧。

    lua_push*將C程序中的數(shù)據(jù)放入棧中。(*可以是nil,number,integer,string,boolean,userdata,thread,cclosure等,下同)

    (2)彈出堆棧

    lua_pop(lua_State*L,int n);

    從堆棧中彈出n個元素。此操作僅修改棧頂位置,并不能得到相應(yīng)數(shù)據(jù)。

    (3)棧元素查詢

    返回給定索引處的值的類型,返回值作為常量定義在lua.h中,如LUA_TNUMBER等。

    lua_is*當(dāng)對象與所給類型兼容的時候函數(shù)返回1,其他情況返回0。除了lua_isboolean,它只針對布爾值時才會成功,否則將是無用的。這些函數(shù)對于無效引用返回0。

    (4)從棧中取元素

    使用lua_to*將指定的索引處的的Lua類型值轉(zhuǎn)換為一個C中的值。此操作并不修改棧頂位置。

    通過兩個步驟來實現(xiàn):

    ①Lua全局變量壓入堆棧:lua_getglobal(L,"變量名");

    ②根據(jù)棧頂數(shù)據(jù)的數(shù)據(jù)類型lua_type,取棧頂數(shù)據(jù):lua_to*

    可以有三種調(diào)用方式:

    (1)執(zhí)行一個語句塊

    Lua API直接支持執(zhí)行一個語句塊,使用luaL_dostring(L,“Lua語句塊”)

    (2)執(zhí)行一個文件

    ①將磁盤中的Lua源程序文件裝入:luaL_loadfile (L,fn);

    ②以保護(hù)方式執(zhí)行該塊:lua_pcall(L,0,0,0);

    在執(zhí)行前,Lua會對源文件進(jìn)行編譯,生成中間代碼。

    (3)調(diào)用文件中的函數(shù)

    Lua的函數(shù)和普通變量一樣也是First Class Variable,可以看作函數(shù)指針變量參與棧操作。因此調(diào)用過程分為如下幾個步驟:

    ①被調(diào)用的Lua函數(shù)變量入棧;

    ②將函數(shù)需要的參數(shù)入棧,入棧順序按照參數(shù)被聲明的順序;

    ③告知Lua虛擬機(jī)入棧參數(shù)的個數(shù)、函數(shù)返回值的個數(shù),并調(diào)用此Lua函數(shù);

    ④從棧頂獲得返回值,先返回的先入棧,然后將返回值顯式出棧。

    (1)注冊宿主子程序

    ①聲明并定義一個C函數(shù),函數(shù)原型為typedef int (*lua_CFunction)(lua_State*L),該函數(shù)有一個參數(shù),而函數(shù)的返回值為壓入虛擬堆棧的數(shù)據(jù)個數(shù);

    ②用字符串給該C函數(shù)取一個在Lua中調(diào)用的名稱,壓入堆棧;

    ③將函數(shù)指針入棧;

    ④調(diào)用Lua API,將上述的名稱與函數(shù)指針關(guān)聯(lián)。在VB中,第①步定義的函數(shù)應(yīng)該為如下形式:

    '從虛擬棧中取參數(shù);參數(shù)是按左右順序壓入堆棧的。'處理;

    '將結(jié)果按返回順序壓入虛擬棧;

    第③步中,可以使用AddressOf myFun來取得VB子程序的地址,而VBS沒有AddressOf,所以VBS不能注冊子程序并讓其回調(diào)。

    (2)在Lua中調(diào)用執(zhí)行

    Lua使用注冊的函數(shù)名來調(diào)用宿主子程序。當(dāng)調(diào)用宿主C函數(shù)時,Lua使用一個獨立的新棧,其中包含了Lua傳遞給C函數(shù)的所有參數(shù),而C函數(shù)則把要返回的結(jié)果也放入堆棧以返回給調(diào)用者。被調(diào)用的C函數(shù)不能訪問Lua虛擬機(jī)本次調(diào)用之外的堆棧中的數(shù)據(jù)。

    2 在VB中使用Lua

    一般來說,代碼復(fù)用有靜態(tài)編譯和動態(tài)鏈接兩種方式。Lua是開源的,如果宿主程序使用C/C++語言編寫,那么可以將Lua與宿主源程序一同編譯,Lua與宿主合為一個整體。VB顯然不能采用這一方式。

    宿主程序也可以動態(tài)鏈接Lua庫中的函數(shù)。在這種方式下Lua先獨立編譯為DLL文件,然后宿主程序在運(yùn)行時與Lua動態(tài)鏈接。VB以下面的格式使用DLL中的API:

    Declare function函數(shù)名稱libs“動態(tài)鏈接庫文件路徑”alias“庫函數(shù)名”(參數(shù)列表)as返回類型

    從www.lua.org下載Lua源程序包后,編譯(也可直接在網(wǎng)上下載)得到Lua.dll動態(tài)鏈接庫,然后把lua.h、lauxlib.h、lualib.h三個C頭文件中定義的API信息轉(zhuǎn)換為VB可用的模塊文件,在需要使用Lua的VB工程中導(dǎo)入模塊。

    (1)VB使用的模塊文件

    Lua頭文件中定義了許多API,在下面的模塊文件中,僅引入供后面類模塊必須使用的API。由于Lua各個版本之間存在差異,頭文件與相應(yīng)的DLL對應(yīng),不能混用。本模塊以Lua5.1版本為例。

    以下是模塊文件Mudule1.bas應(yīng)該包含的內(nèi)容:

    Public Declare Sub CopyMemory Lib"kernel32.dll"Alias" RtlMoveMemory"(Destination As Any,Source As Any,ByVal Length As Long)

    該Win32 API用于后面的lua_tostring函數(shù)。

    在模塊中還用到了lua.h頭文件中定義的幾個常量。例如:

    #define LUA_GLOBALSINDEX(-10002)

    在VB中轉(zhuǎn)換為:

    Public Const LUA_GLOBALSINDEX As Long=(-10002)

    在lua.h中找到LUA_MULTRET、LUA_TBOOLEAN、LUA_TNUMBER、LUA_TSTRING參照以上方式進(jìn)行定義。

    模塊使用了一些Lua常用的API,如:

    LUALIB_API void(luaL_openlibs)(lua_State*L);

    在VB中轉(zhuǎn)換為:

    Public Declare Function luaL_openlibs Lib"lua"(ByVal h As Long)As Long

    在 lua.h中找到 lua_close、lua_getfield、lu a_setfield、lua_pcall、lua_pushboolean、lua_pushnumber、lua_pushstring、lua_pushcclosure、lua_settable、lua_type、lua_toboolean、lua_tonumber、lua_tolstring、lua_settop,在lauxlib.h中找到 luaL_newstate、luaL_loadstring、luaL_loadfile,參照上述方式進(jìn)行定義。注意函數(shù)返回類型除了lua_tonumber為Double外,其余均為Long;參數(shù)類型除了const char*應(yīng)定義為String外,其余均定義為Long;參數(shù)調(diào)用方式為ByVal按值調(diào)用。

    在lua.h還定義了一些宏,例如:

    #define lua_getglobal(L,s)lua_getfield(L,LUA_GLOBALSINDEX,(s))

    這些API在Lua.dll中無導(dǎo)出函數(shù),VB需用函數(shù)來實現(xiàn):

    Public Function lua_getglobal(ByVal h As Long,s As String)As Long

    lua_getglobal=lua_getfield(h,LUA_GLOBALSINDEX,s)End Function

    參照以上方法用VB對 lua_setglobal、lua_pushcfunction、lua_pop編寫相應(yīng)函數(shù)。而lua_tostring處理相對較多,對應(yīng)VB函數(shù)如下:

    在lauxlib.h中還有一個要用的API,對應(yīng)VB函數(shù)如下:

    (2)VB使用的類模塊

    Lua提供的API很多,對于宿主程序來說,未必會使用到全部的功能,最核心的無非是調(diào)用Lua函數(shù)、Lua調(diào)用宿主函數(shù)、運(yùn)行Lua語句塊、訪問Lua全局變量等交互。因此,為了方便進(jìn)行處理,我們可以建立以下類模塊。限于篇幅,類模塊將處理的數(shù)據(jù)類型縮減為數(shù)值、字符串和布爾三種常用類型,實際應(yīng)用時可根據(jù)需要進(jìn)行增加。

    下面是類模塊文件Class1.cls的主要內(nèi)容:

    Dim L As Long'Lua虛擬機(jī)指針

    Public Function LuaOpen()As Long'新建虛擬機(jī),代碼略

    Public Function LuaClose()As Long'關(guān)閉虛擬機(jī),代碼略

    Public Function LuaPushValue(ByVal value As String)As Long'根據(jù)參數(shù)字串內(nèi)容壓入數(shù)據(jù)數(shù)值、字串或布爾值

    If LCase(value)="false"Then

    LuaPushValue=lua_pushboolean(L,0)

    ElseIf LCase(value)="true"Then

    LuaPushValue=lua_pushboolean(L,1)

    Else

    LuaPushValue=lua_pushstring(L,value)

    End If

    Else

    LuaPushValue=lua_pushnumber(L,v)

    End If

    End Function

    Public Function LuaPopValue()As String'返回棧頂內(nèi)容字串

    Select Case lua_type(L,-1)

    Case LUA_TNUMBER

    LuaPopValue=Str(lua_tonumber(L,-1))

    Case LUA_TSTRING

    LuaPopValue=lua_tostring(L,-1)

    Case LUA_TBOOLEAN

    LuaPopValue=IIf(lua_toboolean(L,-1),"True"," False")

    End Select

    lua_pop L,1

    End Function

    Public Function LuaGetVar(ByVal varname As String)As String'取變量內(nèi)容,代碼略

    Public Function LuaSetVar(ByVal varname As String,By-Val value As String)As Long'設(shè)置變量值,代碼略

    Public Function LuaDoString(ByVal s As String)As Long'執(zhí)行字符串中的語句塊,代碼略

    Public Function LuaDoFile(ByVal fn As String)As Long'執(zhí)行文件,代碼略

    Public Function LuaCall(ByVal fun As String,ByVal para As String,ByVal nRes As Long)As String'調(diào)用Lua中的函數(shù)

    Dim iErr As Long,nPara As Long,A ()As String,i As Long

    lua_getglobal L,fun

    A=Split(para,",")'參數(shù)para用“,”分隔

    nPara=UBound(A)

    If nPara<0 Then nPara=0:ReDim A (0):A(0)= para

    For i=0 To nPara:Call LuaPushValue(A(i)):Next

    iErr=lua_pcall(L,nPara+1,nRes,0)'nRes為結(jié)果個數(shù)

    LuaCall=""

    For i=1 To nRes

    LuaCall=LuaPopValue()+","+LuaCall

    Next

    LuaCall=Left(LuaCall,Len(LuaCall)-1)

    End Function

    Public Function LuaReg(ByVal fun As String,ByVal lp As Long)As Long'注冊VB函數(shù),lp為VB函數(shù)指針

    lua_pushstring L,fun

    lua_pushcfunction L,lp

    LuaReg=lua_settable(L,LUA_GLOBALSINDEX)

    End Function

    (3)實例

    將Lua.dll復(fù)制到System32目錄中,新建工程“標(biāo)準(zhǔn)EXE”,導(dǎo)入模塊Mudule1.bas和類模塊Class1.cls(命名為LuaClass),就可以在VB程序中使用Lua了。如在窗體Form1中,新建一個按鈕Command1,輸入以下代碼:

    Private Sub Command1_Click()

    Dim result As String

    o.LuaOpen

    o.LuaReg"vb",AddressOf ex

    o.LuaDoString("function f1(a,b)x,y=vb(a,b)return x,y end c=math.sin(1/2);")

    result=o.LuaCall("f1","100,200",2)

    MsgBox result,,o.LuaGetVar("c")

    o.LuaClose

    End Sub

    新建一個模塊,輸入以下代碼:

    Public o As New LuaClass

    Function ex(ByVal L As Long)As Long

    Dim x As Long,y As Long

    x=o.LuaPopValue:y=o.LuaPopValue

    o.LuaPushValue x:o.LuaPushValue y:ex=2

    End Function

    運(yùn)行并點擊Command1,可得到運(yùn)行結(jié)果。

    3 封裝Lua到COM

    ASP、WSH、VBS等腳本語言不能直接使用DLL,我們可以將上述模塊封裝為COM組件,那么這些高級語言就可以通過COM使用Lua來進(jìn)行擴(kuò)展了。

    在VB中新建工程“ActiveX DLL”,導(dǎo)入模塊Mud-ule1.bas和類模塊Class1.cls(命名為LuaClass),在菜單“工程”-“屬性”處,更改工程名為“Lua”,點擊“文件”-“生成dll”。假設(shè)生成c:LuaX.dll,運(yùn)行regsvr32 c:luaX. dll,復(fù)制Lua.dl1到System32中,然后上述腳本語言就可以通過COM使用Lua了。如建立并運(yùn)行如下腳本文件Test.vbs:

    Set o=CreateObject("Lua.LuaClass")

    o.LuaOpen

    o.LuaDoString("function f1(a,b)return b,a end c=string. sub(math.sin(1/2),1,8)")

    x=o.LuaGetVar("c"):s=o.LuaCall("f1","100,200",2)

    msgbox s,,x

    o.LuaClose

    4 結(jié)語

    在國外TIOBE軟件廠商發(fā)布2014年7月份編程語言排行榜中,VB由2013年的第7位升高到第5位,占4.341%;而Lua排名36位,占0.332%。這說明即使在Microsoft轉(zhuǎn)向.NET平臺多年以后,VB依然受到編程者的喜愛,而Lua的發(fā)展?jié)摿艽?。在VB中調(diào)用Lua,結(jié)合VB的快速開發(fā)特性和Lua的靈活性,我們開發(fā)的應(yīng)用將更有彈性,而對于Lua接口API的再封裝,無疑為ASP等腳本語言使用Lua打開了一扇大門。

    [1]Roberto Ierusalimschy.Lua程序設(shè)計[M].2版.周惟迪,譯.北京:電子工業(yè)出版社,2008.

    [2]鄧正陽,陳和平,蘇鵬.動態(tài)腳本語言Lua與C++交互方法的研究與實現(xiàn)[J].計算機(jī)系統(tǒng)應(yīng)用,2010,19(5):198-201.

    [3]魏江平.LUA腳本語言在游戲引擎中的應(yīng)用分析[J].微型電腦應(yīng)用,2008,24(4):22-23.

    [4]Lablua at PUC-Rio.Lua 5.1 Reference Manual[EB/OL].(2011-09-28)[2014-1-28].http://www.lua.org/manual/5.1/.

    [5]張帆.可重構(gòu)軟件平臺構(gòu)建原理與應(yīng)用研究[D].武漢理工大學(xué),2012.

    [6]鄧楠喬,秦開宇,金燕華.基于Lua的面向組件程序設(shè)計研究[J].中國高新技術(shù)企業(yè),2010,(9):3-4.

    [7]Marco Pontello.PowerBLua-A Lua5.0 wrapper for PowerBASIC[EB/OL].(2007-08-03).http://mark0.net/code-powerblua-e.html.

    [8]汪君鵬,李宥謀.基于Lua腳本技術(shù)的網(wǎng)絡(luò)化測控系統(tǒng)設(shè)計[J].西安郵電大學(xué)學(xué)報,2013,18(1):90-94.

    [9]苗新亮,劉棟,雷波,楊遠(yuǎn)輝.Lua腳本語言在安全設(shè)備管理系統(tǒng)中的應(yīng)用[J].信息安全與通信保密,2014,(2):92-94.

    [10]孫秀梅,鞏建華.Visual Basic開發(fā)實戰(zhàn)1200例(第1卷)[M].北京:清華大學(xué)出版社,2011.

    VB;Lua;COM

    Research and Implementation of Interaction Between VB and Lua

    HUANG Hao
    (Zhongshan Radio&Television University,Zhongshan 528400)

    1007-1423(2015)30-0068-05

    10.3969/j.issn.1007-1423.2015.30.019

    黃皓(1969-),男,廣西桂林人,講師,碩士,研究方向為計算機(jī)程序設(shè)計、遠(yuǎn)程教育技術(shù)

    2015-09-15

    2015-09-30

    VB和Lua都是常用的編程語言,為了結(jié)合利用VB和Lua各自的優(yōu)點,快速、高效、靈活地進(jìn)行應(yīng)用程序開發(fā),通過對C與Lua之間交互模式的研究分析,提出VB與Lua交互調(diào)用的方法,并進(jìn)一步將VB調(diào)用Lua的接口封裝為COM組件,以隱藏細(xì)節(jié)信息和簡化調(diào)用接口,可支持更多其他編程語言如ASP、VBS等調(diào)用Lua。實踐證明,這種VB 與Lua的交互調(diào)用方式是有效的、易于使用的。

    VB;Lua;COM

    VB and Lua are commonly used programming language,in order to take the advantage of VB and Lua and develop application fast,efficiently and flexibly,analyses the interactive mode between C and Lua,then presents a method for VB to call Lua,finally discusses about packaging the interface into a COM object,which hides detail information and simplifies the interface,and supports more programming languages to use Lua.Practice has proved that the method of VB interacting with Lua is effective,easy to use.

    猜你喜歡
    腳本語言堆棧調(diào)用
    核電項目物項調(diào)用管理的應(yīng)用研究
    LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
    嵌入式軟件堆棧溢出的動態(tài)檢測方案設(shè)計*
    一種面向SSC的電信增值業(yè)務(wù)的生成方法及實現(xiàn)
    基于Unity3D的坦克大戰(zhàn)游戲設(shè)計與實現(xiàn)
    基于堆棧自編碼降維的武器裝備體系效能預(yù)測
    基于系統(tǒng)調(diào)用的惡意軟件檢測技術(shù)研究
    淺析計算機(jī)技術(shù)在flash動畫中的應(yīng)用
    基于SiPESC平臺的Python擴(kuò)展模塊開發(fā)
    利用RFC技術(shù)實現(xiàn)SAP系統(tǒng)接口通信
    久久久久久大精品| 神马国产精品三级电影在线观看 | 国产xxxxx性猛交| 少妇 在线观看| 曰老女人黄片| 老熟妇乱子伦视频在线观看| 国产精品1区2区在线观看.| 757午夜福利合集在线观看| 成年版毛片免费区| 老熟妇乱子伦视频在线观看| 精品国产亚洲在线| 久久久久久人人人人人| 每晚都被弄得嗷嗷叫到高潮| av中文乱码字幕在线| av欧美777| 啦啦啦 在线观看视频| 国产精品爽爽va在线观看网站 | 欧美乱妇无乱码| 亚洲国产精品久久男人天堂| 成人特级黄色片久久久久久久| 美女午夜性视频免费| 99国产综合亚洲精品| 精品国产一区二区久久| 精品久久久久久久人妻蜜臀av | 亚洲一码二码三码区别大吗| svipshipincom国产片| 日韩国内少妇激情av| 人人妻人人澡欧美一区二区 | 欧美不卡视频在线免费观看 | ponron亚洲| 国产精品一区二区三区四区久久 | 精品一区二区三区四区五区乱码| 女人爽到高潮嗷嗷叫在线视频| ponron亚洲| 老汉色av国产亚洲站长工具| bbb黄色大片| 久久青草综合色| 欧美日韩黄片免| 亚洲情色 制服丝袜| 日日爽夜夜爽网站| 一区二区三区高清视频在线| 十八禁网站免费在线| 午夜福利视频1000在线观看 | 色综合站精品国产| 桃色一区二区三区在线观看| 欧美日韩瑟瑟在线播放| 他把我摸到了高潮在线观看| 香蕉国产在线看| 亚洲情色 制服丝袜| 麻豆成人av在线观看| 久久久久亚洲av毛片大全| 亚洲片人在线观看| 淫秽高清视频在线观看| 成人三级做爰电影| 一边摸一边做爽爽视频免费| 99国产精品免费福利视频| 大香蕉久久成人网| 国产精品电影一区二区三区| av天堂在线播放| 欧美日韩中文字幕国产精品一区二区三区 | 国产区一区二久久| 99国产精品一区二区三区| 免费看a级黄色片| 成在线人永久免费视频| 亚洲精品国产一区二区精华液| 女性被躁到高潮视频| 亚洲第一av免费看| 视频在线观看一区二区三区| 久久影院123| 亚洲欧美日韩另类电影网站| 国产精品一区二区三区四区久久 | 香蕉国产在线看| 怎么达到女性高潮| 亚洲精品一区av在线观看| 色综合站精品国产| 日韩一卡2卡3卡4卡2021年| 免费在线观看日本一区| 国产精品影院久久| 亚洲aⅴ乱码一区二区在线播放 | 欧美一级毛片孕妇| 国产乱人伦免费视频| 午夜福利一区二区在线看| 久久精品成人免费网站| 国产在线精品亚洲第一网站| 欧美+亚洲+日韩+国产| videosex国产| 欧美黄色淫秽网站| 日韩精品中文字幕看吧| 精品乱码久久久久久99久播| 非洲黑人性xxxx精品又粗又长| 精品卡一卡二卡四卡免费| 一进一出抽搐gif免费好疼| 村上凉子中文字幕在线| 午夜视频精品福利| 又黄又爽又免费观看的视频| 色老头精品视频在线观看| 成人特级黄色片久久久久久久| 男人舔女人的私密视频| 国产精品综合久久久久久久免费 | 99国产综合亚洲精品| 欧美日韩福利视频一区二区| 日韩欧美在线二视频| 搡老熟女国产l中国老女人| 女人被躁到高潮嗷嗷叫费观| 国产精品久久久人人做人人爽| 久久人妻福利社区极品人妻图片| 久久香蕉激情| 热re99久久国产66热| 麻豆成人av在线观看| 免费少妇av软件| av有码第一页| 成人手机av| 美女扒开内裤让男人捅视频| 91在线观看av| 亚洲成人久久性| 精品国产美女av久久久久小说| av在线天堂中文字幕| 麻豆国产av国片精品| 国产精品永久免费网站| 国产亚洲精品综合一区在线观看 | 女警被强在线播放| 法律面前人人平等表现在哪些方面| 女人爽到高潮嗷嗷叫在线视频| 少妇粗大呻吟视频| 一区二区日韩欧美中文字幕| 俄罗斯特黄特色一大片| 真人一进一出gif抽搐免费| 国产片内射在线| 日韩国内少妇激情av| 自线自在国产av| 99精品欧美一区二区三区四区| av超薄肉色丝袜交足视频| 亚洲免费av在线视频| 亚洲av成人一区二区三| 丝袜在线中文字幕| 精品乱码久久久久久99久播| 一个人观看的视频www高清免费观看 | 久久久水蜜桃国产精品网| 69av精品久久久久久| x7x7x7水蜜桃| 久久青草综合色| 国产视频一区二区在线看| 97人妻精品一区二区三区麻豆 | 久热这里只有精品99| 亚洲欧美一区二区三区黑人| 欧美日韩福利视频一区二区| 国产精品一区二区在线不卡| 午夜福利影视在线免费观看| 999精品在线视频| 午夜福利一区二区在线看| 51午夜福利影视在线观看| 午夜精品久久久久久毛片777| 国产成人啪精品午夜网站| 精品卡一卡二卡四卡免费| 老司机靠b影院| 午夜免费观看网址| 啪啪无遮挡十八禁网站| 少妇的丰满在线观看| 9191精品国产免费久久| 日韩中文字幕欧美一区二区| 婷婷六月久久综合丁香| 老鸭窝网址在线观看| 国产精品精品国产色婷婷| 精品国产乱码久久久久久男人| 国产一区二区在线av高清观看| 淫秽高清视频在线观看| 高清黄色对白视频在线免费看| 18禁裸乳无遮挡免费网站照片 | 在线免费观看的www视频| 叶爱在线成人免费视频播放| 丝袜人妻中文字幕| 国产麻豆69| 精品午夜福利视频在线观看一区| 可以在线观看毛片的网站| 欧美绝顶高潮抽搐喷水| 黄网站色视频无遮挡免费观看| 久久欧美精品欧美久久欧美| 亚洲性夜色夜夜综合| 国产精品美女特级片免费视频播放器 | x7x7x7水蜜桃| 亚洲在线自拍视频| 亚洲欧美激情在线| 久久国产精品男人的天堂亚洲| 变态另类丝袜制服| av超薄肉色丝袜交足视频| 成年女人毛片免费观看观看9| 亚洲av成人一区二区三| 999久久久国产精品视频| 日韩欧美三级三区| 男女下面插进去视频免费观看| 桃色一区二区三区在线观看| 亚洲精品av麻豆狂野| 国产一级毛片七仙女欲春2 | 欧美午夜高清在线| 男女之事视频高清在线观看| 免费不卡黄色视频| 99精品在免费线老司机午夜| 麻豆成人av在线观看| 久久婷婷人人爽人人干人人爱 | 精品久久久久久久久久免费视频| 女性被躁到高潮视频| 在线视频色国产色| 国产精品av久久久久免费| 久99久视频精品免费| 午夜久久久久精精品| 免费在线观看视频国产中文字幕亚洲| 精品人妻1区二区| 久久久久久国产a免费观看| 成年人黄色毛片网站| 亚洲精品国产色婷婷电影| 国产精品1区2区在线观看.| 日韩精品免费视频一区二区三区| 91av网站免费观看| av片东京热男人的天堂| 91精品国产国语对白视频| 老司机靠b影院| 亚洲熟妇中文字幕五十中出| 欧美国产精品va在线观看不卡| 韩国精品一区二区三区| 国产精品日韩av在线免费观看 | 九色亚洲精品在线播放| 搡老岳熟女国产| 久久中文字幕人妻熟女| 午夜老司机福利片| 久久久久久久久中文| 国产精品一区二区精品视频观看| 久久久国产欧美日韩av| 90打野战视频偷拍视频| 午夜精品在线福利| 国产成人av激情在线播放| 黄网站色视频无遮挡免费观看| 婷婷六月久久综合丁香| 亚洲精华国产精华精| 欧洲精品卡2卡3卡4卡5卡区| 一本大道久久a久久精品| 此物有八面人人有两片| 国产一区二区激情短视频| 久9热在线精品视频| 国产激情欧美一区二区| 欧美一区二区精品小视频在线| 亚洲熟妇熟女久久| 久久香蕉激情| 国产99久久九九免费精品| 午夜精品国产一区二区电影| 一二三四社区在线视频社区8| 国产熟女午夜一区二区三区| 窝窝影院91人妻| 老汉色∧v一级毛片| 美女高潮喷水抽搐中文字幕| 欧美乱妇无乱码| 久久人妻av系列| 亚洲熟女毛片儿| 国产精品香港三级国产av潘金莲| 免费搜索国产男女视频| 校园春色视频在线观看| 真人做人爱边吃奶动态| 欧美亚洲日本最大视频资源| 久久中文看片网| 亚洲五月婷婷丁香| 久久午夜综合久久蜜桃| 亚洲欧美日韩另类电影网站| 国产av一区二区精品久久| 亚洲国产欧美一区二区综合| 午夜福利成人在线免费观看| 欧美激情久久久久久爽电影 | 很黄的视频免费| 9191精品国产免费久久| 欧美日本亚洲视频在线播放| 亚洲av电影在线进入| 国产成人av教育| 国产亚洲精品综合一区在线观看 | 亚洲国产中文字幕在线视频| 又黄又爽又免费观看的视频| 日本欧美视频一区| 亚洲av熟女| 亚洲avbb在线观看| 欧美精品亚洲一区二区| 男女做爰动态图高潮gif福利片 | 亚洲第一电影网av| 9热在线视频观看99| 国产91精品成人一区二区三区| 亚洲精品久久国产高清桃花| 黑人欧美特级aaaaaa片| 亚洲一区二区三区色噜噜| 亚洲精品美女久久久久99蜜臀| 久99久视频精品免费| 看黄色毛片网站| 亚洲欧美日韩无卡精品| 亚洲aⅴ乱码一区二区在线播放 | 欧美激情 高清一区二区三区| 一区二区三区精品91| 夜夜躁狠狠躁天天躁| 日韩精品青青久久久久久| 制服丝袜大香蕉在线| 色综合欧美亚洲国产小说| 亚洲最大成人中文| 婷婷六月久久综合丁香| 在线观看免费日韩欧美大片| 欧美最黄视频在线播放免费| 亚洲专区中文字幕在线| 亚洲人成77777在线视频| 夜夜夜夜夜久久久久| 欧美乱码精品一区二区三区| 国产av在哪里看| 成在线人永久免费视频| 日韩一卡2卡3卡4卡2021年| 99国产精品一区二区三区| 国产av一区二区精品久久| 亚洲五月婷婷丁香| 亚洲 欧美一区二区三区| 波多野结衣高清无吗| 日本免费a在线| √禁漫天堂资源中文www| 黑人巨大精品欧美一区二区mp4| 久久久水蜜桃国产精品网| 国产麻豆成人av免费视频| 热re99久久国产66热| 国产精品久久久av美女十八| 亚洲黑人精品在线| 国产精品一区二区免费欧美| 悠悠久久av| 亚洲中文av在线| 国产单亲对白刺激| 757午夜福利合集在线观看| 色综合亚洲欧美另类图片| 别揉我奶头~嗯~啊~动态视频| 看片在线看免费视频| 悠悠久久av| 亚洲无线在线观看| 精品欧美一区二区三区在线| av免费在线观看网站| 午夜福利,免费看| 亚洲人成电影免费在线| av电影中文网址| 一区二区日韩欧美中文字幕| 国产精华一区二区三区| 免费在线观看日本一区| 午夜免费成人在线视频| 精品免费久久久久久久清纯| 亚洲国产中文字幕在线视频| 精品不卡国产一区二区三区| 在线天堂中文资源库| 国产麻豆69| 在线十欧美十亚洲十日本专区| 午夜福利一区二区在线看| 日韩高清综合在线| 久久国产亚洲av麻豆专区| 国产精品久久久av美女十八| 国产伦一二天堂av在线观看| 亚洲成人精品中文字幕电影| www.www免费av| 成人精品一区二区免费| 国产又色又爽无遮挡免费看| 一边摸一边抽搐一进一小说| 亚洲色图综合在线观看| 亚洲国产毛片av蜜桃av| 人成视频在线观看免费观看| 午夜免费鲁丝| 精品久久久久久,| www.www免费av| 精品国内亚洲2022精品成人| 无遮挡黄片免费观看| 男女下面插进去视频免费观看| 午夜免费鲁丝| 久久久久亚洲av毛片大全| 人成视频在线观看免费观看| 欧美最黄视频在线播放免费| 亚洲精品一区av在线观看| 最近最新免费中文字幕在线| 淫妇啪啪啪对白视频| 日韩精品青青久久久久久| 一个人观看的视频www高清免费观看 | av天堂在线播放| 男女之事视频高清在线观看| 久久人妻av系列| av天堂在线播放| 母亲3免费完整高清在线观看| 精品久久久久久久人妻蜜臀av | 搡老妇女老女人老熟妇| 黄色丝袜av网址大全| www.自偷自拍.com| cao死你这个sao货| 日韩大尺度精品在线看网址 | 日韩一卡2卡3卡4卡2021年| 国产精品免费视频内射| 女性生殖器流出的白浆| 中出人妻视频一区二区| 久热爱精品视频在线9| 精品乱码久久久久久99久播| 国内精品久久久久久久电影| 久久国产精品影院| videosex国产| 日本在线视频免费播放| 大型黄色视频在线免费观看| 夜夜爽天天搞| 国产激情欧美一区二区| 久久狼人影院| 99香蕉大伊视频| www日本在线高清视频| 久久久水蜜桃国产精品网| 99久久综合精品五月天人人| 国产99白浆流出| 黄频高清免费视频| 午夜免费鲁丝| 搡老岳熟女国产| 青草久久国产| 咕卡用的链子| 91麻豆精品激情在线观看国产| 女人精品久久久久毛片| 亚洲中文字幕日韩| 久久人妻熟女aⅴ| 久久青草综合色| 欧美黑人精品巨大| 亚洲人成伊人成综合网2020| 亚洲精品一卡2卡三卡4卡5卡| 国产成人精品在线电影| 久久午夜综合久久蜜桃| 国产av在哪里看| 国产色视频综合| 又黄又粗又硬又大视频| 亚洲av成人av| 久久久久久亚洲精品国产蜜桃av| 久久精品91蜜桃| 99国产综合亚洲精品| 91老司机精品| 久久国产乱子伦精品免费另类| 中文字幕另类日韩欧美亚洲嫩草| 成熟少妇高潮喷水视频| 亚洲欧美精品综合一区二区三区| 在线观看一区二区三区| 国产麻豆成人av免费视频| 999久久久精品免费观看国产| 亚洲五月天丁香| 国产精品乱码一区二三区的特点 | 亚洲激情在线av| 可以在线观看的亚洲视频| 国产高清视频在线播放一区| 国产色视频综合| 亚洲电影在线观看av| 日韩高清综合在线| 在线观看66精品国产| 久久亚洲真实| 一级,二级,三级黄色视频| 99精品在免费线老司机午夜| 99精品欧美一区二区三区四区| 久久午夜综合久久蜜桃| 国产又爽黄色视频| 亚洲中文字幕一区二区三区有码在线看 | 久久久久久亚洲精品国产蜜桃av| 岛国在线观看网站| 国产精品精品国产色婷婷| 午夜免费鲁丝| 一区二区日韩欧美中文字幕| av片东京热男人的天堂| 麻豆久久精品国产亚洲av| 夜夜爽天天搞| 一本综合久久免费| 亚洲熟妇中文字幕五十中出| 日本三级黄在线观看| 黑人巨大精品欧美一区二区蜜桃| 日韩高清综合在线| 久久精品亚洲精品国产色婷小说| 男女床上黄色一级片免费看| 亚洲男人的天堂狠狠| 久久国产乱子伦精品免费另类| 日韩有码中文字幕| 久久国产精品影院| 亚洲av第一区精品v没综合| 午夜日韩欧美国产| 99精品欧美一区二区三区四区| 亚洲成a人片在线一区二区| 亚洲国产欧美日韩在线播放| 一级,二级,三级黄色视频| 超碰成人久久| 亚洲精品国产精品久久久不卡| 欧美中文综合在线视频| 国产男靠女视频免费网站| 99在线视频只有这里精品首页| 久久香蕉精品热| 两个人视频免费观看高清| 咕卡用的链子| av有码第一页| 最近最新中文字幕大全电影3 | 国产精品久久电影中文字幕| 国产亚洲精品第一综合不卡| 久99久视频精品免费| 精品国产亚洲在线| 中国美女看黄片| 少妇熟女aⅴ在线视频| 叶爱在线成人免费视频播放| 精品国产乱子伦一区二区三区| 欧美黑人精品巨大| 久久久久久亚洲精品国产蜜桃av| 亚洲精品在线观看二区| 久久香蕉激情| 不卡一级毛片| 禁无遮挡网站| 777久久人妻少妇嫩草av网站| 国产成人精品久久二区二区91| 美国免费a级毛片| 国产成人精品在线电影| 欧美一级a爱片免费观看看 | 国产成人精品久久二区二区免费| 国产精品一区二区三区四区久久 | 国产欧美日韩一区二区精品| 国产亚洲精品久久久久久毛片| 久久久久久久久久久久大奶| 国产精品乱码一区二三区的特点 | 亚洲午夜理论影院| 天堂√8在线中文| 一级毛片精品| 一二三四社区在线视频社区8| 久久热在线av| 他把我摸到了高潮在线观看| 国产精品久久电影中文字幕| 日韩 欧美 亚洲 中文字幕| 女人精品久久久久毛片| 久久人人97超碰香蕉20202| 别揉我奶头~嗯~啊~动态视频| 999精品在线视频| 欧美乱妇无乱码| 欧美成人午夜精品| 18美女黄网站色大片免费观看| 亚洲av五月六月丁香网| 亚洲一码二码三码区别大吗| 在线国产一区二区在线| or卡值多少钱| 亚洲国产欧美网| 国产一区二区激情短视频| 成人欧美大片| 亚洲精品美女久久久久99蜜臀| 国产成人av激情在线播放| 深夜精品福利| 50天的宝宝边吃奶边哭怎么回事| 久久精品国产清高在天天线| 日本三级黄在线观看| 一区二区日韩欧美中文字幕| www.精华液| 国产主播在线观看一区二区| √禁漫天堂资源中文www| 美女大奶头视频| 欧美成人免费av一区二区三区| 日本欧美视频一区| 久久久国产成人精品二区| 午夜影院日韩av| 日本撒尿小便嘘嘘汇集6| 波多野结衣高清无吗| 女警被强在线播放| 女人被躁到高潮嗷嗷叫费观| 波多野结衣一区麻豆| 亚洲三区欧美一区| 亚洲成av人片免费观看| 日韩中文字幕欧美一区二区| 十八禁人妻一区二区| 妹子高潮喷水视频| 18美女黄网站色大片免费观看| 变态另类成人亚洲欧美熟女 | 亚洲午夜精品一区,二区,三区| 国产高清有码在线观看视频 | 精品人妻在线不人妻| 亚洲av电影不卡..在线观看| 美女大奶头视频| 熟女少妇亚洲综合色aaa.| 午夜a级毛片| 午夜成年电影在线免费观看| 精品人妻在线不人妻| 国产精品永久免费网站| 色综合亚洲欧美另类图片| 级片在线观看| 久久精品国产清高在天天线| 国产片内射在线| 黄片小视频在线播放| 最近最新中文字幕大全电影3 | 12—13女人毛片做爰片一| 午夜精品久久久久久毛片777| 午夜视频精品福利| 18禁黄网站禁片午夜丰满| 亚洲av成人不卡在线观看播放网| 美女 人体艺术 gogo| 国产野战对白在线观看| 少妇的丰满在线观看| 免费少妇av软件| 美女扒开内裤让男人捅视频| 男女做爰动态图高潮gif福利片 | 久久国产精品影院| 国产精品久久视频播放| 麻豆成人av在线观看| 国产精华一区二区三区| 12—13女人毛片做爰片一| 国产精品美女特级片免费视频播放器 | 国产熟女xx| 51午夜福利影视在线观看| 国产精品乱码一区二三区的特点 | 久久精品国产综合久久久| 性色av乱码一区二区三区2| 老司机在亚洲福利影院| 亚洲人成电影观看| 欧美成人午夜精品| 午夜精品久久久久久毛片777| 午夜视频精品福利| 两人在一起打扑克的视频| 啦啦啦免费观看视频1| 亚洲第一电影网av| 国产精品二区激情视频| 国产1区2区3区精品| 久久中文字幕人妻熟女| 亚洲一区中文字幕在线| 最近最新免费中文字幕在线| 亚洲 欧美 日韩 在线 免费| 亚洲色图 男人天堂 中文字幕| 99久久久亚洲精品蜜臀av| 欧美色欧美亚洲另类二区 | 性少妇av在线| 搡老岳熟女国产| 伦理电影免费视频|