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

    MATLAB程序轉C代碼的方法研究

    2018-01-15 22:41:39周世欽王波濤
    價值工程 2018年2期

    周世欽+王波濤

    摘要:通過MATLAB程序轉C代碼的研究與應用可以加快軟件、算法從研究到實際應用的進程,提高軟件、算法研發(fā)的效率。對于轉C的流程、方法、注意事項以及限制等問題需要深入研究。以MATLAB2014的轉C工具MATLAB Coder為基礎,分析了MATLAB轉C代碼的細節(jié),完整地研究了MATLAB代碼轉成C代碼的整體流程。通過合理的轉C規(guī)范,MATLAB支持常規(guī)算法和大多數工具庫函數轉C,保持原功能、邏輯不便。使用動態(tài)預分配內存,外置接口,簡化函數等方法,使得一部分非常規(guī)算法、不支持轉C或限制性MATLAB函數能夠正確轉化為C語言代碼。

    Abstract: The research and application that MATLAB program transforming to C code can expedite the progress from algorithm or software research to practical application and improve the efficiency of software or algorithm development. These problems about transformation's processes, methods, points for attention, limitation and so on need to be further researched. Based on MATLAB Coder of Matlab2014 tool for transforming to C, it analyses details of MATLAB transforming to C code and its whole process. With reasonable transformation specification, MATLAB support general algorithm and most tool functions to transform to C code, which retain intrinsic function and logic. Using some methods such as dynamically pre-allocating memory, external interface and simplifying functions, it also makes a part of uncommon algorithm and MATLAB tool functions which are not support to transform to C or have transformation limitation possible to successfully transform to C language code.

    關鍵詞:Matlab轉C;Coder;代碼規(guī)范;轉C流程;轉C限制

    Key words: Matlab transformingto C;Coder;code specification;transformation process;transformation limitation

    中圖分類號:TP311 文獻標識碼:A 文章編號:1006-4311(2018)02-0182-04

    0 引言

    目前,利用Matlab軟件[1]作為工具來進行算法設計、驗證已經成為研究者們首選的手段之一[2],而通過Matlab轉C,可以直接將Matlab函數轉換成高效優(yōu)化的C程序,移植到嵌入式環(huán)境中去[3]。

    Matlab Coder工具是MathWorks公司推出的Matlab2014a版本中一個重要的產品[4],它可以將Matlab 函數直接生成C代碼[5]。借助Matlab Coder,軟件工程師不再需要將設計的算法進行C語言重新編程,而是利用Matlab軟件中強大的函數庫[6],按照通用的轉C流程,參照轉C規(guī)范,通過建立Matlab函數,并設置目標語言所需要的參數,生成能夠脫離Matlab環(huán)境獨立運行的C代碼,這樣就大大減輕了軟件工程師的編碼工作[7]。

    對于基于Matlab2014a版本Coder的Matlab轉C,本文介紹經過實踐的、行之有效的轉C方案與流程,并將轉C中遇到的問題與解決方法、思路在下文中進行介紹,以助于更好的實現(xiàn)轉C工作。文章接下來的一節(jié)將詳細介紹Matlab程序整體轉C代碼流程。對于轉C過程中的幾個常遇問題及其處理方法,將在隨后的一節(jié)中羅列出來并給出詳細說明。實際轉C過程中,可能會存在障礙和一些限制,對此,創(chuàng)新性地通過動態(tài)預分配內存,外置接口,簡化函數等方法化解,在文章的最后一節(jié)將會對此進行詳細說明。

    運用matlab轉C方法,可以方便、快捷、準備地將matlab算法轉化成C語音實現(xiàn),使之運用在嵌入式環(huán)境成為可能。通過本文的詳細介紹,能夠使讀者對于使用matlab coder工具進行matlab轉C有更加直觀、系統(tǒng)的認識;引導讀者正確使用2014a版本的matlab coder進行matlab轉C工作;為從matlab算法設計、仿真、驗證到算法的C語言實現(xiàn)、嵌入式環(huán)境應用提供了一條切實可行的途徑;同時,文章中也著重列出了多項技術要點,是轉C工作順利進行和是否成功的關鍵所在,對實際matlab轉C工作有著重要的借鑒意義。但也應當了解到, Matlab轉C依然存在著無法解決的情況,這些情況并不在本文討論范圍之內,故應盡量避開之,或者,隨著Matlab Coder的升級,某些問題可隨之化解。

    1 Matlab程序整體轉C代碼流程

    借助Matlab Coder轉C有其一定的步驟與要求規(guī)范,Matlab2014a版本Matlab Coder的轉C流程如圖1所示,以及其重要的幾步工作如下所述。簡單的Matlab函數經過簡單的調整,經過如下步驟和要求就能成功轉C,而面對復雜的情況時,除了要按照上述流程嚴格執(zhí)行外,還要根據具體情況做出相應的修改才能達到某些步驟的要求。endprint

    1.1 封裝Matlab函數

    將Matlab程序所要實現(xiàn)的功能封裝成一個Matlab函數文件,并將其所實現(xiàn)的功能結果作為函數輸出,將所需的數據作為輸入,再將整個函數的代碼進行規(guī)范,以此作為轉C函數。對于Matlab程序,腳本文件[8]是無法通過Coder 工具轉成C代碼的,只有函數文件能通過Coder工具轉成C。

    轉C前要對函數代碼進行轉C規(guī)范。大部分不符合規(guī)范的代碼都可以通過代碼分析器檢測出來(編譯文本框的左側有對應的提示),可通過此依次做出相應的修改,以達到轉C要求。小部分是代碼分析器檢測不到的,需要自己發(fā)現(xiàn)或者轉C編譯報錯時才能從錯誤報告中找到,并對其進行規(guī)范。完成規(guī)范之后才能通過Matlab Coder進行轉C。

    1.2 函數整體分析

    利用Code Generation Readiness Tool整體分析函數是否符合轉C要求。此步驟主要檢查轉C函數中是否調用了不支持轉C的Matlab函數或Matlab對象[9](如:數據類型),Matlab編程[10]是否正確,是否存在嵌套調用等不符合轉C要求規(guī)范的算法,但是,不檢查語法細節(jié)是否符合轉C要求規(guī)范。

    對于檢測出的、不符合轉C要求的,只能對Matlab程序的算法進行修改,去除不符合要求的部分,甚至要對部分算法的功能進行調整、取舍。

    1.3 庫函數轉C限制檢查

    確定轉C函數中調用的Matlab庫函數是否存在轉C限制??梢圆榭碝atlab幫助文檔中的轉C函數支持列表,對照的查看是否存在轉C限制的Matlab工具函數。若調用的Matlab函數存在轉C限制,并且調用時沒有遵循這個限制,則無法轉C。

    1.4 建立轉C工程并運行

    創(chuàng)建轉C工程,加載需要轉C的功能函數,設定輸入變量的數據類型及其大小,選擇轉C后代碼的輸出形式,點擊“編譯”或“Run”即可開始執(zhí)行轉C。創(chuàng)建轉C工程時,創(chuàng)建的轉C工程和需要轉C的功能函數都應存放在當前Matlab工作路徑下。

    1.5 轉C錯誤檢查與修改

    轉C出現(xiàn)錯誤,點擊“Open error report”或“View Report”打開錯誤報告,找到首條錯誤報告并查看錯誤信息和出錯代碼位置,根據相關信息提示修改或規(guī)范源代碼,使得其在不改變源代碼功能邏輯的情況下符合轉C 規(guī)范,保存后再次進行轉C編譯。以此重復類推來逐個消除轉C錯誤,直到最終成功完成轉C編譯。

    1.6 轉C成功

    成功完成轉C。點擊 “View Report”打開轉C結果報告,可以查看到數據類型等的轉C相關信息,也羅列了轉C的輸出文件。在轉C工程路徑下會有個codegen文件夾,里面根據文件輸出類型和轉C工程名新建文件夾,存放著相關輸出的文件,其中.c和.h文件為輸出的C代碼文件,與Matlab源代碼同名文件為其主調函數文件。

    1.7 代碼驗證

    對于轉出的C代碼正確與否,coder提供的方法是生成mex文件用于驗證,但是mex驗證不成功時,又無法通過其分析原因所在。對此,不再用mex函數驗證,直接以代碼驗證的方式進行。其主要解決的問題是,代碼驗證不通過時,可以同步分析C程序和Matlab程序以找出轉C失敗原因。

    新建一個C語言工程用于調用轉C后的功能函數C語言代碼,產生結果并和用Matlab運算產生的結果進行比較,如果結果一樣或者誤差在合理范圍內,則說明轉C成功,轉出的C代碼功能完整,邏輯正確,可直接使用。如果結果不一致、誤差極大,則說明轉C出現(xiàn)問題,可單步運行C程序和Matlab程序,看誤差最先出現(xiàn)在那里,并分析是什么原因造成的,修改或規(guī)范它,然后再進行轉C編譯和代碼驗證,直到二者結果一致或者誤差在合理范圍內為止。代碼驗證時,C程序和Matlab程序用的輸入應當一致,并用多組數據進行驗證。如果有必要,也可以將程序運行中的、有代表性的對應數據進行比較,以此確保轉出的C程序功能、邏輯與源代碼一致。

    2 轉C過程常遇問題及處理方法

    轉C過程中會遇到諸如不符合Matlab Coder轉C規(guī)范的語句、對程序進行轉C規(guī)范時,不符合程序功能邏輯的修改、Matlab和C語言的編程差異[11]導致的轉C問題、Matlab轉C適應性問題與限制性問題、以及轉C對Coder 工具的影響等諸多方面的問題,甚至有些問題不能得到反饋,需自己察覺與分析。

    根據Matlab轉C過程遇到的一些特別的情況總結的一些轉C細節(jié)概述以及對此做出的一些處理,在此列出僅供參考,以避免遇到此情況。

    2.1 統(tǒng)籌編程

    如果計劃要將所編寫的Matlab程序轉成C代碼,那么在設計算法之初,就一定要先參考轉C流程步驟的第二部和第三步,否則就有可能出現(xiàn)完成了算法設計卻無法轉成C代碼的窘境。若到轉C時才發(fā)現(xiàn)這些問題再去改,則有可能需要對算法進行重新設計,改動量較大,甚者是無法修改的情況。

    2.2 數據類型變化

    Matlab變量轉C過程中,變量的第一次調用(多為賦值語句,并為非可忽略語句),決定了它在C語言中的數據類型。如果在Matlab程序中,由于引用賦值(如下面第2)行語句)而導致它的類型發(fā)生變化,那么,則在轉C過程中就會報錯,這是由于Matlab和C語言的編程差異導致的[11]。Matlab程序中變量的數據類型可以發(fā)生改變,而C語言程序中卻不可以。這樣,變量a就從double變量變成了復數變量了。這樣的情況在轉C中會報錯。

    2.3 if語句轉C

    轉C時,Matlab程序中的if語句后面不能是非標量的形式(如數組或結果為數組的表達式),否則報錯。Matlab中,if后面的非標量,只有當全體為真時才認為是真(true),否則為假(false),所以轉C時可以據此做一定的的修改,使得if后面為一個值的標量即可。endprint

    2.4 被忽略的變量

    Matlab程序中,會被“忽略”的變量需要事先“聲明”,即預分配內存[12],否則會出錯。Matlab程序可以在運算中動態(tài)新增變量,有些變量雖然寫在代碼中,但是可能由于沒有執(zhí)行到這段代碼,所以內存中也就沒有出現(xiàn)這個變量,即被“忽略”了。但是在轉C過程中,這些變量卻要求事先“聲明”,這是Matlab與C語言編程差異導致的。

    轉C時會報錯第7)行變量a33未被聲明過,因為第5)行變量賦值語句在選擇語句中,屬非一定執(zhí)行語句,所以被“忽略”了。

    2.5 變量信息問題

    把某項數據固定的寫在Matlab函數的變量中,則轉出的C代碼中,這個變量的信息(長度,數據類型等)都是固定了的,若在Matlab程序中對這個變量的信息有修改,則這些修改未必會反映到轉C中,如果錯誤使用這些信息,將導致程序邏輯錯誤。其他問題導致的變量信息修改未反映到轉C中也會出現(xiàn)這樣的情況。

    2.6 錯誤的預分配內存

    錯誤的預分配內存會導致轉出來的的C代碼邏輯錯誤,即Matlab轉的C代碼中,某些算法的運行結果、次數、或者數值等出現(xiàn)偏差,從而導致和原來的Matlab程序最終結果不一致。分配過多有可能會造成預分配內存前后的Matlab程序運行邏輯不一致,這屬于錯誤的轉C規(guī)范。分配過少則有可能導致Matlab轉出來的C程序邏輯錯誤,甚至轉出來的C程序在運行時會出現(xiàn)堆棧溢出[13]的現(xiàn)象。

    多分配會導致原來的變量冗余,從而有可能導致后面的算法偏離原先設計。如果多分配內存是無法避免的,那么也可以在后面的算法中,加入修正語句,或避開這些冗余量的影響,也可以達到正確效果。預分配內存過少,則在轉C的C代碼后初始化這個變量時會保留錯誤的該變量信息(如數組長度,數據類型等)和申請內存不足,如果后面的算法使用了這些錯誤的信息,則程序運行時會偏離原先設計,甚至會有可能越界訪問內存而導致C程序運行時堆棧溢出。所以應避免預分配內存過少。

    2.7 轉C致軟件崩潰

    Matlab函數的轉C致使Matlab軟件崩潰,直接退出Matlab軟件程序的情況。這樣的情況不常遇見,但很棘手,是轉C的一大障礙。這個故障無法通過反饋分析原因,只能一次次調整程序試出來怎樣的形式才不至于Matlab崩潰。在實踐中發(fā)現(xiàn),Matlab崩潰似乎和復數或復數表達式作為參數調用其它函數再轉C有關。所以,建議轉C的函數盡量避免用復數作為參數參與調用,改用實部虛部做參數,而后在函數內合成復數的方式。另外,避免用作參數的變量重新賦值,尤其是改變長度的幅值。

    3 轉C特殊處理辦法

    3.1 動態(tài)預分配內存

    提供了一種預分配內存的思路,具體是,下一步的預分配內存,是要根據上一步的結果來做出操作的,所以這樣需要預分配的內存長度是未知的。這種情況下,用一個變量作為參數來預分配合適長度的內存。而這個變量的值,則根據上一步運算結果和算法要求而得到。如此,轉出來的C程序就可以根據實際算法運算情況來預分配不同長度的“變量”,而不是固定長度的數組。

    預分配內存是Matlab函數轉C前,規(guī)范Matlab代碼時一步重要的工作。轉C時,大部分的變量都是依照“第一次賦值語句”來聲明變量的,而部分變量在Matlab里的第一次出現(xiàn)卻不是賦值語句,而是循環(huán)語句里的引用賦值語句(例如:a(i)=i)。這樣的情況在Matlab程序中會實時地自動生成和加長對應的變量(即會根據算法迭代而增加變量長度),而轉C過程卻無法適應這種情況,所以要求對這個變量先預分配內存。預分配內存的方法是在其調用之前加一句相對應賦值語句,以起到“第一次賦值語句”的作用。如果這里的“變量”長度是不固定的,則可以采用動態(tài)預分配內存方式。

    3.2 外置接口轉C

    避開某些轉C限制的特殊處理方法,一種妥協(xié)思維。Matlab自帶的Coder轉C工具有其支持轉C函數庫,包括大多數普通常用的函數和信號處理函數。然而,有些函數在Matlab轉C過程中卻有不同的限制。

    重采樣[14]是很多算法和系統(tǒng)中的重要環(huán)節(jié)。在設計算法之時,一般使用Matlab信號處理的resample函數,然而其在轉C時卻有重采樣數據的長度必須為一個確定值,上、下采樣率必須為確定值的常量。在很多算法或系統(tǒng)中,需要重采樣的數據,其長度是不確定的。對于這個情況,設定一個預分配內存足夠大的另一個“變量”,充當外置接口,專門作為resample的參數,把需要處理的數據值轉移到其中,多余的部分忽略(相當于補0值),然后對整體做處理、轉C,最后再從結果中提取出有用的部分(對應有用輸入參數部分的結果)即可。

    經過驗證,確認了這一方法的可靠性,多余部分(補0值的部分、非有用部分)的存在不影響前面的有用輸入參數部分的運算結果,從整體結果中取出的有用結果與單單輸入有用參數所得到的結果相同。通過這種方式,使得在一定數據長度內,既能滿足resample轉C的這項限制要求,又適應了不同長度數據作為輸入的情況。當然這里不同的長度的數據只要不超過前面所說的“一定長度”即可。

    3.3 簡化函數

    通過對Matlab某些不支持轉C的函數進行簡化函數處理(去除冗余語句),使得它需要的部分功能可以轉C。但是,并不是所有的不支持轉C函數都能通過這種方式從而能轉C,只是個別函數能實現(xiàn)。

    一些不支持轉C的函數,可能為了適應多種情況而使用了一些不支持轉C的方法,為了能夠轉C,將這些方法去除或替換。但是這樣一來,原函數的功能就有一定程度上的削弱或缺失。如果,可以確定這些削弱或缺失的功能是算法中所不需要的,那么就可以放心的通過這樣的處理方式以使得程序能夠轉C,不然,無法通過這種方式使得這個函數能夠轉C。整個流程很簡單,關鍵是要自己摸索著查找修改點,然后對其進行正確的簡化操作,并確定這樣子的操作不會對整個算法有影響。endprint

    Matlab庫函數中的medfilter1、lpc函數是不支持轉C的,通過上述思路調整后得以轉C,到達設計要求。以lpc函數為例,大致介紹簡化函數轉C流程:

    ①在matlab庫函數相應的文件夾下找到lpc函數,將其復制到當前工程目錄下;

    ②再用Code Generation Readiness Tool對matlab函數整體分析;

    ③提示lpc函數中try/catch語句不支持轉C。

    ④進入工程目錄下的lpc函數,將try/catch相關語句去掉并保存,通過可行性分析后再轉C。

    ⑤再比較matlab程序和C程序的結果,得以驗證這樣操作能夠滿足要求。

    4 結束語

    Matlab程序轉C代碼是一項集工程創(chuàng)建、代碼規(guī)范[15]、錯誤分析與修正、對比驗證于一身的工程,有其一套行之有效的工作流程和解決方案。符合轉C條件的Matlab程序,通過Matlab Coder工具,按照轉C流程進行操作能夠將完整Matlab程序轉成C代碼。通過Matlab程序的轉C,縮短了算法研發(fā)與實際應用之間的距離,提高了工程師的研發(fā)效率。本文研究了MATLAB程序轉C代碼的方法,介紹了以Matlab2014a版本Coder為基礎的轉C流程,給出了轉C注意事項與處理意見,并且針對一些以前沒有解決辦法的轉C阻礙提出了創(chuàng)新性的解決思路與方法。但是也應看到,Matlab轉C也并不是包治百病的,除了轉C流程第二第三步提到的限制外,在Matlab編程中還應該注意到Matlab和C語言的編程差異以及適應性問題[11],這些都在一定程度上限定了Matlab算法編程。同時,我們可以看到,通過對某些轉C限制進行某種“妥協(xié)”,也可以繞開這樣的限制,以達到我們的目的。

    參考文獻:

    [1]印金國.遙控信號調制與Matlab程序實現(xiàn)[J].電腦編程技巧與維護,2006(10):25-29.

    [2]劉浩,韓晶.MATLAB R2014a完全自學一本通[M].北京:電子工業(yè)出版社,2015.

    [3]廖燦燦,張樹群,雷兆宜.Matlab Coder生成C代碼的研究與應用[J].計算機與現(xiàn)代化,2013(3):175-178.

    [4]Online MATLAB. MATLABR2014a,MATLAB Coder[EB/OL],http:/ /www.mathworks.cn /products /matlab-coder/,2014-10-10.

    [5]Online MATLAB.從 MATLAB 代碼生成 C 和 C++ 代碼[EB/OL]https://cn.mathworks.com/products/matlab-coder.html,2014-10-10.

    [6]李???基于MATLAB函數庫增強VB數值計算能力的研究[J].計算機工程與應用,2003,39(23):57-59.

    [7]陸楠.自動C/C++代碼轉換工具提高MATLAB設計效率[J].電子設計技術,2011(7):38.

    [8]黃根嶺,張清淼,周利紅.MATLAB/Simulink在通信原理教學中的應用[J].鄭州鐵路職業(yè)技術學院學報,2015(3):94-97.

    [9]劉春輝.C++、java、matlab面象對象編程之比較[J].硅谷, 2010(6):75.

    [10]蔣鵬.MATLAB編程的特點與優(yōu)化[J].數字技術與應用, 2016(2):183.

    [11]陳榮榮.C++與Matlab的基本語法比較[J].電腦編程技巧與維護,2011(14):32-34.

    [12]李月潔,李蘭友,尤一鳴.內存預分配管理[J].儀器儀表用戶,2006,13(5):104-105.

    [13]李宛娜.堆棧溢出技術剖析[J].哈爾濱職業(yè)技術學院學報, 2008(1):115-116.

    [14]宗志毅,王曉音,楊莘元.多率信號處理中的重采樣技術[J].電子信息對抗技術,2003,18(3):37-41.

    [15]李大勇.淺談軟件開發(fā)中代碼規(guī)范的問題[J].電子技術與軟件工程,2015(15):50.endprint

    91久久精品电影网| 成人特级黄色片久久久久久久| 午夜精品在线福利| 国产精品爽爽va在线观看网站| 国产不卡一卡二| 国产精品女同一区二区软件 | 男人舔女人下体高潮全视频| 12—13女人毛片做爰片一| 小蜜桃在线观看免费完整版高清| 内地一区二区视频在线| 成人二区视频| 无人区码免费观看不卡| 亚洲最大成人手机在线| 欧美色视频一区免费| 男插女下体视频免费在线播放| 欧美日本视频| 露出奶头的视频| 看十八女毛片水多多多| 精品一区二区三区视频在线| 亚洲黑人精品在线| 色综合色国产| 91久久精品国产一区二区成人| 欧美激情久久久久久爽电影| 午夜福利在线观看吧| 国产熟女欧美一区二区| 亚洲aⅴ乱码一区二区在线播放| 免费高清视频大片| 熟女电影av网| 搡老熟女国产l中国老女人| 国产大屁股一区二区在线视频| 午夜福利成人在线免费观看| 国产亚洲欧美98| 午夜精品在线福利| 亚洲精华国产精华精| 欧美一区二区亚洲| 国产精品av视频在线免费观看| 国产高清视频在线播放一区| 亚洲人成网站在线播放欧美日韩| 伊人久久精品亚洲午夜| 日韩欧美国产一区二区入口| 色综合亚洲欧美另类图片| 我要看日韩黄色一级片| 国产中年淑女户外野战色| 最新在线观看一区二区三区| 欧美高清成人免费视频www| 欧美区成人在线视频| 日日啪夜夜撸| 久久婷婷人人爽人人干人人爱| 亚洲熟妇熟女久久| 久久午夜亚洲精品久久| 国产在视频线在精品| 伦精品一区二区三区| 中文亚洲av片在线观看爽| 午夜福利18| АⅤ资源中文在线天堂| 午夜免费激情av| 干丝袜人妻中文字幕| 成人美女网站在线观看视频| 搡老熟女国产l中国老女人| 身体一侧抽搐| 日本 av在线| 久久精品综合一区二区三区| 国产亚洲av嫩草精品影院| 欧美中文日本在线观看视频| 亚洲人成伊人成综合网2020| 国产精品亚洲美女久久久| 日本免费一区二区三区高清不卡| 色噜噜av男人的天堂激情| 色综合站精品国产| 日本欧美国产在线视频| 国内久久婷婷六月综合欲色啪| 在线播放无遮挡| 国产乱人伦免费视频| 人人妻,人人澡人人爽秒播| 精品人妻视频免费看| 久久精品国产自在天天线| 淫秽高清视频在线观看| 国产精品美女特级片免费视频播放器| 午夜精品一区二区三区免费看| 亚洲av五月六月丁香网| 2021天堂中文幕一二区在线观| 99久久精品热视频| 性插视频无遮挡在线免费观看| 亚洲人成伊人成综合网2020| 国产av麻豆久久久久久久| 婷婷精品国产亚洲av| 最好的美女福利视频网| 变态另类丝袜制服| 亚洲最大成人手机在线| 又黄又爽又刺激的免费视频.| 成人国产综合亚洲| 18禁黄网站禁片免费观看直播| 色哟哟·www| 久久久久国内视频| 国产精品永久免费网站| 两性午夜刺激爽爽歪歪视频在线观看| 日本色播在线视频| 一个人免费在线观看电影| 久久久国产成人免费| 国产精品永久免费网站| 亚洲精品一卡2卡三卡4卡5卡| 亚洲成人精品中文字幕电影| 在线观看美女被高潮喷水网站| 国产精品美女特级片免费视频播放器| a级一级毛片免费在线观看| 成人特级黄色片久久久久久久| 精品一区二区三区人妻视频| 国产三级中文精品| 国内精品一区二区在线观看| 美女高潮的动态| 最近中文字幕高清免费大全6 | 国产一区二区激情短视频| 亚洲18禁久久av| 亚洲av.av天堂| 十八禁网站免费在线| 国产黄a三级三级三级人| 欧美激情在线99| 无人区码免费观看不卡| 18+在线观看网站| 不卡一级毛片| 黄色女人牲交| 国产男人的电影天堂91| 九色成人免费人妻av| 九色成人免费人妻av| 露出奶头的视频| 亚洲国产精品成人综合色| 69av精品久久久久久| 亚洲av熟女| 观看美女的网站| 高清毛片免费观看视频网站| 午夜精品在线福利| 桃红色精品国产亚洲av| 亚洲精华国产精华精| 日本a在线网址| 超碰av人人做人人爽久久| 91在线精品国自产拍蜜月| 天美传媒精品一区二区| 免费大片18禁| 亚洲精品国产成人久久av| 国产黄色小视频在线观看| 亚洲黑人精品在线| 精品欧美国产一区二区三| 美女cb高潮喷水在线观看| 国产真实乱freesex| 久久99热6这里只有精品| 亚洲av不卡在线观看| 国产综合懂色| 色综合婷婷激情| 天天一区二区日本电影三级| 国产亚洲精品久久久久久毛片| 久久欧美精品欧美久久欧美| 嫩草影院精品99| 国产成人aa在线观看| 99热精品在线国产| 日韩人妻高清精品专区| 欧美性感艳星| 成熟少妇高潮喷水视频| 免费看光身美女| 亚洲国产精品sss在线观看| 免费大片18禁| 免费人成视频x8x8入口观看| 成人亚洲精品av一区二区| 特级一级黄色大片| 国产av在哪里看| 狂野欧美激情性xxxx在线观看| 国内精品宾馆在线| 国产精品电影一区二区三区| 日本免费一区二区三区高清不卡| 极品教师在线免费播放| 亚洲成a人片在线一区二区| 小蜜桃在线观看免费完整版高清| 中文字幕av成人在线电影| 国产精品日韩av在线免费观看| 精品人妻熟女av久视频| 日韩在线高清观看一区二区三区 | 日本免费一区二区三区高清不卡| 五月伊人婷婷丁香| 日本精品一区二区三区蜜桃| 国产一区二区激情短视频| 亚洲精华国产精华精| 亚洲精品456在线播放app | 国产精品1区2区在线观看.| 两个人的视频大全免费| 中文字幕av成人在线电影| 少妇丰满av| 99在线人妻在线中文字幕| 国产伦人伦偷精品视频| a在线观看视频网站| 久久精品国产亚洲网站| 国产久久久一区二区三区| 中文字幕久久专区| 国产亚洲精品av在线| 黄色日韩在线| 22中文网久久字幕| avwww免费| 男女边吃奶边做爰视频| 一边摸一边抽搐一进一小说| 成人一区二区视频在线观看| 久久久午夜欧美精品| 九九热线精品视视频播放| 国产真实乱freesex| 午夜精品一区二区三区免费看| 日韩欧美 国产精品| 精品久久国产蜜桃| 亚洲人成伊人成综合网2020| 国产乱人伦免费视频| 国产蜜桃级精品一区二区三区| 成人无遮挡网站| 尤物成人国产欧美一区二区三区| 免费在线观看影片大全网站| 日本爱情动作片www.在线观看 | 国产成人aa在线观看| 国产在线男女| 美女大奶头视频| 欧美激情在线99| 亚洲不卡免费看| 亚洲人成网站在线播放欧美日韩| 色哟哟·www| 99热6这里只有精品| 国产精品亚洲美女久久久| 91狼人影院| 国产乱人视频| 岛国在线免费视频观看| 男女那种视频在线观看| 神马国产精品三级电影在线观看| 露出奶头的视频| 亚洲av电影不卡..在线观看| 国产高清不卡午夜福利| 日本免费a在线| 九九爱精品视频在线观看| 国产老妇女一区| 淫秽高清视频在线观看| 99在线视频只有这里精品首页| 免费在线观看成人毛片| 精品乱码久久久久久99久播| 九色成人免费人妻av| 亚洲国产精品成人综合色| 国产中年淑女户外野战色| 能在线免费观看的黄片| 国产大屁股一区二区在线视频| 亚洲av成人精品一区久久| 看免费成人av毛片| 1000部很黄的大片| www日本黄色视频网| 中文字幕熟女人妻在线| 亚洲成人久久性| 久久亚洲精品不卡| 成人无遮挡网站| 久久久久久久亚洲中文字幕| 两个人的视频大全免费| 九九热线精品视视频播放| 桃色一区二区三区在线观看| 成人永久免费在线观看视频| 黄片wwwwww| 欧美黑人巨大hd| 日韩欧美在线二视频| 22中文网久久字幕| 精品欧美国产一区二区三| 免费无遮挡裸体视频| 久久精品综合一区二区三区| 天堂网av新在线| 午夜a级毛片| 一级黄片播放器| av.在线天堂| 亚洲国产精品成人综合色| 91在线观看av| 久久久久久国产a免费观看| 久久久久久久久久久丰满 | 成年女人永久免费观看视频| 亚洲第一电影网av| 国产精品一区二区性色av| 变态另类丝袜制服| 日韩欧美精品免费久久| 久久久久精品国产欧美久久久| av.在线天堂| 久久久久久久久大av| 性插视频无遮挡在线免费观看| 日韩欧美国产在线观看| 麻豆久久精品国产亚洲av| 国产亚洲午夜精品一区二区久久| 久久精品夜色国产| 伦精品一区二区三区| 久久久久精品久久久久真实原创| 18禁裸乳无遮挡免费网站照片| 亚洲国产毛片av蜜桃av| 边亲边吃奶的免费视频| 91久久精品国产一区二区三区| 老司机影院成人| 日韩在线高清观看一区二区三区| 男女边摸边吃奶| 青青草视频在线视频观看| 99热全是精品| av专区在线播放| 国产一区二区三区av在线| 最近手机中文字幕大全| 国产精品国产av在线观看| av国产免费在线观看| 日本欧美国产在线视频| 五月开心婷婷网| 丰满人妻一区二区三区视频av| 国产精品久久久久久久久免| 国产精品久久久久久久电影| 久久99热这里只频精品6学生| 嘟嘟电影网在线观看| 日日啪夜夜撸| 亚洲高清免费不卡视频| 欧美日本视频| 国产亚洲欧美精品永久| 亚洲av成人精品一区久久| 国产精品偷伦视频观看了| 亚洲精品国产av成人精品| 国产黄片美女视频| 91久久精品国产一区二区三区| 成人综合一区亚洲| 久久久久精品久久久久真实原创| 国产精品99久久99久久久不卡 | 一本久久精品| 国产欧美亚洲国产| 成人特级av手机在线观看| 极品教师在线视频| 国产午夜精品久久久久久一区二区三区| 日本一二三区视频观看| 伦理电影大哥的女人| 超碰av人人做人人爽久久| 国产免费又黄又爽又色| 又大又黄又爽视频免费| 久久精品国产亚洲网站| 久久久亚洲精品成人影院| 亚洲婷婷狠狠爱综合网| 伦精品一区二区三区| 国产高清国产精品国产三级 | 亚洲av男天堂| 韩国av在线不卡| 午夜福利在线观看免费完整高清在| 久久人人爽av亚洲精品天堂 | 成人18禁高潮啪啪吃奶动态图 | 在线观看三级黄色| 国产精品久久久久久精品古装| 国产熟女欧美一区二区| 国语对白做爰xxxⅹ性视频网站| 国产伦在线观看视频一区| 在线观看国产h片| 99热这里只有是精品50| 九九久久精品国产亚洲av麻豆| 欧美极品一区二区三区四区| 免费高清在线观看视频在线观看| av女优亚洲男人天堂| 最近中文字幕2019免费版| 观看美女的网站| 一级毛片aaaaaa免费看小| 精华霜和精华液先用哪个| 简卡轻食公司| 色网站视频免费| 久久青草综合色| 联通29元200g的流量卡| 久久久久久伊人网av| 成人二区视频| 国产久久久一区二区三区| 成人毛片60女人毛片免费| av不卡在线播放| 亚洲av二区三区四区| 欧美性感艳星| 国产久久久一区二区三区| av在线观看视频网站免费| 亚洲国产色片| 天堂中文最新版在线下载| 91久久精品国产一区二区成人| 人人妻人人看人人澡| 有码 亚洲区| 亚洲国产精品国产精品| 少妇丰满av| 免费黄网站久久成人精品| 国产精品国产三级专区第一集| 一二三四中文在线观看免费高清| 国产精品.久久久| 一级二级三级毛片免费看| 亚洲精品乱码久久久v下载方式| 日本午夜av视频| 秋霞在线观看毛片| 精品人妻偷拍中文字幕| 一区二区三区免费毛片| 欧美最新免费一区二区三区| 精品少妇久久久久久888优播| 99热这里只有是精品50| 国产男人的电影天堂91| 少妇精品久久久久久久| 九九久久精品国产亚洲av麻豆| 伊人久久国产一区二区| 99热国产这里只有精品6| 人妻系列 视频| 91久久精品电影网| 国产中年淑女户外野战色| 欧美精品一区二区大全| 一本一本综合久久| 亚洲欧美一区二区三区黑人 | 高清欧美精品videossex| 欧美+日韩+精品| 亚洲av男天堂| 香蕉精品网在线| 永久免费av网站大全| 亚洲欧美清纯卡通| 欧美激情极品国产一区二区三区 | 美女中出高潮动态图| 少妇的逼好多水| 赤兔流量卡办理| 久久久久人妻精品一区果冻| 成人高潮视频无遮挡免费网站| 91精品国产国语对白视频| 国产白丝娇喘喷水9色精品| 在线观看免费高清a一片| 国产av一区二区精品久久 | 午夜免费鲁丝| 亚洲国产成人一精品久久久| 国产有黄有色有爽视频| 精品午夜福利在线看| 欧美日韩国产mv在线观看视频 | 2022亚洲国产成人精品| 黑人高潮一二区| 插阴视频在线观看视频| 国产色婷婷99| 日产精品乱码卡一卡2卡三| 在线 av 中文字幕| 日韩一区二区视频免费看| 在线观看一区二区三区| 亚洲人成网站在线播| 亚洲天堂av无毛| 国产深夜福利视频在线观看| 九九久久精品国产亚洲av麻豆| 丝袜喷水一区| 七月丁香在线播放| 中文字幕亚洲精品专区| 亚洲国产精品专区欧美| av黄色大香蕉| 国产成人91sexporn| av在线app专区| 亚洲怡红院男人天堂| 国产亚洲av片在线观看秒播厂| 亚洲国产av新网站| 亚洲av在线观看美女高潮| 国产一区二区在线观看日韩| 日日啪夜夜爽| 国产精品秋霞免费鲁丝片| 国产精品久久久久久久久免| 成人黄色视频免费在线看| 男人狂女人下面高潮的视频| 国产 一区精品| 欧美 日韩 精品 国产| 国产一区二区三区av在线| 青春草国产在线视频| 两个人的视频大全免费| 美女高潮的动态| 国产黄色免费在线视频| 97精品久久久久久久久久精品| 成人毛片60女人毛片免费| 国产精品熟女久久久久浪| 国产人妻一区二区三区在| 99热这里只有是精品在线观看| 人人妻人人澡人人爽人人夜夜| 国产精品人妻久久久影院| 最近2019中文字幕mv第一页| 人妻制服诱惑在线中文字幕| 国产男人的电影天堂91| 亚洲精品456在线播放app| 日本黄大片高清| 国产精品女同一区二区软件| 99热这里只有精品一区| 亚洲av中文av极速乱| 18禁在线无遮挡免费观看视频| 久久这里有精品视频免费| 精品一区二区免费观看| 高清在线视频一区二区三区| av免费在线看不卡| 成年女人在线观看亚洲视频| 国产高清国产精品国产三级 | 日本午夜av视频| 丝袜脚勾引网站| 国产精品久久久久久久电影| 简卡轻食公司| 2022亚洲国产成人精品| 国产视频内射| 国产极品天堂在线| 99热这里只有精品一区| 久久久成人免费电影| 97在线人人人人妻| 99热网站在线观看| 小蜜桃在线观看免费完整版高清| 激情 狠狠 欧美| 成年女人在线观看亚洲视频| 日本猛色少妇xxxxx猛交久久| 人人妻人人爽人人添夜夜欢视频 | 黄色日韩在线| 欧美精品国产亚洲| 蜜桃亚洲精品一区二区三区| 精品久久久久久久久亚洲| 亚洲精品456在线播放app| 少妇人妻久久综合中文| 特大巨黑吊av在线直播| 草草在线视频免费看| 亚洲人与动物交配视频| 看非洲黑人一级黄片| 纯流量卡能插随身wifi吗| a级毛色黄片| 永久网站在线| 男人狂女人下面高潮的视频| 久久久久视频综合| 麻豆成人av视频| 欧美xxxx黑人xx丫x性爽| 午夜福利网站1000一区二区三区| 91精品国产九色| 亚洲自偷自拍三级| 久久精品国产亚洲av涩爱| 欧美日韩国产mv在线观看视频 | 51国产日韩欧美| 欧美精品一区二区免费开放| 国产大屁股一区二区在线视频| 噜噜噜噜噜久久久久久91| 欧美最新免费一区二区三区| 久久久久国产精品人妻一区二区| 26uuu在线亚洲综合色| 中文字幕久久专区| 一区二区三区四区激情视频| 永久免费av网站大全| 晚上一个人看的免费电影| 七月丁香在线播放| 国产成人一区二区在线| 少妇猛男粗大的猛烈进出视频| 人妻夜夜爽99麻豆av| 香蕉精品网在线| 国产亚洲91精品色在线| 人妻制服诱惑在线中文字幕| 亚洲欧美中文字幕日韩二区| 久久久久精品久久久久真实原创| 99久久精品一区二区三区| 免费观看性生交大片5| av.在线天堂| 免费看av在线观看网站| 亚洲一级一片aⅴ在线观看| 久久av网站| 一级毛片电影观看| 久久国产精品大桥未久av | 51国产日韩欧美| 视频区图区小说| 国产色爽女视频免费观看| 成人漫画全彩无遮挡| 女人久久www免费人成看片| 一区二区三区免费毛片| 欧美亚洲 丝袜 人妻 在线| 如何舔出高潮| 午夜激情久久久久久久| 久久av网站| av在线播放精品| av网站免费在线观看视频| 青春草国产在线视频| 亚洲成人中文字幕在线播放| 精品视频人人做人人爽| 国产精品一区二区在线不卡| 蜜桃在线观看..| 国产免费视频播放在线视频| 国产高清不卡午夜福利| 久久人人爽人人片av| 黄片无遮挡物在线观看| 黄色欧美视频在线观看| 久久久久人妻精品一区果冻| 你懂的网址亚洲精品在线观看| 亚洲国产精品成人久久小说| 26uuu在线亚洲综合色| 99热这里只有是精品50| 国产精品欧美亚洲77777| 免费av不卡在线播放| 国产精品嫩草影院av在线观看| 欧美精品一区二区大全| 91精品国产九色| 国产真实伦视频高清在线观看| 国产成人精品一,二区| 国产亚洲最大av| 日日摸夜夜添夜夜添av毛片| 最近手机中文字幕大全| 日韩av在线免费看完整版不卡| 极品少妇高潮喷水抽搐| 一级片'在线观看视频| 蜜桃在线观看..| 亚洲四区av| 亚洲av中文av极速乱| 观看免费一级毛片| 国产精品欧美亚洲77777| 亚洲,欧美,日韩| 久久青草综合色| 日本-黄色视频高清免费观看| 亚洲人与动物交配视频| 3wmmmm亚洲av在线观看| 黄色欧美视频在线观看| 多毛熟女@视频| 国产在线免费精品| 成人无遮挡网站| 亚洲精品视频女| 色视频www国产| xxx大片免费视频| 熟女av电影| 男人爽女人下面视频在线观看| 日日啪夜夜撸| 夜夜爽夜夜爽视频| 青春草亚洲视频在线观看| av在线蜜桃| 一级黄片播放器| 国产男人的电影天堂91| 亚洲av中文字字幕乱码综合| 一二三四中文在线观看免费高清| 91午夜精品亚洲一区二区三区| 精品99又大又爽又粗少妇毛片| 国产精品一及| 日韩在线高清观看一区二区三区| 男女国产视频网站| 伦理电影大哥的女人| 国产人妻一区二区三区在| 日本与韩国留学比较|