亚洲成人一区在线观看_天堂网www_国产精品久久9_中文在线播放_伊人天天_久久精品久久久精品美女

當前位置:首頁 > 網站舊欄目 > 學習園地 > 設計軟件教程 > Dmd編譯器學習筆記

Dmd編譯器學習筆記
2010-01-13 22:54:03  作者:  來源:
Dmd編譯器學習筆記

英文原文在這里:
http://digitalmars.com/d/dcompiler.html
在這里有一篇翻譯文章:
http://sofire.javaeye.com/blog/111667
不過,主要是關于windows的;我更關心Linux下的使用。
順便看看兩者有啥區別。

相關文件
注意:

Linux的dmd配置文件是dmd.conf
Windows的配置文件是sc.ini


  • /dmd/bin/dmd     D 編譯器的可執行文件
     
  • /dmd/bin/dumpobj     Elf file dumper
     
  • /dmd/bin/obj2asm     Elf文件反匯編器
     
  • /dmd/bin/dmd.conf     全局配置文件(復制到 /etc/dmd.conf)
     
  • /dmd/lib/libphobos.a     D運行庫(復制到 /usr/lib/libphobos.a)
     


DMD的安裝
[list=1]
  • 下載dmd程序:http://ftp.digitalmars.com/dmd.zip,解壓到~/dmd目錄
  • 復制dmd.conf文件到/etc目錄
    Java代碼 復制代碼
    1. cp ~/dmd/bin/dmd.conf /etc  
  • 給下面的文件添加執行權限
    Java代碼 復制代碼
    1. chmod u+x ~/dmd/bin/{dmd,dumpobj,obj2asm,rdmd}  
  • 把~/dmd/bin添加到PATH環境變量;或者把它們復制到/usr/local/bin目錄下(不要只復制可執行程序)
  • 復制庫文件到/usr/lib目錄
    Java代碼 復制代碼
    1. cp ~/dmd/lib/libphobos.a /usr/lib  

    [/list]

    以上安裝過程比較簡單,只有PATH環境變量設置正確了,就應該沒有什么問題

    編譯參數和開關
    命令的格式:
    Java代碼 復制代碼
    1. dmd   files...  -switches...   

    [Windows]支持以下類型的文件:
    Java代碼 復制代碼
    1. Extension      File Type     
    2. none           D source files     
    3. .d             D source files     
    4. .di            D interface files     
    5. .obj           Object files to link in     
    6. .lib           Object code libraries to search     
    7. .exe           Name output executable file     
    8. .def           module definition file     
    9. .res           resource file    

    [Linux]支持以下類型的文件:
    Java代碼 復制代碼
    1. Extension      File Type   
    2. none           D source files   
    3. .d             D source files   
    4. .di            D interface files   
    5. .o             Object files to link in   
    6. .a             Library files to link in  

    好像不支持.so文件--這一點不肯定

    編譯開關之一
    Java代碼 復制代碼
    1. -debug   
    2.     編譯調試代碼   
    3.   
    4. -debug=level   
    5.     編譯調試代碼:code <= level   
    6.   
    7. -debug=ident   
    8.     編譯調試代碼:標識符為ident   
    9.   
    10. -version=level   
    11.     生成版本代碼:>=level   
    12.   
    13. -version=ident   
    14.     生成版本代碼:==ident   
    15.        
    16. -unittest   
    17.     編譯單元測試代碼(還有斷言)   
    18.   
    19. -cov   
    20.     添加覆蓋率分析指令;運行程序后,會生成.lst文件   
    21.   
    22. -release   
    23.     生成發行版本;會去掉契約和斷言等信息  


    -debug / -version
    debug、version的使用方法很相似
    Java代碼 復制代碼
    1. //debug.d   
    2. import std.stdio;   
    3.   
    4. void main()   
    5. {   
    6.     debug    { writefln("debug"); }   
    7.     debug(1) { writefln("debug(1)"); }   
    8.     debug(2) { writefln("debug(2)"); }   
    9.   
    10.     debug(ERROR) { writefln("debug(ERROR)"); }   
    11.     debug(WARN)  { writefln("debug(WARN)"); }   
    12.   
    13.     version(HOME)      { writefln("version(HOME)"); }   
    14.     version(BUSINESS)  { writefln("version(BUSINESS)"); }   
    15.   
    16.     version(WINDOWS) {} else { writefln("version(!WINDOWS)"); }   
    17. }  

    編譯并運行之:
    Java代碼 復制代碼
    1. # dmd -debug -run debug.d   
    2. debug   
    3. debug(1)   
    4. version(!WINDOWS)   
    5.   
    6. # dmd -debug=1 -run debug.d   
    7. debug   
    8. debug(1)   
    9. version(!WINDOWS)   
    10.   
    11. # dmd -debug=2 -run debug.d   
    12. debug   
    13. debug(1)   
    14. debug(2)   
    15. version(!WINDOWS)   
    16.   
    17. # dmd -debug=ERROR -run debug.d   
    18. debug(ERROR)   
    19. version(!WINDOWS)   
    20.   
    21. # dmd -debug=WARN -run debug.d   
    22. debug(WARN)   
    23. version(!WINDOWS)   
    24.   
    25. # dmd -version=HOME -run debug.d   
    26. version(HOME)   
    27. version(!WINDOWS)   
    28.   
    29. # dmd -version=BUSINESS -version=WINDOWS -run debug.d   
    30. version(BUSINESS)  


    -unittest
    Java代碼 復制代碼
    1. //unittest.d   
    2. import std.stdio;   
    3.   
    4. class A   
    5. {   
    6.     int i;   
    7.     this(int v) {   
    8.         i = v;   
    9.     }      
    10.   
    11.     unittest {   
    12.         A a = new A(1);   
    13.         assert(a.i == 1);    
    14.         assert(a.i != 0);    
    15.     }      
    16. }   
    17.   
    18. int add(int a, int b)   
    19. {   
    20.     return a - b;   
    21.     // 這里沒有unittest   
    22. }   
    23.   
    24. void main()   
    25. {   
    26.     // 這里沒有unittest   
    27. }   
    28.   
    29. unittest {   
    30.     assert(add(12) == 3);    
    31. }  

    先正常編譯,沒有語法錯誤:
    Java代碼 復制代碼
    1. # dmd -run unittest.d  

    再編譯單元測試代碼
    Java代碼 復制代碼
    1. # dmd -unittest -run unittest.d    
    2. Error: AssertError Failure unittest(30)  

    30行有錯誤?add函數寫錯了:(

    -cov
    看看覆蓋率分析選項:
    Java代碼 復制代碼
    1. //cov.d   
    2. import std.stdio;   
    3.   
    4. void main()   
    5. {   
    6.     for (int i; i < 2; i++)   
    7.     {   
    8.         if (i < 5)   
    9.             writefln("i < 5");   
    10.         else  
    11.             writefln("i >= 5");   
    12.     }   
    13. }  

    編譯并運行:
    Java代碼 復制代碼
    1. # dmd -cov -run cov.d   
    2. i < 5  
    3. i < 5  

    得到覆蓋率分析文件:cov.lst:(注意:編譯完并不會有這個文件;運行程序后才會生成)
    Java代碼 復制代碼
    1.        |//cov.d   
    2.        |import std.stdio;   
    3.        |   
    4.        |void main()   
    5.        |{   
    6.       6|    for (int i; i < 2; i++)   
    7.        |    {   
    8.       2|        if (i < 5)   
    9.       2|            writefln("i < 5");   
    10.        |        else  
    11. 0000000|            writefln("i >= 5");   
    12.        |    }   
    13.        |}   
    14. cov.d is 75% covered  

    第6行運行了6次--自己算算是不是;
    第11行運行了0次--搜索000000字符串,就能輕松找到沒有覆蓋到地方;
    更多詳情參考:http://digitalmars.com/d/code_coverage.html

    -release
    用法很簡單,不舉例了

    編譯開關之二
    Java代碼 復制代碼
    1. -D   
    2.     生成文檔   
    3.   
    4. -Dddocdir   
    5.     把文檔生成到docdir目錄;注意是 -Dd   
    6.        
    7. -Dffilename   
    8.     指定文檔的文件名;  

    編譯命令很簡單:
    Java代碼 復制代碼
    1. dmd -D debug.d  

    關于文檔的更多信息參考:http://sofire.javaeye.com/blog/111881

    編譯開關之三
    Java代碼 復制代碼
    1. -H   
    2.     生成.di接口文件   
    3.   
    4. -Hddir   
    5.     把接口文件生成到dir目錄;注意是 -Hd   
    6.   
    7. -Hffilename   
    8.     指定接口文件名;注意是 -Hf  

    關于接口,看一段翻譯:
    當處理源文件中的import聲明時,編譯器會搜索import對應的源文件,從中提取出需要的信息。
    編譯器同時也會搜索D接口文件,D接口文件中只包含模塊中需要導入的內容,而不是整個模塊。
    使用D接口文件的好處是:

      D接口文件更小,和D源文件相比處理起來更快。
      可以隱藏源代碼。比如以接口文件和object庫的方式提供源程序,而不是提供全部源代碼。

    D接口文件可以在編譯D源文件時用-H開關創建,D接口文件的后綴是.di。
    當編譯器分解import聲明時,搜索尋找.di形式的D接口文件,再尋找D源文件。
    D接口文件有點和C++頭文件相似,但這不是必需的,它不屬于D語言,只是編譯器的一個功能,只是用來優化程序的構建。

    dmd -H生成的接口文件包括了源代碼;只是去掉了注釋,斷言等信息;具體怎么回事,待弄明白了再來改這里(TODO)



    編譯開關之四
    Java代碼 復制代碼
    1. -c   
    2.     只編譯,不鏈接;簡單點說就是只生成.o文件,不生成可執行文件   
    3.   
    4. -Ipath   
    5.     指定import路徑;多個路徑之間用分號(;)分割;允許有多個-I,并按照-I指定的路徑順序進行搜索   
    6.   
    7. -Jpath   
    8.     指定D源程序中import表達式的搜索路徑;多個路徑之間用分號(;)分割;   
    9.     允許有多個-J,并按照-J指定的路徑順序進行搜索   
    10.   
    11. -Llinkerflag   
    12.      把linkerflag傳遞給連接程序(linker),比如: -L-L/usr/lib   
    13.   
    14. -o-   
    15.     不生成.o文件,一般和-H、-D一起使用   
    16.   
    17. -offilename   
    18.     指定輸出文件名;可以是可執行程序,也可以是其他文件;注意是:-of   
    19.   
    20. -odobjdir   
    21.     把.o文件生成到objdir目錄;默認是生成到當前目錄;注意是:-od   
    22.   
    23. -op   
    24.     默認生成的object文件(.o)會在當前目錄;添加-op參數則會生成到源文件所在目錄  


    -c
    Java代碼 復制代碼
    1. dmd debug.d     # 生成debug可執行文件   
    2. dmd -c debug.d  # 生成debug.o文件  

    dmd編譯器默認是編譯成.o文件后,再和其他庫連接成可執行文件;
    某些情況下不需要編譯成可執行文件,比如沒有main函數--也編譯不成
    這時就可以只編譯成.o文件

    bud等程序build工具,可以自動判斷文件是否有main函數,并生成相應的文件;
    但dmd編譯器不是這樣的;所以,熟悉了dmd編譯器后,可以只使用bud等工具來編譯程序

    -I / -J
    Java代碼 復制代碼
    1. import std.stdio;               // -I   
    2. void main()   
    3. {   
    4.     auto b = import("x.d");     // -J   
    5. }  


    自己體會它們的用途吧:)
    注意:如果在搜索路徑下有同名文件的話,可能出現奇怪的問題;避免出現這種情況,或者改變參數的順序

    -Llinkerflag
    一般是-L-L 和 -L-l參數,指定lib路徑和庫文件
    比如:-L-L/usr/local/lib  -L-lsqlite3
    對linker不熟悉,回頭在詳細寫這塊

    -o-
    如果只想生成文檔,連.o文件都不想要;則-o- 就是你想要的了

    -offilename
    默認情況下,是根據源文件名來確定后續文件的文件名;
    比如foo.d 會生成 foo.ofoo 文件;
    通過-of參數可以改變輸出文件的名字:
    dmd -ofbar.exe foo.d

    它不會自動添加后綴:
    dmd -c -ofbar foo.d
    生成文件是 bar,而不是bar.o,這可能不是你想要的

    -odobjdir -op
    .o文件默認生成在當前目錄下;
    -od 是指定生成目錄,-od.和默認相同
    -op 是把.o生成到源文件所在目錄
    具體生成到什么目錄下,就看自己的愛好了;
    喜歡干凈,就用-od吧;對了,-run參數能生成更干凈的代碼;)

    編譯開關之五
    Java代碼 復制代碼
    1. -O   
    2.     優化生成的代碼,使程序運行得更快   
    3.   
    4. -g   
    5.     添加調試信息   
    6.   
    7. -gc   
    8.     添加C風格的調試信息(為舊的gdb)   
    9.   
    10. -inline   
    11.     用內聯函數的方式進行優化;相當于C的inline   
    12.   
    13. -fPIC   
    14.     生成位置無關代碼   
    15.   
    16. -d   
    17.     允許廢棄的特征   
    18.   
    19. -profile   
    20.     profile the runtime performance of the generated code    
    21.     參見:http://www.digitalmars.com/ctg/trace.html  


    這幾個參數,要么很簡單,要么不懂含義;也懶得去研究具體的意思了。
    其中的-g參數涉及到使用調試器;我喜歡用writefln調試;唉,回頭再研究吧。


    編譯開關之六
    Java代碼 復制代碼
    1. --help   
    2.     打印幫助   
    3.   
    4. -quiet   
    5.     安靜模式,不輸出無關緊要的信息   
    6.   
    7. -v   
    8.     顯示編譯細節   
    9.   
    10. -w   
    11.     顯示編譯警告  


    編譯開關之七
    Java代碼 復制代碼
    1. -run srcfile args...   
    2.     編譯,鏈接,然后運行程序srcfile;args...(到命令行結束)都是程序的參數;   
    3.     它不會保留.o和可執行程序(No .o or executable file is left behind)  


    文章開始就有怎么使用的例子
    需要注意的是參數的順序,因為很多寫法都是錯誤的,正確的是:
    Java代碼 復制代碼
    1. dmd 相關文件 編譯開關 -run 含main的源文件 程序參數1 程序參數2  

    各種參數放在-run前面,然后是含有main的源程序,再后面的內容會全部傳遞給運行程序,作為參數

    鏈接Linking
    在dmd編譯成功后,它會再調用連接程序;用-c參數可以不進行連接
    連接的實際處理程序其實是gcc;這樣能保證和gcc編譯的模塊兼容


    環境變量
    CC
    默認是用gcc進行連接,可以通過設置CC環境變量,使用其他連接器

    DFLAGS
    The value of DFLAGS is treated as if it were appended to the command line to dmd.
    沒有弄明白它是怎么回事;(

    dmd.conf初始化文件
    dmd會按照下面的目錄順序查找
    1. 當前工作目錄
    2. 環境變量HOME指定的目錄
    3. dmd命令所在目錄,即bin目錄
    4. /etc目錄


    dmd.conf的內容看起來像這樣:
    Java代碼 復制代碼
    1. ; dmd.conf 是dmd的配置文件   
    2. ; 分號是注釋符號   
    3. ; %%包含的名字會用相應的環境變量替換   
    4. ; %@P%會被本文件的路徑替換,即dmd.conf文件所在路徑   
    5. [Environment]   
    6. DFLAGS="-I%@P%/../src/phobos"  
    7. DDOCFILE=candydoc/proj.ddoc  


    格式是 NAME=value;NAME即使是小寫,也會被處理成大寫;
    里面的DFLAGS的值會覆蓋環境變量指定的值

    和Windows版本的區別
    • 字符串文章量是只讀的;對它寫會導致段錯誤
    • 配置文件是dmd.conf,而不是sc.ini
    • Windows有一個@cmdfile開關
    • Windows有一個-nofloat開關
    • 環境變量上有些不一樣


    總結:
    和gcc比起來,參數少多了 ;)
    雖然可以用bud進行編譯,但理解dmd還是必要的。
    反正也不復雜,花點時間學習一下還算值得。
     

安徽新華電腦學校專業職業規劃師為你提供更多幫助【在線咨詢
相關熱詞搜索:編譯器 筆記 學習
主站蜘蛛池模板: 亚洲欧美日韩国产综合 | 亚洲精品99| 国产高清在线精品一区二区三区 | 亚洲免费观看视频 | 日本成人中文字幕在线观看 | 在线看av网址 | 天堂综合网久久 | 精品免费国产视频 | 亚洲成人免费在线 | 青青久久 | 日本手机在线视频 | 日本中文字幕电影 | 亚洲精品久久久久国产 | 特黄特色大片免费视频观看 | 欧美一区二区在线免费观看 | 三级网站在线播放 | 亚洲一区二区三区精品视频 | a中文在线视频 | 亚洲精品乱码久久久久久久久 | 欧美视频免费看 | 亚洲成人一区 | 亚洲www啪成人一区二区 | 黄色av网站在线免费观看 | av国产精品| www免费网站在线观看 | 国产欧美精品一区二区 | 欧美一级二级三级视频 | 中文字幕av一区二区 | 国产精品久久久久久久久 | 久久99国产精品免费网站 | 久久亚洲精品裙底抄底 | 国产成人久久精品一区二区三区 | 日韩精品一区二 | 国产区91 | 国产精彩视频 | 97在线视频免费 | 亚洲欧美高清 | 日本三级做a全过程在线观看 | 黄色高清视频在线观看 | 精品成人免费一区二区在线播放 | 日韩福利 | 亚洲一区精品在线 | 国产精品久久久久久久久 | 中文字幕日韩久久 | 三级在线观看 | 日韩综合 | av不卡在线播放 | 亚洲午夜精品一区二区三区他趣 | 久色视频在线观看 | 欧洲亚洲精品久久久久 | 自拍一区视频 | 99久久精品免费看国产四区 | 免费成人在线网站 | 黑人巨大精品欧美一区免费视频 | 在线成人免费 | 色综合中文 | 久久欧美视频 | 久久国产欧美日韩精品 | 亚洲色图综合 | 一区二区不卡 | 日韩城人网站 | 免费网站看v片在线a | 91一区二区三区 | 91精品中文字幕一区二区三区 | 国产亚洲女人久久久久毛片 | 九九免费在线观看 | 久久青青视频 | 亚洲国产欧美一区二区三区久久 | 在线视频中文字幕 | 国产精品一区二区免费 | 日本国产一区二区 | 国产乱码精品一区二区三区忘忧草 | 久久青青 | 亚洲啊v | 黄色资源在线观看 | 午夜寂寞少妇aaa片毛片 | 狠狠做深爱婷婷综合一区 | 国产在线网站 | 福利视频三区 | 亚洲欧美一区二区三区在线 | 天天操夜夜操免费视频 | 日本免费网 | 国产精品福利在线观看 | 日韩在线中文字幕 | 久久精品| 欧美精品成人一区二区三区四区 | 久久国产精品久久久久久电车 | 亚洲精品在线看 | 毛片在线看片 | 6080夜射猫 | 亚洲欧洲中文日韩 | 欧美午夜电影 | 欧美激情在线播放 | 麻豆精品一区二区 | 日本三级电影免费 | 免费毛片一区二区三区久久久 | 亚洲成人免费在线观看 | 日韩一区二区三区在线观看 | 国产一级特黄aaa | 在线观看国产高清视频 | 日本一区二区不卡 | 午夜视频网 | 亚洲jizzjizz日本少妇 | 亚洲v欧美| 午夜精品久久久久久久久久久久 | 亚洲欧洲精品一区二区 | 国产精品久久综合 | 国产激情视频在线观看 | 成人激情视频在线观看 | 国产无套丰满白嫩对白 | 亚洲精品视频在线观看免费 | 欧美a级成人淫片免费看 | 女人毛片a毛片久久人人 | 欧美黄色一区二区 | 国产干干干| 中文字幕一区二区三区免费视频 | 奇米影视奇米色777欧美 | 亚洲一区不卡 | 国产黄色在线观看 | 亚洲国产精品久久久久 | 成人在线黄色 | 国产中文在线 | 久久精品国产99精品国产亚洲性色 | 欧美日本国产一区 | 国产区视频在线观看 | 精品久久久久久国产 | 久久99精品久久久久婷婷暖91 | 黄色一级片在线看 | 狠狠操麻豆 | 天堂网av2020| 四色成人av永久网址 | 精品国产一区二区三区性色av | 99久久久精品 | 在线观看免费成人av | 国产二区视频 | 日韩在线1| 美女黄网 | 国产精品久久久久久久久久久久久 | 成人免费网站 | 毛片一区| 最新黄色网址在线播放 | 97成人在线 | 永久黄网站色视频免费 | 精品成人佐山爱一区二区 | 一区二区三区视频在线免费观看 | 久久精品一级 | 亚洲成人二区 | 久久久久久这里只有精品 | 国产福利精品一区 | www.久久久久久久久久久久 | 亚洲精品成人无限看 | 成人欧美日韩一区二区三区 | 精品久久久久久久久久久久久久 | 中文字幕乱码一区二区三区 | 欧美成年黄网站色视频 | 国产成人久久精品一区二区三区 | 色综合天天综合网国产成人网 | av国产精品 | 国产成人综合一区二区三区 | 国产一区二区免费 | se在线播放 | 亚洲国产精品一区二区第一页 | 国产一级一级国产 | 欧美精品一区二区三区免费视频 | 精品一区二区三区不卡 | 成人亚洲一区二区 | 亚洲另类视频 | 性视频网站免费 | www伊人 | 久久国内精品 | 亚洲精品电影网在线观看 | 亚洲福利精品 | 欧美高清一区 | 超碰在线91 | 亚洲精品乱码久久久久久麻豆不卡 | 99久久久国产精品美女 | 亚洲免费网 | 免费日本视频 | 欲色av | 亚洲国产精品一区 | 国产成人精品一区二区三区网站观看 | www.色.com | 国产精品久久久久久久久久久久冷 | 免费日本视频 | 大桥未久亚洲精品久久久强制中出 | 婷婷亚洲综合 | 天堂va在线高清一区 | 国产大胆自拍 | 日本天堂在线播放 | 日韩在线免费 | av在线中文 | 精品国精品国产自在久不卡 | 日韩欧美一级精品久久 | 日本久久久久久 | 后进极品白嫩翘臀在线视频 | 欧美精品1区2区3区 免费亚洲婷婷 | 国产成人精品亚洲777人妖 | 91麻豆精品国产91久久久久 | 永久免费网站 | 国产一区二区精品丝袜 | av免费网站在线观看 | 久久精品小视频 | 黄色网在线 | 午夜激情视频免费 | 国产一区二区精品 | 久久久久国 | 日韩成人免费中文字幕 | 日韩城人网站 | 亚洲影视一区二区 | 日本精品一区二区三区在线观看 | 成人免费视频观看视频 | 成人在线一区二区三区 | 婷婷色av| 欧美视频网站 | 国产精品久久久久久久久久三级 | 国产午夜久久 | 亚洲欧美激情在线 | 四虎永久免费影视 | 97久久久国产精品 | 精品国产一区二区三区久久久蜜 | 福利视频网站 | 久久视频一区 | 国产精品成人在线观看 | 国产日韩欧美一二三区 | 国产成人av电影 | 欧美精品自拍 | 亚洲在线一区二区 | 99国产精品久久久久久久 | xx视频在线观看 | 免费精品视频 | 亚洲九九九 | 国产高清精品在线 | 久久精选视频 | 天天夜夜操| 精品福利在线视频 | 免费国产黄 | 91精品国产欧美一区二区成人 | 久草.com | 真人女人一级毛片免费播放 | 成人免费一区二区三区视频网站 | 99久久婷婷国产综合精品电影 | 欧美第5页 | 麻豆产精国品免费入口 | 亚洲天堂久久 | av在线一区二区三区 | 国产青青草| 欧美综合国产 | 九九综合九九综合 | 国产精选一区二区三区不卡催乳 | 日韩一区二区黄色片 | 日韩手机在线 | 久久久久久一区二区 | 欧美第一页 | 中文字幕在线永久在线视频 | 欧美日韩一级视频 | 日本视频二区 | 久久91| 亚洲欧美综合 | baoyu123成人免费看视频 | 成人男女激情免费视频 | 九一视频在线播放 | 国产精品视频 | 欧美一区二区三区精品免费 | 美女天堂网| 久久久久久久99 | 精品一二三区在线观看 | 一区二区av | 成人 在线 | 午夜剧| 久久人人爽人人爽人人片av高清 | 91捆绑91紧缚调教91 | 日韩一级电影在线 | 精品国产乱码久久久久久影片 | 欧美日韩精品一区 | 最近韩国日本免费观看mv免费版 | 性高湖久久久久久久久 | 亚洲男人天堂2024 | 久久久国产视频 | 欧美日韩一区二区三区在线观看 | 黄色免费高清视频 | 999精品网| 久久精品一 | 午夜国产在线 | 午夜视频在线播放 | 一级黄色影片在线观看 | 成人av免费在线观看 | 国产xxxx成人精品免费视频频 | 久久久国产精品入口麻豆 | 亚洲综合色视频在线观看 | 国产精品久久久久久久久久久久久久 | 天天干狠狠干 | 午夜激情福利视频 | 免费在线成人 | 午夜精品一区二区三区在线视频 | 欧美久久久久久久久久伊人 | 日韩欧美黄色 | 亚洲这里只有精品 | 欧州一区二区三区 | 明里在线观看 | 亚洲成人二区 | 夜添久久精品亚洲国产精品 | 日韩一区二区三区在线视频 | 亚洲高清视频网站 | 日本另类αv欧美另类aⅴ | 国产伦精品一区二区三毛 | 久久精品网| 亚洲成人中文字幕 | 亚洲人成在线播放 | 午夜视频网 | 夜夜爽99久久国产综合精品女不卡 | 国产精品久久久久久久久久久久久久 | 亚洲一区久久 | 成人a视频 | 91视频免费看 | 在线亚洲一区二区 | 久久精品在线观看视频 | 免费v片 | 色接久久 | 欧洲一区二区在线观看 | 欧美一区二区三区精品 | 日本韩国欧美一区 | 69日影院 | 久久极品 | 国内外成人在线视频 | 99久久夜色精品国产网站 | 日韩视频免费 | 日韩在线欧美 | 97视频在线 | 操操操日日日 | 亚洲www啪成人一区二区 | 国产成人精品在线 | 羞羞羞网站| 91久久久久 | 日韩中文一区二区三区 | 久在线| 久久九九国产 | 欧美精品二区中文乱码字幕高清 | 一区在线视频观看 | 久久久国产视频 | 日韩精品中文字幕在线播放 | 亚洲免费精品网站 | 欧美精品一级二级 | 一区二区三区精品 | 亚洲性视频网站 | aaaa大片| 自拍偷拍视频网站 | 欧美午夜三级视频 | 成人小视频在线播放 | 亚洲最大成人 | 日韩高清一区二区 | 一级黄色片欧美 | 黄色大片免费网站 | 精品伦精品一区二区三区视频 | 99青青草 | 一级在线看 | 国产一级免费 | 欧美一区永久视频免费观看 | 日韩在线成人 | 久久精视频 | 久久亚洲精品中文字幕 | 久久精品a一级国产免视看成人 | 91资源在线 | 久久精视频 | 国产免费av网站 | 亚洲欧美一区二区三区在线 | 国产精品高颜值在线观看 | 国产精品视频播放 | av网站观看 | 亚洲一区二区三区免费视频 | 国内成人免费视频 | 亚洲国产精品99久久久久久久久 | 国产精品久久久久久久久久 | 国产精品九九九 | 国产精品一二三 | 少妇性l交大片免费一 | 成人午夜精品久久久久久久3d | 91中文字幕| 亚洲一区在线观看视频 | 国产一区二区免费视频 | 精品亚洲一区二区三区 | 久久精品国产一区二区三区不卡 | 久久久精品网站 | av在线免费观看网站 | 久久精品网| 天天影视综合 | 国产在线精品一区二区 | 欧美久久久久久久久久久 | 久久99热精品免费观看牛牛 | 欧美成人高清视频 | 在线欧美日韩 | 日本在线视频一区二区 | 国产精品美女久久久久aⅴ国产馆 | 成人激情在线 | 日韩一区二区福利视频 | 高清国产午夜精品久久久久久 | 亚洲高清久久 | 亚洲情综合五月天 | 中文日韩在线 | 亚洲国产精品成人无久久精品 | 久久久精品一区 | 黄色在线观看网址 | 综合一区二区三区 | 日韩一级免费观看 | 国产精品一二 | 欧美日韩一区二区视频在线观看 | 亚洲精品毛片一区二区 | 欧美精品久久久久久久久久丰满 | 日韩大尺度电影在线观看 | 亚洲国产精品自拍 | 国产高清一区 | 久久精品中文字幕 | 久久久高清 | 国产毛片一区二区 | 日韩在线短视频 | 久久精品亚洲精品国产欧美kt∨ | 亚洲精品一区二区在线观看 | 久久久久国产一区二区三区 | 久久精品亚洲精品 | 视频精品一区 | 久久精品综合 | 一区二区三区国产 | 九九热这里都是精品 | 久久在线| 国产精品欧美一区二区三区 | 中文字幕一区二区三区乱码图片 | 成人黄色电影在线观看 | 91免费在线视频 | 久久不卡日韩美女 | 一区二区三区在线视频播放 | av在线免费观看一区二区 | 欧美日韩国产一区二区三区 | 日韩欧美国产精品 | 91亚洲精品乱码久久久久久蜜桃 | 在线观看中文字幕 | 日本精品一区二区三区视频 | av手机在线播放 | 亚洲一区丝袜 | 中文字幕一区二区三区不卡 | 看羞羞视频免费 | 久久久91精品国产一区二区三区 | 国产一区二区三区在线 | 国产免费黄色 | 7777av| 国产福利网站 | 国产日韩视频在线观看 | 伊人精品影院 | 男人的天堂视频网站 | 日韩国产一区二区三区 | 国产成人欧美一区二区三区的 | 国产精品久久久久久久久晋中 | 日本在线观看视频一区 | 精品一区二区三区免费 | 国产精品免费观看 | 一级黄色片美国 | 国产一在线 | 国产在线视频xxx | 欧美成人h版在线观看 | 日韩视频在线免费观看 | 久久精品一区二区三区四区 | 99精品国产高清在线观看 | 日韩在线视频在线观看 | 一区视频在线 | 午夜电影网址 | 久久99精品国产自在现线 | 亚洲卡一 | 精品二区 | 久久久婷 | 国产精品久久久久久吹潮 | 国产精品三级久久久久久电影 | 品久久久久久久久久96高清 | 北条麻妃国产九九九精品小说 | 丁香婷婷久久久综合精品国产 | 亚洲成a人v欧美综合天堂麻豆 | 亚洲在线观看免费视频 | 亚洲中午字幕 | 国产精品乱码一区二区三区 | 欧美精品欧美精品系列 | 黄色a在线观看 | 亚洲国产婷婷香蕉久久久久久99 | 韩日一区二区 | 国产成人在线播放 | 在线中文字幕av | 成人午夜影院 | 欧美色视频在线观看 | 中文字幕免费中文 | 97人人做人人人难人人做 | 欧美一区二区三区视频 | 奇米二区 | 99久久精品免费看国产一区二区三区 | 国产九九九 | 美日韩精品| 亚洲精品一区在线观看 | 乱人伦xxxx国语对白 | 自拍偷拍专区 | 狠狠色狠狠色合久久伊人 | 亚洲精品视频在线播放 | 国产精品午夜电影 | 中文字幕亚洲精品 | 亚洲视频一区二区三区四区 | 四虎影院最新网站 | 亚洲成人精品一区 | 亚洲天天干| 99久久久99久久国产片鸭王 | 欧美一区二区在线播放 | 国产一区二区影院 | 在线成人av | 亚洲精品在线视频 | 一区二区三区在线播放 | 亚洲www永久成人夜色 | 日韩毛片在线视频 | yiren22综合网成人 | 99视频精品 | 亚洲国产成人av好男人在线观看 | 日韩天堂| 全毛片| 亚洲蜜臀av乱码久久精品蜜桃 | 一区二区成人 | 国产精品天天干 | 欧美激情精品久久久久久 | 日韩免费一区 | 亚洲免费人成在线视频观看 | 国产黄色在线观看 | 午夜小电影 | 中文字幕一区二区三区四区不卡 | 久久久久亚洲一区二区三区 | 亚洲国产精品久久久久久久 | 国产高清一二三区 | 亚洲精品久久久久久一区二区 | 欧美日韩视频在线第一区 | 91精品欧美久久久久久动漫 | 福利91 | 亚洲欧洲综合 | 国产在线1| 亚洲精品国产偷自在线观看 | 91免费影视 | 欧美激情视频一区二区三区在线播放 | 国产 日韩 一区 | 日本精品视频在线观看 | 成av在线 | 真人女人一级毛片免费播放 | 国产高清一级片 | 日韩欧美在线一区二区 | 日韩av免费在线观看 | 午夜精品一区二区三区在线 | 国产1区| 日本成人在线视频网站 | 欧美a在线看 | 免费视频爱爱太爽了 | 久久艹久久 | 亚洲天堂一区二区 | 中文字幕国产一区 | 国产三级一区二区 | 欧美激情视频一区二区三区在线播放 | 特级淫片裸体免费看 | www.国产精品| 日韩日韩日韩日韩日韩日韩 | 日韩欧美在线观看视频 | 一级毛片av| 亚洲精品在线免费 | 久久精品亚洲精品 | 日韩视频在线免费观看 | 羞羞视频免费观 | 91av免费在线 | 欧美精品成人一区二区三区四区 | 欧美a视频 | 中国黄色在线视频 | 国产91在线播放精品 | 欧美国产日韩视频 | 亚洲精品福利 | 欧美精品一区二区三区视频 | 成人免费网站视频 | www日韩| 国产午夜精品久久 | 精品无人乱码一区二区三区的优势 | 黄色片免费观看 | 精品一区二区三区久久久 | 精品一区二区在线观看 | h亚洲视频 | 男人的天堂在线视频 | 天天看夜夜爽 | 欧美激情第二页 | 九九热在线视频 | 在线视频亚洲 | 久久国产成人 | 色黄视频在线观看 | 中国一级毛片 | 91亚洲在线 | 黑人精品视频 | 99色视频| 日韩精品av一区二区三区 | 高清三区 | 91视频在线| 精品一区二区久久久久久久网站 | 亚洲一区中文字幕在线 | 亚洲一区成人在线 | 欧洲精品视频在线观看 | 久爱国产 | 色吧欧美 | 免费视频爱爱太爽了 | 日韩一区二区在线观看视频 | 日本理伦片午夜理伦片 | 久久国产精品亚洲 | 日韩高清国产一区在线 | 亚洲成人自拍 | 亚洲国产精品成人综合色在线婷婷 | 国产依人 | 丁香久久 | 欧美一区不卡 | 精品在线播放 | 久久99国产一区二区三区 | 免费高潮视频95在线观看网站 | 日韩成人不卡 | 先锋资源中文字幕 | 精品视频在线视频 | 欧洲成人午夜免费大片 |