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

王垠:談編譯器

開發(fā) 開發(fā)工具 后端
在上一篇博文的最后,我提到了 Lisp 編譯器的問題。由于早期的 Lisp 編譯器生成的代碼效率普遍低下,成為了 Lisp 失敗的主要原因之一。而現(xiàn)在的高性能 Lisp 編譯器(比如 Chez Scheme),其實(shí)已經(jīng)可以生成非常高效的代碼,甚至可以匹敵 C 程序的速度。如果你看得到我腦子里的東西,就會明白這完全不是吹牛,對我來說這是科學(xué)的結(jié)論。

上一篇博文的***,我提到了 Lisp 編譯器的問題。由于早期的 Lisp 編譯器生成的代碼效率普遍低下,成為了 Lisp 失敗的主要原因之一。而現(xiàn)在的高性能 Lisp 編譯器(比如 Chez Scheme),其實(shí)已經(jīng)可以生成非常高效的代碼,甚至可以匹敵 C 程序的速度。如果你看得到我腦子里的東西,就會明白這完全不是吹牛,對我來說這是科學(xué)的結(jié)論。我在這里介紹一下我寫 Scheme 編譯器的經(jīng)歷,也許你就會從根本上明白為什么我會這么自信。這里的介紹其實(shí)不止針對函數(shù)式語言,而且針對所有語言的編譯器。

編譯器是一種神秘,有趣,又無聊的的程序。說它神秘,是因?yàn)橹挥蟹浅I俚娜酥廊绾螌懗鰞?yōu)秀的編譯器。這些會寫編譯器的人,就像身懷絕技的武林高手一樣神出鬼沒。說它有趣,是因?yàn)榫幾g器的技術(shù)里面含有大量的“哲學(xué)問題”和深刻的理論(比如 partial evaluation)。但為什么又說它無聊呢?因?yàn)槟阋坏┱莆樟司幾g器技術(shù)里面最精華的原理,就會發(fā)現(xiàn)其實(shí)說來說去就那么點(diǎn)東西。編譯器代碼里面的“創(chuàng)造性含量”其實(shí)非常低。有些固定的“模式”,幾十年都不變。寫了幾個編譯器之后你就會發(fā)現(xiàn),自己越來越喜歡做被很多人不齒的“界面”一類的東西。這就像做科學(xué)做到頭了,想嘗嘗藝術(shù)的滋味。

好了不打擊你積極性了,先來說一說為什么早期的 Lisp 編譯器生成的代碼效率低下吧。在函數(shù)式語言的早期,由于它比普通的語言多了一些表達(dá)力強(qiáng)大的構(gòu)造(比如函數(shù)作為值傳遞),人們其實(shí)都不知道如何實(shí)現(xiàn)它的編譯器。很多 Scheme 的編譯器其實(shí)只是把 Scheme 編譯成 C,然后再調(diào)用 C 語言的編譯器。Haskell 的編譯器 GHC 在早期也是這樣的。而且由于 C 編譯器生成的匯編代碼不完全符合 Haskell 的需求,GHC 里面含有一個 Perl 腳本,專門用于調(diào)整這匯編代碼的結(jié)構(gòu)。這個 Perl 腳本,由于它的工作方式毫無原則,被叫做 evil mangler。現(xiàn)在這個東西已經(jīng)不存在于 GHC 里面,但從它曾經(jīng)的存在你可以看出,其實(shí)函數(shù)式編譯器的技術(shù)在早期是相當(dāng)混沌的。

在我看來,早期 Lisp 編譯器出現(xiàn)的主要問題,其實(shí)在于對編譯的本質(zhì)的理解,以及編譯器與解釋器的區(qū)別。解釋器之所以大部分時候比編譯器慢,是因?yàn)榻忉屍?ldquo;問太多的問題”。每當(dāng)看到一個構(gòu)造,解釋器就會問:“這是一個整數(shù)嗎?”“這是一個函數(shù)嗎?”…… 這些問題,在編譯器的理論里面叫做“解釋開銷”(interpretive overhead)。編譯的本質(zhì),其實(shí)就是在程序運(yùn)行之前分析并且一勞永逸的回答這些“問題”。這樣編譯后的代碼就不再問這些問題,因?yàn)樗苯泳椭滥莻€位置應(yīng)該出現(xiàn)什么構(gòu)造,應(yīng)該做什么事。早期的 Lisp 編譯器,以及現(xiàn)在的很多 Scheme 編譯器出現(xiàn)的問題其實(shí)在于,它們并沒有完全的消除這些問題,或者根本沒有消除這些問題。

當(dāng)我最早學(xué)習(xí) Scheme 語言的時候,我發(fā)現(xiàn) Scheme 有太多的實(shí)現(xiàn),PLT Scheme(現(xiàn)在叫 Racket), MIT Scheme, VSCM, Scheme 48, Bigloo, Chicken, Guile, ...讓人搞不清楚哪一個更好。有些 Scheme 實(shí)現(xiàn)顯得更高級一些,但實(shí)際用起來總是感覺不放心,因?yàn)槟阈睦锟傁胫@代碼編譯出來到底能不能跟 C 語言代碼比?這也是我后來開始使用 Common Lisp 的原因,因?yàn)?Common Lisp 似乎有挺多高效的編譯器(CMUCL,Lispworks,Allegro 等等)。

直到有一天,我發(fā)現(xiàn)了 Chez Scheme,它改變了我對 Scheme 編譯器,以至于整個編譯器概念的理解。當(dāng)時我只下載了 Chez Scheme 的免費(fèi)版本,叫做 Petite。Petite 與正式版 Chez Scheme 的區(qū)別是,它不輸出二進(jìn)制代碼,所以你不能把編譯后的代碼拿去銷售。另外出于商業(yè)目的,Petite 的出錯信息非常的“簡約”,以至于有時候你不得不用其它的 Scheme 實(shí)現(xiàn),才能找到 bug 的所在。但是一運(yùn)行就見分曉,Petite 被作為一個“解釋器”直接運(yùn)行 Scheme 代碼,比其他的 Scheme 實(shí)現(xiàn)編譯后的代碼速度還要快很多倍。

Chez Scheme 導(dǎo)致了我命運(yùn)的改變,怎么也沒有想到,我最終會成為它的作者的學(xué)生。我非常有幸的在 Indiana 大學(xué)參加了 Chez Scheme 的作者 R. Kent Dybvig(大家都叫他 Kent,雖然他的名字其實(shí)叫 R.)所授的編譯器課程,并且跟他合作研究了一個學(xué)期。我可以說,這個課程恐怕是世界上***的編譯器課程,而我搭上了它的“末班車”。Kent 現(xiàn)在已經(jīng)離開了 Indiana 大學(xué),被重金聘請到某大公司進(jìn)行一些機(jī)密的項(xiàng)目。誰都不知到他在干什么。

Kent 單槍匹馬的寫出了 Chez Scheme,世界上唯一的商業(yè) Scheme 編譯器,并且為此成立了自己的公司(Cadence Research Systems)。Chez Scheme 價(jià)格不菲,并且不明碼實(shí)價(jià)。它的價(jià)格跟項(xiàng)目的大小和公司的規(guī)模有關(guān)。有些大公司花重金購買 Chez Scheme 用于一些核心的項(xiàng)目。其中有些為了保證這編譯器的安全,又花了好幾倍的價(jià)錢買下了它的源代碼。Kent 的公司只有他一個人,不用操心管理,也不用操心銷售。所以他過的非常舒服,基本是一個不愁吃穿,不問世事的人。

Kent 是我一生中見過的最神秘,最酷的人。他幾乎從來不表揚(yáng)任何人,但也不貶低任何人。從冷漠的言語之中,你能感覺到他的內(nèi)心相對于任何人的完全平等。他的心里有許許多多的秘密,你需要一些技巧才能套出他的真言。他很少發(fā)表論文,卻把別人的論文全都看得很透。沒有人知道他的核心技術(shù),他也從來不在乎別人是否了解他的水平。他的名字叫 R. Kent Dybvig,卻從來沒有人知道那個 R. 是哪一個名字的簡寫。他的照片從來不放在網(wǎng)上,如果你真想知道他長得什么樣,我在網(wǎng)上找到一個跟他長得非常相似的人的照片:

Chez Scheme 生成的“目標(biāo)代碼”效率之高,我還沒有見到任何其它 Scheme 編譯器可以與之匹敵。而它的“編譯速度”之快,沒有任何語言的任何編譯器可以相提并論(注意我去掉了“Scheme”這個限定詞)。Chez Scheme 可以在 5 秒鐘之內(nèi)完成從頭到尾的自我編譯。想想編譯 GCC 或者 GHC 需要多少時間,你就明白差距了。

另外值得一提的是,Chez Scheme 從頭到尾都是 Kent 一個人的作品。它的工作原理是從 Scheme 源程序一直編譯到機(jī)器代碼,而不依賴任何其他語言的編譯器。它甚至不依賴第三方的匯編器,所有三種體系構(gòu)架(Intel, ARM, Sparc)的匯編器,都是 Kent 自己寫的。為什么這樣做呢?因?yàn)閹缀鯖]有其它人的編譯器代碼能夠達(dá)到他的標(biāo)準(zhǔn)。連 Intel 自己給自己的處理器寫的匯編器,都不能滿足他的要求。

如果你上了 Kent 的課,再來看看普通的編譯器書籍(比如有名的 Dragon Book),或者 LLVM 的代碼,你就會發(fā)現(xiàn) Kent 的水平其實(shí)遠(yuǎn)在這些知名的大牛之上。我為什么可以這么說呢?因?yàn)槿绻愕乃皆趧e人之下,你自己都會對這種判斷產(chǎn)生懷疑。而如果你超過了別人,他們的一言一行,他們的每一個錯誤,都像是處于你的顯微鏡底下,看得一清二楚。實(shí)話實(shí)說吧,在編譯器這個領(lǐng)域,我覺得 Kent 很有可能就是世界的 No.1。

如果你不了解 Scheme 的編譯器里面有什么東西,也許就會輕視它的難度。Scheme 是比 C 語言高級很多的語言,所以它的編譯器需要做比 C 語言的編譯器多很多的事情。在 Kent 的編譯器課程的前半段,我們其實(shí)本質(zhì)上是在實(shí)現(xiàn)一個 C 語言的編譯器,把一種用“S表達(dá)式”表示的中間語言,編譯為 X64 匯編代碼。在后半學(xué)期的課程中,我們才加入了各種 Scheme 的先進(jìn)功能,比如函數(shù)作為值(需要進(jìn)行 closure conversion 以及 closure 優(yōu)化),尾遞歸優(yōu)化(tail-call optimization),等等。另外,我還自己為它加入了一種非常漂亮而先進(jìn)的技術(shù),叫做 online partial evaluation。這種技術(shù)可以在一個 pass 就完成普通編譯器需要好幾個 pass 才能完成的優(yōu)化。所以你看到了,C 語言的編譯器其實(shí)連這個 Scheme 編譯器的一半難度都不到。

Kent 的課程編譯器有非常好的結(jié)構(gòu),它被叫做“nanopass 編譯器構(gòu)架”。因?yàn)樗拿恳粋€ pass 只做很小的一件事情,然后這些 pass 被串聯(lián)起來,形成一個完整的編譯器。你也許發(fā)現(xiàn)了,這其實(shí)就是 LLVM 的構(gòu)架。但是我可以告訴你,我們的課程編譯器比 LLVM 干凈利落許多,處于遠(yuǎn)遠(yuǎn)領(lǐng)先的地位。每一節(jié)課,我們都學(xué)會一個 pass。每一個講義,都非常精確的告訴你需要干什么。每一次的作業(yè),提交的時候都會經(jīng)過上百個測試(當(dāng)然 Kent 不可能把 Chez Scheme 的測試都給我們),如果沒有通過就會被拒絕接受。這些測試也可以下載,用于自己的調(diào)試。有趣的是,每一次作業(yè)我們都需要提交一些自己寫的新測試,目的是用于“破壞”別人的編譯器。所以我們每次都會想出很刁鉆的輸入代碼,讓同學(xué)的日子不好過。當(dāng)然是開玩笑的,這種做法其實(shí)大大的提高了我們對編譯器測試的理解和興趣,以及同學(xué)之間的友誼。這比起我曾經(jīng)在 Cornell 選過(然后 drop 掉)的編譯器課程,真是天壤之別。

在課程的***,我們做出了一個完整的編譯器,可以把 Scheme 最關(guān)鍵的子集,編譯到 X64 匯編代碼,然后通過 GNU 的匯編器,匯編成機(jī)器代碼。在***的一節(jié)課,Kent 對我們的學(xué)期做了一個總結(jié)。他說:“你們現(xiàn)在寫出的這個編譯器里面,含有很多先進(jìn)的技術(shù)。也許過一段時間回頭看這段代碼,你們才會發(fā)現(xiàn)它的價(jià)值。如果你們覺得自己已經(jīng)成為了編譯器的專家,那我就告訴你們,你們提交的最快的編譯器,編譯速度比起 Chez Scheme 慢了 700 倍。但是不要灰心,我告訴你們哪些地方可以改進(jìn)……”

只有極少數(shù)的人見到過 Chez Scheme 的源代碼,我沒有看見過。但是見到過它的人告訴我,Chez Scheme 里面其實(shí)只有很少幾個 pass,而不是像我們的課程編譯器有 50 個左右的 pass,這節(jié)省了很多用于“遍歷”代碼樹所需要的時間。Chez Scheme 只使用了一些非常簡單的算法,沒有使用論文里很復(fù)雜的方法,這也是它速度快的原因之一。比如它的寄存器分配,沒有使用“圖著色”(graph coloring)方法,而是使用非常簡單的類似 linear scan 的算法,***代碼的效率卻更高。另外,Scheme 使用“S表達(dá)式”作為它的語法,使得“語法分析”的速度非常之快。其它語言由于使用了復(fù)雜的語法,挺大一部分編譯時間其實(shí)花在了語法分析上面。

實(shí)際上,Chez Scheme 早就有了超越 linear scan, SSA 之類的技術(shù),Kent 卻從來沒有為它們發(fā)表論文。這是因?yàn)樗运絾幔坎弧H绻銌査€是會告訴你他用的是什么方法。但是具體的細(xì)節(jié),卻是解釋起來非常費(fèi)事的事情,他為什么無緣無故要費(fèi)工夫跟你解釋呢?所以很多時候,我都是自己摸索出解決方案,再去套他的口氣,看他是不是一樣的做法。有趣的是在課程進(jìn)行之中的時候,我發(fā)現(xiàn)我的有些突發(fā)靈感的做法,其實(shí)超越了 Chez Scheme,以至于在某些 pass 會生成比它還要高效的代碼,然而我的編譯器代碼卻比它的還要短小(當(dāng)然絕大部分時間我的代碼不如 Chez Scheme)。于是我就隱約的發(fā)現(xiàn),Kent 有時候會悄悄的花時間看我的作業(yè),想搞明白我是怎么做的,但他卻不想讓我知道。有一天開會的時候 Kent 沒有來,Kent 的編譯器課程的助教 Andy 不小心說漏了嘴:“因?yàn)槟銓懙拇a,Kent 還在進(jìn)行一些偵探工作……” 悄悄的從任何人那里得到啟發(fā),吸收并且融入到自己的能力里面,也許就是 Kent 練就如此蓋世神功的秘訣。

我想,這篇文章就該到此結(jié)束了。寫這些東西的目的,其實(shí)只是樹立人們對于函數(shù)式語言編譯器的信心。它們有些其實(shí)比 C 和 C++ 之類語言的編譯器高明很多。我沒有時間也沒有精力去講述這編譯器里面的細(xì)節(jié),因?yàn)樗鼘?shí)在是非常困難,卻又非常優(yōu)雅的程序。如果你有興趣的話,可以看看我***的代碼。由于版權(quán)原因,有些輔助部件我不能放在網(wǎng)上,所以你并不能運(yùn)行它,只能看一個大概的形狀。如果你需要一個 Scheme 版本用于學(xué)習(xí)的話,Chez Scheme 有一個免費(fèi)的版本叫做 Petite Chez Scheme,可以免費(fèi)下載。因?yàn)?Petite 不提供友好的出錯信息,所以我也推薦 Racket 作為一個替補(bǔ)。

 

原文鏈接:http://blog.sina.com.cn/s/blog_5d90e82f0101jscn.html

責(zé)任編輯:林師授 來源: 王垠的博客
相關(guān)推薦

2013-05-21 09:47:15

編輯器IDE程序員

2013-03-08 10:00:01

2012-10-30 15:31:17

2012-08-14 10:44:52

解釋器編程

2013-06-19 09:42:27

工作經(jīng)歷程序員開發(fā)經(jīng)驗(yàn)

2012-08-13 09:40:12

語言編程語言程序語言

2013-04-18 09:29:02

編程語言編程

2013-03-20 09:54:07

2013-03-18 10:19:41

程序設(shè)計(jì)語言

2017-07-10 17:00:24

程序語言語言特性

2014-02-12 14:31:55

2010-01-21 09:11:38

C++編譯器

2010-01-18 10:34:21

C++編譯器

2010-03-23 11:17:16

Python 動態(tài)編譯

2017-03-20 18:01:55

編譯器匯編

2009-08-10 17:12:54

C#編譯器

2010-10-20 13:43:37

C++編譯器

2019-08-06 08:20:07

編譯器工具開發(fā)者

2012-09-12 10:33:37

工具工具奴隸語言工具

2009-07-06 12:49:33

JSP編譯器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

亚洲精品久久一区二区三区777| 极品尤物一区二区三区| 亚洲色图第四色| 久久亚洲国产精品尤物| 亚洲欧美视频一区| 精品乱码一区| 一区二区三区黄色片| 国产一区亚洲| 亚洲天堂男人天堂| 日韩欧美色视频| 亚洲一区站长工具| 亚洲色图在线看| 欧美成人综合一区| 精品久久在线观看| 日韩国产精品久久| 欧美国产日韩免费| 蜜桃av免费在线观看| 大香伊人久久精品一区二区| 欧美四级电影在线观看| 久无码久无码av无码| 91电影在线播放| 99国产精品久久久久久久久久久| 国产欧美日韩综合精品| 久久夜靖品2区| 99久久综合| 亚洲精品成人久久久| 超碰在线免费av| 九九热线视频只有这里最精品| 亚洲激情自拍视频| 亚洲高清123| 免费黄色在线视频网站| 成人精品国产免费网站| 91精品久久久久久久| 波多野结衣网站| 亚洲黄色在线| 美女视频黄免费的亚洲男人天堂| 国产精成人品免费观看| 久久国产精品色av免费看| 欧美一级黄色片| 国产视频1区2区3区| 欧美性xxx| 都市激情亚洲色图| 久久精品国产sm调教网站演员| av免费网站在线观看| 欧美国产欧美亚州国产日韩mv天天看完整| 国内精品久久久久久久果冻传媒| www.日韩在线观看| 国产精品99久久久久久久vr| 92福利视频午夜1000合集在线观看| 亚洲婷婷久久综合| 老**午夜毛片一区二区三区| 欧洲成人性视频| 国偷自拍第113页| 国产免费成人| 26uuu亚洲伊人春色| 五月婷婷亚洲综合| 亚洲男女自偷自拍| 日本高清+成人网在线观看| 天天综合网入口| 亚洲影音一区| 日韩美女免费视频| 无码人妻av一区二区三区波多野 | 中文字幕少妇一区二区三区| 国产精品免费无码| 日韩精品午夜| 久久精品99久久久久久久久| 天天做夜夜爱爱爱| 中国精品18videos性欧美| 久久夜色精品国产亚洲aⅴ| 四虎精品免费视频| 欧美日韩18| 97精品国产91久久久久久| 国产一区二区三区影院| 久久久久99| 国产精品香蕉在线观看| va视频在线观看| 成人免费黄色在线| 欧美极品色图| 黄色免费在线观看网站| 亚洲免费在线电影| 亚洲熟妇无码一区二区三区| 久久sese| 欧美精品国产精品| 国产ts在线观看| 伊人久久大香线蕉| 日韩在线小视频| 黄色小说在线观看视频| 欧美综合国产| 成人黄色片网站| 成人爽a毛片一区二区| 91免费小视频| 在线免费观看成人| 成人爽a毛片免费啪啪动漫| 日韩欧美在线网址| 911福利视频| 国产精品乱战久久久| 亚洲人av在线影院| 中文字幕在线有码| 久久一区国产| 91麻豆蜜桃| 成人免费在线视频网| 一区二区三区在线不卡| 成人黄色一区二区| 91蝌蚪精品视频| 日韩高清不卡av| 黄色a级片在线观看| 久久国产日韩| av一区二区在线看| 91caoporm在线视频| 亚洲成人自拍偷拍| 午夜激情视频网| 国产a久久精品一区二区三区| 久久99精品久久久久久青青91| 久草视频一区二区| 国产成人av影院| 一区二区三区的久久的视频| 18video性欧美19sex高清| 欧美欧美欧美欧美首页| 亚洲精品中文字幕在线播放| 日韩专区精品| 国产国语videosex另类| 人妻妺妺窝人体色www聚色窝 | 电影网一区二区| 日韩视频一区在线观看| 国精产品视频一二二区| 久久久久91| 久久久精品动漫| 国产www视频在线观看| 在线综合亚洲欧美在线视频| 国产毛片久久久久久久| 国产日韩欧美一区| 国产伦精品一区二区三区免| 超碰个人在线| 欧美日韩电影在线播放| 国产黄色大片免费看| 香蕉久久a毛片| 国产精品视频免费观看| 深夜国产在线播放| 91精品国模一区二区三区| 娇妻被老王脔到高潮失禁视频| 亚洲一区久久| 另类小说综合网| 九色porny自拍视频在线播放| 欧美sm美女调教| 久久国产精品波多野结衣| 国产一区二区看久久| 中文字幕日韩一区二区三区不卡 | 亚洲iv一区二区三区| 日本视频在线观看| 欧美精品亚洲二区| 日韩精品一区二区三区在线视频| 蜜芽一区二区三区| 亚洲综合首页| 国产精品亚洲一区二区在线观看| 精品国产一区二区在线| 97人妻精品一区二区三区软件| 欧美激情一区二区三区蜜桃视频 | 日韩欧美色综合| 老女人性淫交视频| 粉嫩av一区二区三区| 丁香六月激情婷婷| 日日狠狠久久偷偷综合色| 欧美一二三视频| bbbbbbbbbbb在线视频| 在线欧美小视频| 亚洲色图27p| 国内精品久久久久影院色| 日本黄色a视频| 日韩一区中文| 欧美肥臀大乳一区二区免费视频| 丰满人妻av一区二区三区| 亚洲成人福利片| 91网站免费入口| 蜜臀久久99精品久久久久宅男| 亚洲制服欧美久久| 波多野结衣欧美| 国产91免费看片| 免费在线观看av片| 精品播放一区二区| 日韩黄色一级视频| 亚洲色图在线看| 一级国产黄色片| 日本伊人色综合网| 91精品国产毛片武则天| 欧美电影在线观看免费| 国产精品视频免费在线观看| 国产淫片在线观看| 精品视频久久久| 中文字幕+乱码+中文| 一区二区三区资源| 能免费看av的网站| 国产高清一区日本| 动漫av免费观看| 欧美色综合网| 日韩午夜视频在线观看| 亚洲精品一区国产| 国产成人精品视频在线| 在线观看三级视频| 伊人成人开心激情综合网| a网站在线观看| 在线观看区一区二| 精品无码av在线| 国产精品婷婷午夜在线观看| 秘密基地免费观看完整版中文 | 五月婷婷六月激情| 欧美老女人第四色| 免费黄色网址在线| 亚洲精品免费电影| 亚洲综合欧美综合| av在线综合网| 在线成人精品视频| 免费一区二区视频| 一本大道熟女人妻中文字幕在线 | 日韩av中文字幕第一页| 欧美日韩精品一区二区视频| av成人综合网| 色综合视频一区二区三区44| 国产69久久精品成人看| 欧美xxxx黑人又粗又长| www.xxxx精品| 风间由美一区| 精品在线欧美视频| 成人黄色免费视频| 欧美丰满一区二区免费视频| 9i精品福利一区二区三区| 亚洲国产aⅴ天堂久久| 中日韩一级黄色片| 国产欧美日本一区视频| 亚洲成人日韩在线| 不卡一区二区三区四区| 欧美一级大片免费看| 精品无人码麻豆乱码1区2区 | 亚洲精品国产品国语在线| 国产黄色一级大片| 欧美一区二区三区免费观看视频 | 日韩视频不卡中文| 亚洲天堂中文网| 在线这里只有精品| 中文字幕国产在线观看| 狠狠躁18三区二区一区| 日韩不卡视频在线| 舔着乳尖日韩一区| 男女啊啊啊视频| 天天影视色香欲综合网老头| 日韩久久久久久久久| 亚洲成人在线免费| 亚洲视频免费播放| 精品色蜜蜜精品视频在线观看| 日韩欧美高清在线观看| 午夜视频一区在线观看| 亚洲免费激情视频| 欧美午夜激情在线| 一级一片免费看| 欧美亚洲愉拍一区二区| 中文字幕日产av| 欧美日韩高清影院| 国产视频在线免费观看| 日韩一本二本av| 东京干手机福利视频| 亚洲精品福利资源站| 欧美女子与性| 国产性色av一区二区| av在线二区| 久久精品国产欧美亚洲人人爽| 免费av在线播放| 久久97久久97精品免视看| av中文在线资源库| 日本不卡免费高清视频| 男人亚洲天堂| 国产精品播放| 亚洲最好看的视频| 亚洲国产日韩欧美| 欧美成人有码| 无码人妻丰满熟妇区96| 日本不卡视频在线观看| 欧洲美女亚洲激情| 99久久精品久久久久久清纯| 一区二区三区四区免费| 国产精品福利电影一区二区三区四区| 91嫩草|国产丨精品入口| 亚洲第一搞黄网站| 免费在线观看av的网站| 欧美一区二区免费观在线| 欧美 日韩 国产 成人 在线| 亚洲人成免费电影| 污污影院在线观看| 人体精品一二三区| 精品午夜视频| 麻豆久久久9性大片| 国产精品久久久久久麻豆一区软件 | 日本人视频jizz页码69| 国产69精品久久777的优势| 加勒比一区二区| 亚洲欧美日韩精品久久久久| 日韩乱码在线观看| 欧美裸体一区二区三区| 熟妇高潮一区二区三区| 日韩在线视频线视频免费网站| 999福利在线视频| 国产女人18毛片水18精品| av成人综合| 亚洲自拍三区| 久久精品三级| 香蕉视频免费网站| 国产精品三级视频| 五月婷婷色丁香| 日韩视频永久免费| 亚洲xxxxxx| 日本成人免费在线| 精品亚洲自拍| 熟女视频一区二区三区| 天堂在线一区二区| yy6080午夜| 一区二区三区四区中文字幕| 中文字幕久久网| 亚洲欧美日韩在线一区| 69av成人| 91久久久一线二线三线品牌| 久久久影院免费| 免费午夜视频在线观看| 不卡的av电影| 久久网中文字幕| 欧美一区二区三区男人的天堂| 77导航福利在线| 国产极品jizzhd欧美| 亚洲日产av中文字幕| 免费观看国产精品视频| 国产高清视频一区| 精品自拍偷拍视频| 欧美日韩国产高清一区二区三区| 高清av电影在线观看| 日韩免费中文字幕| 西野翔中文久久精品国产| 国产精品无码av在线播放| 不卡电影一区二区三区| 伊人365影院| 欧美mv和日韩mv的网站| 蜜臀av在线| a级国产乱理论片在线观看99| 一区二区三区午夜视频| 91在线第一页| 一区二区三区四区av| 精品久久人妻av中文字幕| 久久国产精品影片| 欧美日韩黄网站| 国产成人亚洲综合无码| 国产传媒欧美日韩成人| 久久久久无码国产精品| 欧美不卡一区二区三区| 久久电影网站| 国产精品一码二码三码在线| 亚洲区国产区| 国产传媒第一页| 精品成人久久| 欧美国产精品日韩| 99视频有精品高清视频| 一个色的综合| 国产一区二区不卡在线| 欧美成欧美va| 亚洲国产黄色片| 日本美女一区| 一本久久a久久精品vr综合| 久久99国产精品尤物| 九九精品在线观看视频| 亚洲福利影片在线| 午夜精品久久久久久久久久蜜桃| 日韩国产在线一区| 精东粉嫩av免费一区二区三区| 欧美丰满熟妇bbbbbb| 亚洲电影在线看| 婷婷激情一区| 少妇熟女一区二区| caoporn国产一区二区| 91精品国产综合久久久蜜臀九色| 亚洲最大在线视频| 欧洲精品99毛片免费高清观看| 国产午夜大地久久| 欧美国产禁国产网站cc| 国产特级黄色片| 777午夜精品福利在线观看| 国产亚洲精品美女久久久久久久久久| 污色网站在线观看| 亚洲午夜激情网站| 黄色在线视频观看网站| 国产中文字幕日韩| 伊人久久亚洲影院| 免费网站在线高清观看| 日韩视频中午一区| 午夜伦理福利在线| 亚洲欧美一二三| 91亚洲精品久久久蜜桃网站| 精品国产青草久久久久96| 久久久久久欧美| 欧美日韩在线网站| av av在线| 精品视频1区2区3区| 超碰资源在线| 亚洲亚洲精品三区日韩精品在线视频| 成人黄色国产精品网站大全在线免费观看| 国产免费av一区|