精品欧美一区二区三区在线观看 _久久久久国色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ù)棧公眾號

男女精品网站| 忘忧草在线影院两性视频| 青草av.久久免费一区| 色哟哟亚洲精品一区二区| 久久久精品高清| 中文在线手机av| 91麻豆免费视频| 国产日韩欧美夫妻视频在线观看| 校园春色 亚洲| 日本中文字幕在线一区| 欧美三级日韩三级国产三级| 成人免费看片视频在线观看| 午夜18视频在线观看| 蜜臀精品一区二区三区在线观看| 欧美极品美女视频网站在线观看免费 | 日本免费一区二区三区视频观看| 91无套直看片红桃在线观看| 高清日韩欧美| 717成人午夜免费福利电影| 少妇人妻无码专区视频| 亚洲精品传媒| 91伊人久久大香线蕉| 91精品久久久久久久久久另类| 99久在线精品99re8热| 99国产精品免费视频观看| 日韩久久精品成人| 中文字幕乱码在线人视频| 欧美xxxx做受欧美护士| 亚洲成人免费在线| 三级网在线观看| av影片在线看| 久久九九国产精品| 久久影院理伦片| 亚洲狼人综合网| 国产一区二区三区精品欧美日韩一区二区三区 | 人人草在线观看| 亚洲黄色大片| 欧美激情精品久久久久久免费印度| 久久久精品成人| 亚洲制服欧美另类| 亚洲精品国产精品乱码不99按摩 | 日韩大片一区二区| 欧美国产大片| 色婷婷久久一区二区三区麻豆| 国产无限制自拍| 久操av在线| 一区二区欧美精品| 超碰97在线看| 色yeye免费人成网站在线观看| **欧美大码日韩| 69精品久久久| 91久久精品无嫩草影院| 欧美日韩中文国产| 日韩中文字幕组| 最近高清中文在线字幕在线观看1| 亚洲国产一区二区视频| 免费的av在线| 亚洲h片在线看| 一区二区欧美国产| 国产va亚洲va在线va| 日本在线视频中文有码| 艳妇臀荡乳欲伦亚洲一区| wwwjizzjizzcom| 欧美精品videossex少妇| 一区二区三区欧美| 大胆欧美熟妇xx| missav|免费高清av在线看| 亚洲主播在线播放| 91精品国产91久久久久麻豆 主演| 黄网站在线观| 欧美性猛交xxxx免费看| 六月激情综合网| 成人精品国产| 欧美一级高清片在线观看| 波多野结衣中文字幕在线播放| 欧美成年网站| 亚洲精品国产电影| 成年人在线免费看片| 日韩精品一卡| 欧美激情国产精品| 黄色在线观看国产| 毛片不卡一区二区| 亚洲在线视频观看| 人妻va精品va欧美va| 久久综合色之久久综合| 蜜桃av久久久亚洲精品| 337p日本欧洲亚洲大胆鲁鲁| 亚洲欧美日韩国产一区二区三区| 吴梦梦av在线| yellow在线观看网址| 日本精品一区二区三区高清| 日韩av片免费观看| 久久影院资源站| 在线看片第一页欧美| 久久艹精品视频| 日韩精品亚洲专区| 2022国产精品| 国产在线观看网站| 一区二区三区精密机械公司| 国产美女三级视频| 日韩成人精品| 国产一区av在线| 国产一级免费观看| 美女诱惑一区二区| 国产伦精品一区二区三区照片91| av资源网在线观看| 亚洲二区在线视频| 成 人 黄 色 小说网站 s色| 动漫3d精品一区二区三区乱码| 在线a欧美视频| 国产精品7777| 激情五月激情综合网| 狠狠爱一区二区三区| 欧美成人hd| 在线观看免费一区| 五十路六十路七十路熟婆 | 国产麻豆成人精品| 欧美日韩高清免费| av福利导福航大全在线| 在线成人免费观看| 欧美做受高潮6| 一区二区毛片| 北条麻妃高清一区| 三区四区电影在线观看| 色哦色哦哦色天天综合| 少妇被狂c下部羞羞漫画| 天天影视天天精品| 国产精品入口免费视| 完全免费av在线播放| 另类欧美小说| xxxx视频在线| 欧美不卡在线视频| 老湿机69福利| 蜜乳av一区二区| 日本精品二区| 六月婷婷综合| 亚洲欧美999| 九一国产在线观看| jizz一区二区| 一二三四视频社区在线| 天堂精品久久久久| 欧美日韩国产成人在线| 99久久精品国产一区色| 国产精品国产自产拍高清av| 丝袜制服一区二区三区| 国产一区二区三区网| 日本午夜人人精品| 噜噜噜噜噜在线视频| 日韩欧美有码在线| 美女被到爽高潮视频| 三级在线观看一区二区| 日产精品高清视频免费| 一区在线影院| 色yeye香蕉凹凸一区二区av| 亚洲天堂中文字幕在线| 一区精品在线播放| 中文字幕55页| 黄色亚洲大片免费在线观看| 国产日韩欧美精品| 涩涩网在线视频| 亚洲欧美在线一区| 涩涩视频在线观看| 国产精品的网站| 波多野结衣电影免费观看| 国语自产精品视频在线看8查询8| 国产伦精品一区二区三区视频免费| 免费v片在线观看| 国产午夜精品一区二区三区| 中文字幕永久在线视频| 亚洲欧美激情小说另类| 日本中文字幕精品| 激情综合亚洲| 欧美影视一区二区| 亚洲福利影视| 国外成人在线播放| 美丽的姑娘在线观看免费动漫| 91福利国产成人精品照片| 992在线观看| 成人黄色777网| 99热手机在线| 欧美激情日韩| 欧美日韩视频在线一区二区观看视频| 777午夜精品电影免费看| 久久天堂电影网| 五月婷婷伊人网| 欧美精品乱人伦久久久久久| 久久机热这里只有精品| 国产日韩三级在线| 深夜福利网站在线观看| 国产精品一二| 妞干网这里只有精品| 日韩免费电影在线观看| 国产精品一区二区久久久| 青春草视频在线| 国产亚洲视频在线观看| 午夜精品久久久久久久96蜜桃| 欧美香蕉大胸在线视频观看| 亚洲国产123| 久久久久亚洲蜜桃| av在线天堂网| 蜜桃视频在线一区| 99精品人妻少妇一区二区| 欧美高清视频在线观看mv| 国产视频精品网| 91亚洲精品在看在线观看高清| 97免费视频在线播放| 拍真实国产伦偷精品| 日韩av影视综合网| 国产av无码专区亚洲av| 在线亚洲欧美专区二区| 欧美成人aaaaⅴ片在线看| 国产精品久线在线观看| 添女人荫蒂视频| 国产大片一区二区| 亚洲一区二区三区观看| 久久久久欧美精品| 毛片在线播放视频| 影音先锋日韩在线| 亚洲精品日韩在线观看| 亚洲69av| 国产一区二区在线观看免费播放| 日日狠狠久久| 国产精品视频在线播放| 中文字幕21页在线看| 久久久久久久电影一区| 成人免费网站在线观看视频| 中文字幕精品一区久久久久| 天堂a中文在线| 亚洲成人激情在线观看| aaa级黄色片| 欧美美女视频在线观看| 中文字幕777| 欧美午夜精品一区| 国产精品男女视频| 精品福利在线看| 国产女同在线观看| 五月天亚洲婷婷| 精品在线播放视频| 亚洲成人精品一区| 国产第一页第二页| 亚洲福利电影网| 日韩三级免费看| 欧美日韩国内自拍| 天堂网av手机版| 91电影在线观看| 最好看的日本字幕mv视频大全 | 91久久国语露脸精品国产高跟| 在线观看av一区| 中国女人一级一次看片| 欧美性一级生活| 这里只有精品9| 欧美高清dvd| 精品人妻av一区二区三区| 欧美一区二区三区成人| 99久久一区二区| 精品国产乱码久久久久久久| 免费国产精品视频| 日韩成人av在线播放| 三级无遮挡在线观看| 亚洲小视频在线观看| 最新97超碰在线| 久久久精品网站| heyzo在线欧美播放| 1769国产精品| 日本精品另类| 成人高h视频在线| 99香蕉久久| 欧美极品日韩| 日韩中字在线| 国产美女作爱全过程免费视频| 韩日成人在线| 日韩中文字幕二区| 六月婷婷色综合| 亚洲美女精品视频| xnxx国产精品| 中文字幕乱码av| 亚洲一区二区三区四区五区黄| www.av麻豆| 欧美日韩一区二区电影| 精品欧美一区二区精品少妇| 精品视频www| 久热国产在线| 97视频免费观看| 小说区图片区亚洲| 精品在线不卡| 欧美国产偷国产精品三区| 国产不卡一区二区视频| 久久一综合视频| 午夜影院免费观看视频| caoporm超碰国产精品| 亚洲色图 激情小说| 亚洲综合免费观看高清完整版在线| 黄色片网站在线免费观看| 制服丝袜激情欧洲亚洲| 午夜影院免费视频| 久久天堂av综合合色| 成人性生交大片免费网站| 91人成网站www| 久久不见久久见国语| 激情五月六月婷婷| 日韩精品电影在线| 亚洲性图第一页| 国产精品剧情在线亚洲| 欧美一级视频免费观看| 在线播放亚洲一区| 男生女生差差差的视频在线观看| 麻豆一区二区在线观看| 国产精欧美一区二区三区蓝颜男同| 91最新在线免费观看| 国产亚洲欧美日韩在线观看一区二区 | 天堂影院在线| 欧美激情极品视频| 成人影院网站ww555久久精品| 欧洲成人一区二区| 国产日本精品| 国产免费无码一区二区| 国产精品高潮久久久久无| www.com国产| 精品国产一区二区三区不卡| 欧美一区二区三区| 日韩暖暖在线视频| 老汉色老汉首页av亚洲| 狠狠精品干练久久久无码中文字幕| 喷白浆一区二区| 男生草女生视频| 欧美日韩色婷婷| 少妇av一区二区| 午夜精品久久久久久久99热浪潮| 激情五月综合婷婷| 在线免费一区| 老司机免费视频一区二区| 舐め犯し波多野结衣在线观看| 黄色成人在线播放| 色呦呦视频在线| 久久人人看视频| 粉嫩的18在线观看极品精品| 国产精品av免费观看| 国产麻豆午夜三级精品| 黄色录像免费观看| 欧美精品色综合| www在线免费观看视频| 成人激情视频网| 小处雏高清一区二区三区| 一女二男3p波多野结衣| 国产精品青草久久| 一级黄色小视频| 久久精品视频在线观看| 美女久久久久久| 亚洲一区二区在| 精品一区二区三区视频在线观看 | 91精品国产综合久久香蕉| 欧洲激情综合| 一个色综合久久| 伊人开心综合网| 丰满岳乱妇国产精品一区| 久久露脸国产精品| 少妇一区二区三区| 在线免费视频a| 亚洲男同性视频| 免费观看国产视频| 青青草一区二区| 日韩欧美伦理| 九九九久久久久久久| 亚洲资源在线观看| 欧美日韩伦理片| 国产精品自产拍高潮在线观看| 偷偷www综合久久久久久久| 香蕉视频xxxx| 欧美日韩性视频| yw视频在线观看| 97伦理在线四区| 亚洲综合国产激情另类一区| 成人无码av片在线观看| 91.成人天堂一区| 92久久精品| 亚洲成人自拍| 国产一区二区日韩精品| 日本三级中文字幕| 在线国产精品播放| 免费看日产一区二区三区 | 九九精品视频在线看| 国产免费无码一区二区视频| 日韩高清有码在线| 欧洲亚洲精品久久久久| 日韩欧美不卡在线| 中文字幕精品在线不卡| 亚洲av少妇一区二区在线观看| 日本视频久久久| 欧美精品午夜| 成人小视频免费看| 精品女同一区二区| 91福利精品在线观看| 成人免费在线网| 国产精品久久精品日日| 午夜福利一区二区三区| 91久久久久久久久久久| 美女尤物久久精品| 久久久久久久久久91| 日韩亚洲欧美成人| 嫩草影视亚洲|