久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

(四)Go 语言编译流程简述

發布時間:2025/3/15 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (四)Go 语言编译流程简述 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、概述

Go 語言編譯的最后一個階段是根據 SSA 中間代碼生成機器碼,這里談的機器碼是在目標 CPU 架構上能夠運行的二進制代碼,中間代碼生成一節簡單介紹的從抽象語法樹到 SSA 中間代碼的生成過程,將近 50 個生成中間代碼的步驟中有一些過程嚴格上說是屬于機器碼生成階段的。

機器碼的生成過程其實是對 SSA 中間代碼的降級(lower)過程,在 SSA 中間代碼降級的過程中,編譯器將一些值重寫成了目標 CPU 架構的特定值,降級的過程處理了所有機器特定的重寫規則并對代碼進行了一定程度的優化;在 SSA 中間代碼生成階段的最后,Go 函數體的代碼會被轉換成?cmd/compile/internal/obj.Prog?結構。

指令集架構?#

首先需要介紹的就是指令集架構,雖然我們在第一節編譯過程概述中曾經講解過指令集架構,但是在這里還是需要引入更多的指令集架構知識。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖??計算機軟硬件之間的橋梁

指令集架構是計算機的抽象模型,在很多時候也被稱作架構或者計算機架構,它是計算機軟件和硬件之間的接口和橋梁1;一個為特定指令集架構編寫的應用程序能夠運行在所有支持這種指令集架構的機器上,也就是說如果當前應用程序支持 x86 的指令集,那么就可以運行在所有使用 x86 指令集的機器上,這其實就是抽象層的作用,每一個指令集架構都定義了支持的數據結構、寄存器、管理主內存的硬件支持(例如內存一致、地址模型和虛擬內存)、支持的指令集和 IO 模型,它的引入其實就在軟件和硬件之間引入了一個抽象層,讓同一個二進制文件能夠在不同版本的硬件上運行。

如果一個編程語言想要在所有的機器上運行,它就可以將中間代碼轉換成使用不同指令集架構的機器碼,這可比為不同硬件單獨移植要簡單的太多了。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 圖? 復雜指令集(CISC)和精簡指令集(RISC)

最常見的指令集架構分類方法是根據指令的復雜度將其分為復雜指令集(CISC)和精簡指令集(RISC),復雜指令集架構包含了很多特定的指令,但是其中的一些指令很少會被程序使用,而精簡指令集只實現了經常被使用的指令,不常用的操作都會通過組合簡單指令來實現。

復雜指令集的特點就是指令數目多并且復雜,每條指令的字節長度并不相等,x86 就是常見的復雜指令集處理器,它的指令長度大小范圍非常廣,從 1 到 15 字節不等,對于長度不固定的指令,計算機必須額外對指令進行判斷,這需要付出額外的性能損失2。

而精簡指令集對指令的數目和尋址方式做了精簡,大大減少指令數量的同時更容易實現,指令集中的每一個指令都使用標準的字節長度、執行時間相比復雜指令集會少很多,處理器在處理指令時也可以流水執行,提高了對并行的支持。作為一種常見的精簡指令集處理器,arm 使用 4 個字節作為指令的固定長度,省略了判斷指令的性能損失3,精簡指令集其實就是利用了我們耳熟能詳的 20/80 原則,用 20% 的基礎指令和它們的組合來解決問題。

最開始的計算機使用復雜指令集是因為當時計算機的性能和內存比較有限,業界需要盡可能地減少機器需要執行的指令,所以更傾向于高度編碼、長度不等以及多操作數的指令。不過隨著計算機性能的提升,出現了精簡指令集這種犧牲代碼密度換取簡單實現的設計;除此之外,硬件的飛速提升還帶來了更多的寄存器和更高的時鐘頻率,軟件開發人員也不再直接接觸匯編代碼,而是通過編譯器和匯編器生成指令,復雜的機器指令對于編譯器來說很難利用,所以精簡指令在這種場景下更適合。

復雜指令集和精簡指令集的使用是設計上的權衡,經過這么多年的發展,兩種指令集也相互借鑒和學習,與最開始剛被設計出來時已經有了較大的差別,對于軟件工程師來講,復雜的硬件設備對于我們來說已經是領域下三層的知識了,其實不太需要掌握太多,但是對指令集架構感興趣的讀者可以找一些資料開拓眼界。

機器碼生成?#

機器碼的生成在 Go 的編譯器中主要由兩部分協同工作,其中一部分是負責 SSA 中間代碼降級和根據目標架構進行特定處理的?cmd/compile/internal/ssa?包,另一部分是負責生成機器碼的?cmd/internal/obj4:

  • cmd/compile/internal/ssa?主要負責對 SSA 中間代碼進行降級、執行架構特定的優化和重寫并生成?cmd/compile/internal/obj.Prog?指令;
  • cmd/internal/obj?作為匯編器會將這些指令轉換成機器碼完成這次編譯;

SSA 降級?#

SSA 降級是在中間代碼生成的過程中完成的,其中將近 50 輪處理的過程中,lower?以及后面的階段都屬于 SSA 降級這一過程,這么多輪的處理會將 SSA 轉換成機器特定的操作:

var passes = [...]pass{...{name: "lower", fn: lower, required: true},{name: "lowered deadcode for cse", fn: deadcode}, // deadcode immediately before CSE avoids CSE making dead values live again{name: "lowered cse", fn: cse},...{name: "trim", fn: trim}, // remove empty blocks }

SSA 降級執行的第一個階段就是?lower,該階段的入口方法是?cmd/compile/internal/ssa.lower?函數,它會將 SSA 的中間代碼轉換成機器特定的指令:

func lower(f *Func) {applyRewrite(f, f.Config.lowerBlock, f.Config.lowerValue) }

向?cmd/compile/internal/ssa.applyRewrite?傳入的兩個函數?lowerBlock?和?lowerValue?是在中間代碼生成階段初始化 SSA 配置時確定的,這兩個函數會分別轉換函數中的代碼塊和代碼塊中的值。

假設目標機器使用 x86 的架構,最終會調用?cmd/compile/internal/ssa.rewriteBlock386?和?cmd/compile/internal/ssa.rewriteValue386?兩個函數,這兩個函數是兩個巨大的 switch 語句,前者總共有 2000 多行,后者將近 700 行,用于處理 x86 架構重寫的函數總共有將近 30000 行代碼,你能在?cmd/compile/internal/ssa/rewrite386.go?這里找到文件的全部內容,我們只節選其中的一段展示一下:

func rewriteValue386(v *Value) bool {switch v.Op {case Op386ADCL:return rewriteValue386_Op386ADCL_0(v)case Op386ADDL:return rewriteValue386_Op386ADDL_0(v) || rewriteValue386_Op386ADDL_10(v) || rewriteValue386_Op386ADDL_20(v)...} }func rewriteValue386_Op386ADCL_0(v *Value) bool {// match: (ADCL x (MOVLconst [c]) f)// cond:// result: (ADCLconst [c] x f)for {_ = v.Args[2]x := v.Args[0]v_1 := v.Args[1]if v_1.Op != Op386MOVLconst {break}c := v_1.AuxIntf := v.Args[2]v.reset(Op386ADCLconst)v.AuxInt = cv.AddArg(x)v.AddArg(f)return true}... }

重寫的過程會將通用的 SSA 中間代碼轉換成目標架構特定的指令,上述的?rewriteValue386_Op386ADCL_0?函數會使用?ADCLconst?替換?ADCL?和?MOVLconst?兩條指令,它能通過對指令的壓縮和優化減少在目標硬件上執行所需要的時間和資源。

我們在上一節中間代碼生成中已經介紹過?cmd/compile/internal/gc.compileSSA?中調用?cmd/compile/internal/gc.buildssa?的執行過程,我們在這里繼續介紹?cmd/compile/internal/gc.buildssa?函數返回后的邏輯:

func compileSSA(fn *Node, worker int) {f := buildssa(fn, worker)pp := newProgs(fn, worker)defer pp.Free()genssa(f, pp)pp.Flush() }

cmd/compile/internal/gc.genssa?函數會創建一個新的?cmd/compile/internal/gc.Progs?結構并將生成的 SSA 中間代碼都存入新建的結構體中,我們在上一節得到的 ssa.html 文件就包含最后生成的中間代碼:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?圖 genssa 的執行結果

上述輸出結果跟最后生成的匯編代碼已經非常相似了,隨后調用的?cmd/compile/internal/gc.Progs.Flush?會使用?cmd/internal/obj?包中的匯編器將 SSA 轉換成匯編代碼:

func (pp *Progs) Flush() {plist := &obj.Plist{Firstpc: pp.Text, Curfn: pp.curfn}obj.Flushplist(Ctxt, plist, pp.NewProg, myimportpath) }

cmd/compile/internal/gc.buildssa?中的?lower?和隨后的多個階段會對 SSA 進行轉換、檢查和優化,生成機器特定的中間代碼,接下來通過?cmd/compile/internal/gc.genssa?將代碼輸出到?cmd/compile/internal/gc.Progs?對象中,這也是代碼進入匯編器前的最后一個步驟。

匯編器?#

匯編器是將匯編語言翻譯為機器語言的程序,Go 語言的匯編器是基于 Plan 9 匯編器的輸入類型設計的,Go 語言對于匯編語言 Plan 9 和匯編器的資料十分缺乏,網上能夠找到的資料也大多都含糊不清,官方對匯編器在不同處理器架構上的實現細節也沒有明確定義:

The details vary with architecture, and we apologize for the imprecision; the situation is?not well-defined.5

我們在研究匯編器和匯編語言時不應該陷入細節,只需要理解匯編語言的執行邏輯就能夠幫助我們快速讀懂匯編代碼。當我們將如下的代碼編譯成匯編指令時,會得到如下的內容:

$ cat hello.go package hellofunc hello(a int) int {c := a + 2return c } $ GOOS=linux GOARCH=amd64 go tool compile -S hello.go "".hello STEXT nosplit size=15 args=0x10 locals=0x00x0000 00000 (main.go:3) TEXT "".hello(SB), NOSPLIT, $0-160x0000 00000 (main.go:3) FUNCDATA $0, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)0x0000 00000 (main.go:3) FUNCDATA $1, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)0x0000 00000 (main.go:3) FUNCDATA $3, gclocals·33cdeccccebe80329f1fdbee7f5874cb(SB)0x0000 00000 (main.go:4) PCDATA $2, $00x0000 00000 (main.go:4) PCDATA $0, $00x0000 00000 (main.go:4) MOVQ "".a+8(SP), AX0x0005 00005 (main.go:4) ADDQ $2, AX0x0009 00009 (main.go:5) MOVQ AX, "".~r1+16(SP)0x000e 00014 (main.go:5) RET0x0000 48 8b 44 24 08 48 83 c0 02 48 89 44 24 10 c3 H.D$.H...H.D$.. ...

上述匯編代碼都是由?cmd/internal/obj.Flushplist?這個函數生成的,該函數會調用架構特定的?Preprocess?和?Assemble?方法:

func Flushplist(ctxt *Link, plist *Plist, newprog ProgAlloc, myimportpath string) {...for _, s := range text {mkfwd(s)linkpatch(ctxt, s, newprog)ctxt.Arch.Preprocess(ctxt, s, newprog)ctxt.Arch.Assemble(ctxt, s, newprog)linkpcln(ctxt, s)ctxt.populateDWARF(plist.Curfn, s, myimportpath)} }

Go 編譯器會在最外層的主函數確定調用的?Preprocess?和?Assemble?方法,編譯器在 2.1.4 中提到的?cmd/compile.archInits?中根據目標硬件初始化當前架構使用的配置。

如果目標機器的架構是 x86,那么這兩個函數最終會使用?cmd/internal/obj/x86.preprocess?和?cmd/internal/obj/x86.span6,作者在這里就不展開介紹這兩個特別復雜的底層函數了,有興趣的讀者可以通過鏈接找到目標函數的位置了解預處理和匯編的處理過程,機器碼的生成也都是由這兩個函數組合完成的。

小結?#

機器碼生成作為 Go 語言編譯的最后一步,其實已經到了硬件和機器指令這一層,其中對于內存、寄存器的處理非常復雜并且難以閱讀,想要真正掌握這里的處理的步驟和原理還是需要耗費很多精力。

作為軟件工程師,如果不是 Go 語言編譯器的開發者或者需要經常處理匯編語言和機器指令,掌握這些知識的投資回報率實在太低,我們只需要對這個過程有所了解,補全知識上的盲點,在遇到問題時能夠快速定位即可。

延伸閱讀?#

  • A Manual for the Plan 9 assembler


  • Instruction set architecture?https://en.wikipedia.org/wiki/Instruction_set_architecture???

  • 復雜指令集 Complex instruction set computer?https://en.wikipedia.org/wiki/Complex_instruction_set_computer???

  • 精簡指令集 Reduced instruction set computer?https://en.wikipedia.org/wiki/Reduced_instruction_set_computer???

  • Introduction to the Go compiler?go/README.md at master · golang/go · GitHub???

  • A Quick Guide to Go’s Assembler?https://golang.org/doc/asm???

  • 二、詞法和語法分析

    當使用通用編程語言1進行編寫代碼時,我們一定要認識到代碼首先是寫給人看的,只是恰好可以被機器編譯和執行,而很難被人理解和維護的代碼是非常糟糕。代碼其實是按照約定格式編寫的字符串,經過訓練的軟件工程師能對本來無意義的字符串進行分組和分析,按照約定的語法來理解源代碼,并在腦內編譯并運行程序。

    既然工程師能夠按照一定的方式理解和編譯 Go 語言的源代碼,那么我們如何模擬人理解源代碼的方式構建一個能夠分析編程語言代碼的程序呢。我們在這一節中將介紹詞法分析和語法分析這兩個重要的編譯過程,這兩個過程能將原本機器看來無序意義的源文件轉換成更容易理解、分析并且結構化的抽象語法樹,接下來我們就看一看解析器眼中的 Go 語言是什么樣的。

    2.2.1 詞法分析?#

    源代碼在計算機『眼中』其實是一團亂麻,一個由字符組成的、無法被理解的字符串,所有的字符在計算器看來并沒有什么區別,為了理解這些字符我們需要做的第一件事情就是將字符串分組,這能夠降低理解字符串的成本,簡化源代碼的分析過程。

    make(chan int)

    哪怕是不懂編程的人看到上述文本的第一反應也應該會將上述字符串分成幾個部分 -?make、chan、int?和括號,這個憑直覺分解文本的過程就是詞法分析,詞法分析是將字符序列轉換為標記(token)序列的過程2。

    lex?#

    lex3?是用于生成詞法分析器的工具,lex 生成的代碼能夠將一個文件中的字符分解成 Token 序列,很多語言在設計早期都會使用它快速設計出原型。詞法分析作為具有固定模式的任務,出現這種更抽象的工具必然的,lex 作為一個代碼生成器,使用了類似 C 語言的語法,我們將 lex 理解為正則匹配的生成器,它會使用正則匹配掃描輸入的字符流,下面是一個 lex 文件的示例:

    %{ #include <stdio.h> %}%% package printf("PACKAGE "); import printf("IMPORT "); \. printf("DOT "); \{ printf("LBRACE "); \} printf("RBRACE "); \( printf("LPAREN "); \) printf("RPAREN "); \" printf("QUOTE "); \n printf("\n"); [0-9]+ printf("NUMBER "); [a-zA-Z_]+ printf("IDENT "); %%

    這個定義好的文件能夠解析?package?和?import?關鍵字、常見的特殊字符、數字以及標識符,雖然這里的規則可能有一些簡陋和不完善,但是用來解析下面的這一段代碼還是比較輕松的:

    package mainimport ("fmt" )func main() {fmt.Println("Hello") }

    .l?結尾的 lex 代碼并不能直接運行,我們首先需要通過?lex?命令將上面的?simplego.l?展開成 C 語言代碼,這里可以直接執行如下所示的命令編譯并打印文件中的內容:

    $ lex simplego.l $ cat lex.yy.c ... int yylex (void) {...while ( 1 ) {... yy_match:do {register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];if ( yy_accept[yy_current_state] ) {(yy_last_accepting_state) = yy_current_state;(yy_last_accepting_cpos) = yy_cp;}while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) {yy_current_state = (int) yy_def[yy_current_state];if ( yy_current_state >= 30 )yy_c = yy_meta[(unsigned int) yy_c];}yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];++yy_cp;} while ( yy_base[yy_current_state] != 37 );...do_action:switch ( yy_act )case 0:...case 1:YY_RULE_SETUPprintf("PACKAGE ");YY_BREAK... }

    lex.yy.c4?的前 600 行基本都是宏和函數的聲明和定義,后面生成的代碼大都是為?yylex?這個函數服務的,這個函數使用有限自動機(Deterministic Finite Automaton、DFA)5的程序結構來分析輸入的字符流,上述代碼中?while?循環就是這個有限自動機的主體,你如果仔細看這個文件生成的代碼會發現當前的文件中并不存在?main?函數,main?函數是在 liblex 庫中定義的,所以在編譯時其實需要添加額外的?-ll?選項:

    $ cc lex.yy.c -o simplego -ll $ cat main.go | ./simplego

    當我們將 C 語言代碼通過 gcc 編譯成二進制代碼之后,就可以使用管道將上面提到的 Go 語言代碼作為輸入傳遞到生成的詞法分析器中,這個詞法分析器會打印出如下的內容:

    PACKAGE IDENTIMPORT LPARENQUOTE IDENT QUOTE RPARENIDENT IDENT LPAREN RPAREN LBRACEIDENT DOT IDENT LPAREN QUOTE IDENT QUOTE RPAREN RBRACE

    從上面的輸出我們能夠看到 Go 源代碼的影子,lex 生成的詞法分析器 lexer 通過正則匹配的方式將機器原本很難理解的字符串進行分解成很多的 Token,有利于后面的處理。

    圖 ?從 .l 文件到二進制

    到這里我們已經為各位讀者展示了從定義?.l?文件、使用 lex 將?.l?文件編譯成 C 語言代碼以及二進制的全過程,而最后生成的詞法分析器也能夠將簡單的 Go 語言代碼進行轉換成 Token 序列。lex 的使用還是比較簡單的,我們可以使用它快速實現詞法分析器,相信各位讀者對它也有了一定的了解。

    Go?#

    Go 語言的詞法解析是通過?src/cmd/compile/internal/syntax/scanner.go6?文件中的?cmd/compile/internal/syntax.scanner?結構體實現的,這個結構體會持有當前掃描的數據源文件、啟用的模式和當前被掃描到的 Token:

    type scanner struct {sourcemode uintnlsemi bool// current token, valid after calling next()line, col uintblank bool // line is blank up to coltok tokenlit string // valid if tok is _Name, _Literal, or _Semi ("semicolon", "newline", or "EOF"); may be malformed if bad is truebad bool // valid if tok is _Literal, true if a syntax error occurred, lit may be malformedkind LitKind // valid if tok is _Literalop Operator // valid if tok is _Operator, _AssignOp, or _IncOpprec int // valid if tok is _Operator, _AssignOp, or _IncOp }

    src/cmd/compile/internal/syntax/tokens.go7?文件中定義了 Go 語言中支持的全部 Token 類型,所有的?token?類型都是正整數,你可以在這個文件中找到一些常見 Token 的定義,例如:操作符、括號和關鍵字等:

    const (_ token = iota_EOF // EOF// operators and operations_Operator // op...// delimiters_Lparen // (_Lbrack // [...// keywords_Break // break..._Type // type_Var // vartokenCount // )

    從 Go 語言中定義的 Token 類型,我們可以將語言中的元素分成幾個不同的類別,分別是名稱和字面量、操作符、分隔符和關鍵字。詞法分析主要是由?cmd/compile/internal/syntax.scanner?這個結構體中的?cmd/compile/internal/syntax.scanner.next?方法驅動,這個 250 行函數的主體是一個 switch/case 結構:

    func (s *scanner) next() {...s.stop()startLine, startCol := s.pos()for s.ch == ' ' || s.ch == '\t' || s.ch == '\n' && !nlsemi || s.ch == '\r' {s.nextch()}s.line, s.col = s.pos()s.blank = s.line > startLine || startCol == colbases.start()if isLetter(s.ch) || s.ch >= utf8.RuneSelf && s.atIdentChar(true) {s.nextch()s.ident()return}switch s.ch {case -1:s.tok = _EOFcase '0', '1', '2', '3', '4', '5', '6', '7', '8', '9':s.number(false)...} }

    cmd/compile/internal/syntax.scanner?每次都會通過?cmd/compile/internal/syntax.source.nextch?函數獲取文件中最近的未被解析的字符,然后根據當前字符的不同執行不同的 case,如果遇到了空格和換行符這些空白字符會直接跳過,如果當前字符是 0 就會執行?cmd/compile/internal/syntax.scanner.number?方法嘗試匹配一個數字。

    func (s *scanner) number(seenPoint bool) {kind := IntLitbase := 10 // number basedigsep := 0invalid := -1 // index of invalid digit in literal, or < 0s.kind = IntLitif !seenPoint {digsep |= s.digits(base, &invalid)}s.setLit(kind, ok) }func (s *scanner) digits(base int, invalid *int) (digsep int) {max := rune('0' + base)for isDecimal(s.ch) || s.ch == '_' {ds := 1if s.ch == '_' {ds = 2} else if s.ch >= max && *invalid < 0 {_, col := s.pos()*invalid = int(col - s.col) // record invalid rune index}digsep |= dss.nextch()}return }

    上述的?cmd/compile/internal/syntax.scanner.number?方法省略了很多的代碼,包括如何匹配浮點數、指數和復數,我們只是簡單看一下詞法分析匹配整數的邏輯:在 for 循環中不斷獲取最新的字符,將字符通過?cmd/compile/internal/syntax.source.nextch?方法追加到?cmd/compile/internal/syntax.scanner?持有的緩沖區中;

    當前包中的詞法分析器?cmd/compile/internal/syntax.scanner?也只是為上層提供了?cmd/compile/internal/syntax.scanner.next?方法,詞法解析的過程都是惰性的,只有在上層的解析器需要時才會調用?cmd/compile/internal/syntax.scanner.next?獲取最新的 Token。

    Go 語言的詞法元素相對來說還是比較簡單,使用這種巨大的 switch/case 進行詞法解析也比較方便和順手,早期的 Go 語言雖然使用 lex 這種工具來生成詞法解析器,但是最后還是使用 Go 來實現詞法分析器,用自己寫的詞法分析器來解析自己8。

    ?語法分析?#

    語法分析是根據某種特定的形式文法(Grammar)對 Token 序列構成的輸入文本進行分析并確定其語法結構的過程9。從上面的定義來看,詞法分析器輸出的結果 — Token 序列是語法分析器的輸入。

    語法分析的過程會使用自頂向下或者自底向上的方式進行推導,在介紹 Go 語言語法分析之前,我們會先來介紹語法分析中的文法和分析方法。

    文法?#

    上下文無關文法是用來形式化、精確描述某種編程語言的工具,我們能夠通過文法定義一種語言的語法,它主要包含一系列用于轉換字符串的生產規則(Production rule)10。上下文無關文法中的每一個生產規則都會將規則左側的非終結符轉換成右側的字符串,文法都由以下的四個部分組成:

    終結符是文法中無法再被展開的符號,而非終結符與之相反,還可以通過生產規則進行展開,例如 “id”、“123” 等標識或者字面量11。

    • 𝑁N?有限個非終結符的集合;
    • ΣΣ?有限個終結符的集合;
    • 𝑃P?有限個生產規則12的集合;
    • 𝑆S?非終結符集合中唯一的開始符號;

    文法被定義成一個四元組?(𝑁,Σ,𝑃,𝑆)(N,Σ,P,S),這個元組中的幾部分是上面提到的四個符號,其中最為重要的就是生產規則,每個生產規則都會包含非終結符、終結符或者開始符號,我們在這里可以舉個簡單的例子:

  • 𝑆→𝑎𝑆𝑏S→aSb
  • 𝑆→𝑎𝑏S→ab
  • 𝑆→𝜖S→?
  • 上述規則構成的文法就能夠表示 ab、aabb 以及 aaa..bbb 等字符串,編程語言的文法就是由這一系列的生產規則表示的,在這里我們可以從?src/cmd/compile/internal/syntax/parser.go13?文件中摘抄一些 Go 語言文法的生產規則:

    SourceFile = PackageClause ";" { ImportDecl ";" } { TopLevelDecl ";" } . PackageClause = "package" PackageName . PackageName = identifier .ImportDecl = "import" ( ImportSpec | "(" { ImportSpec ";" } ")" ) . ImportSpec = [ "." | PackageName ] ImportPath . ImportPath = string_lit .TopLevelDecl = Declaration | FunctionDecl | MethodDecl . Declaration = ConstDecl | TypeDecl | VarDecl .

    Go 語言更詳細的文法可以從?Language Specification14?中找到,這里不僅包含語言的文法,還包含詞法元素、內置函數等信息。

    因為每個 Go 源代碼文件最終都會被解析成一個獨立的抽象語法樹,所以語法樹最頂層的結構或者開始符號都是 SourceFile:

    SourceFile = PackageClause ";" { ImportDecl ";" } { TopLevelDecl ";" } .

    從 SourceFile 相關的生產規則我們可以看出,每一個文件都包含一個?package?的定義以及可選的?import?聲明和其他的頂層聲明(TopLevelDecl),每一個 SourceFile 在編譯器中都對應一個?cmd/compile/internal/syntax.File?結構體,你能從它們的定義中輕松找到兩者的聯系:

    type File struct {Pragma PragmaPkgName *NameDeclList []DeclLines uintnode }

    頂層聲明有五大類型,分別是常量、類型、變量、函數和方法,你可以在文件?src/cmd/compile/internal/syntax/parser.go?中找到這五大類型的定義。

    ConstDecl = "const" ( ConstSpec | "(" { ConstSpec ";" } ")" ) . ConstSpec = IdentifierList [ [ Type ] "=" ExpressionList ] .TypeDecl = "type" ( TypeSpec | "(" { TypeSpec ";" } ")" ) . TypeSpec = AliasDecl | TypeDef . AliasDecl = identifier "=" Type . TypeDef = identifier Type .VarDecl = "var" ( VarSpec | "(" { VarSpec ";" } ")" ) . VarSpec = IdentifierList ( Type [ "=" ExpressionList ] | "=" ExpressionList ) .

    上述的文法分別定義了 Go 語言中常量、類型和變量三種常見的結構,從文法中可以看到語言中的很多關鍵字?const、type?和?var,稍微回想一下我們日常接觸的 Go 語言代碼就能驗證這里文法的正確性。

    除了三種簡單的語法結構之外,函數和方法的定義就更加復雜,從下面的文法我們可以看到 Statement 總共可以轉換成 15 種不同的語法結構,這些語法結構就包括我們經常使用的 switch/case、if/else、for 循環以及 select 等語句:

    FunctionDecl = "func" FunctionName Signature [ FunctionBody ] . FunctionName = identifier . FunctionBody = Block .MethodDecl = "func" Receiver MethodName Signature [ FunctionBody ] . Receiver = Parameters .Block = "{" StatementList "}" . StatementList = { Statement ";" } .Statement =Declaration | LabeledStmt | SimpleStmt |GoStmt | ReturnStmt | BreakStmt | ContinueStmt | GotoStmt |FallthroughStmt | Block | IfStmt | SwitchStmt | SelectStmt | ForStmt |DeferStmt .SimpleStmt = EmptyStmt | ExpressionStmt | SendStmt | IncDecStmt | Assignment | ShortVarDecl .

    這些不同的語法結構共同定義了 Go 語言中能夠使用的語法結構和表達式,對于 Statement 展開的更多內容這篇文章就不會詳細介紹了,感興趣的讀者可以直接查看?Go 語言說明書或者直接從?src/cmd/compile/internal/syntax/parser.go?文件中找到想要的答案。

    分析方法?#

    語法分析的分析方法一般分為自頂向下和自底向上兩種,這兩種方式會使用不同的方式對輸入的 Token 序列進行推導:

    • 自頂向下分析:可以被看作找到當前輸入流最左推導的過程,對于任意一個輸入流,根據當前的輸入符號,確定一個生產規則,使用生產規則右側的符號替代相應的非終結符向下推導15;
    • 自底向上分析:語法分析器從輸入流開始,每次都嘗試重寫最右側的多個符號,這其實是說解析器會從最簡單的符號進行推導,在解析的最后合并成開始符號16;

    如果讀者無法理解上述的定義也沒有關系,我們會在這一節的剩余部分介紹兩種不同的分析方法以及它們的具體分析過程。

    自頂向下?#

    LL 文法17是一種使用自頂向下分析方法的文法,下面給出了一個常見的 LL 文法:

  • 𝑆→𝑎𝑆1S→aS1
  • 𝑆1→𝑏𝑆1S1→bS1
  • 𝑆1→𝜖S1→?
  • 假設我們存在以上的生產規則和輸入流 abb,如果這里使用自頂向下的方式進行語法分析,我們可以理解為每次解析器會通過新加入的字符判斷應該使用什么方式展開當前的輸入流:

  • 𝑆S?(開始符號)
  • 𝑎𝑆1aS1(規則 1)
  • 𝑎𝑏𝑆1abS1(規則 2)
  • 𝑎𝑏𝑏𝑆1abbS1(規則 2)
  • 𝑎𝑏𝑏abb(規則 3)
  • 這種分析方法一定會從開始符號分析,通過下一個即將入棧的符號判斷應該如何對當前堆棧中最右側的非終結符(𝑆S?或?𝑆1S1)進行展開,直到整個字符串中不存在任何的非終結符,整個解析過程才會結束。

    自底向上?#

    但是如果我們使用自底向上的方式對輸入流進行分析時,處理過程就會完全不同了,常見的四種文法 LR(0)、SLR、LR(1) 和 LALR(1) 使用了自底向上的處理方式18,我們可以簡單寫一個與上一節中效果相同的 LR(0) 文法:

  • 𝑆→𝑆1S→S1
  • 𝑆1→𝑆1𝑏S1→S1b
  • 𝑆1→𝑎S1→a
  • 使用上述等效的文法處理同樣地輸入流 abb 會使用完全不同的過程對輸入流進行展開:

  • 𝑎a(入棧)
  • 𝑆1S1(規則 3)
  • 𝑆1𝑏S1b(入棧)
  • 𝑆1S1(規則 2)
  • 𝑆1𝑏S1b(入棧)
  • 𝑆1S1(規則 2)
  • 𝑆S(規則 1)
  • 自底向上的分析過程會維護一個棧用于存儲未被歸約的符號,在整個過程中會執行兩種不同的操作,一種叫做入棧(Shift),也就是將下一個符號入棧,另一種叫做歸約(Reduce),也就是對最右側的字符串按照生產規則進行合并。

    上述的分析過程和自頂向下的分析方法完全不同,這兩種不同的分析方法其實也代表了計算機科學中兩種不同的思想 — 從抽象到具體和從具體到抽象。

    Lookahead?#

    在語法分析中除了 LL 和 LR 這兩種不同類型的語法分析方法之外,還存在另一個非常重要的概念,就是向前查看(Lookahead),在不同生產規則發生沖突時,當前解析器需要通過預讀一些 Token 判斷當前應該用什么生產規則對輸入流進行展開或者歸約19,例如在 LALR(1) 文法中,需要預讀一個 Token 保證出現沖突的生產規則能夠被正確處理。

    Go?#

    Go 語言的解析器使用了 LALR(1) 的文法來解析詞法分析過程中輸出的 Token 序列20,最右推導加向前查看構成了 Go 語言解析器的最基本原理,也是大多數編程語言的選擇。

    我們在概述中已經介紹了編譯器的主函數,該函數調用的?cmd/compile/internal/gc.parseFiles?會使用多個 Goroutine 來解析源文件,解析的過程會調用?cmd/compile/internal/syntax.Parse,該函數初始化了一個新的?cmd/compile/internal/syntax.parser?結構體并通過?cmd/compile/internal/syntax.parser.fileOrNil?方法開啟對當前文件的詞法和語法解析:

    func Parse(base *PosBase, src io.Reader, errh ErrorHandler, pragh PragmaHandler, mode Mode) (_ *File, first error) {var p parserp.init(base, src, errh, pragh, mode)p.next()return p.fileOrNil(), p.first }

    cmd/compile/internal/syntax.parser.fileOrNil?方法其實是對上面介紹的 Go 語言文法的實現,該方法首先會解析文件開頭的?package?定義:

    // SourceFile = PackageClause ";" { ImportDecl ";" } { TopLevelDecl ";" } . func (p *parser) fileOrNil() *File {f := new(File)f.pos = p.pos()if !p.got(_Package) {p.syntaxError("package statement must be first")return nil}f.PkgName = p.name()p.want(_Semi)

    從上面的這一段方法中我們可以看出,當前方法會通過?cmd/compile/internal/syntax.parser.got?來判斷下一個 Token 是不是?package?關鍵字,如果是?package?關鍵字,就會執行?cmd/compile/internal/syntax.parser.name?來匹配一個包名并將結果保存到返回的文件結構體中。

    for p.got(_Import) {f.DeclList = p.appendGroup(f.DeclList, p.importDecl)p.want(_Semi)}

    確定了當前文件的包名之后,就開始解析可選的?import?聲明,每一個?import?在解析器看來都是一個聲明語句,這些聲明語句都會被加入到文件的?DeclList?中。

    在這之后會根據編譯器獲取的關鍵字進入 switch 的不同分支,這些分支調用?cmd/compile/internal/syntax.parser.appendGroup?方法并在方法中傳入用于處理對應類型語句的?cmd/compile/internal/syntax.parser.constDecl、cmd/compile/internal/syntax.parser.typeDecl?函數。

    for p.tok != _EOF {switch p.tok {case _Const:p.next()f.DeclList = p.appendGroup(f.DeclList, p.constDecl)case _Type:p.next()f.DeclList = p.appendGroup(f.DeclList, p.typeDecl)case _Var:p.next()f.DeclList = p.appendGroup(f.DeclList, p.varDecl)case _Func:p.next()if d := p.funcDeclOrNil(); d != nil {f.DeclList = append(f.DeclList, d)}default:...}}f.Lines = p.source.linereturn f }

    cmd/compile/internal/syntax.parser.fileOrNil?使用了非常多的子方法對輸入的文件進行語法分析,并在最后會返回文件開始創建的?cmd/compile/internal/syntax.File?結構體。

    讀到這里的人可能會有一些疑惑,為什么沒有看到詞法分析的代碼,這是因為詞法分析器?cmd/compile/internal/syntax.scanner?作為結構體被嵌入到了?cmd/compile/internal/syntax.parser?中,所以這個方法中的?p.next()?實際上調用的是?cmd/compile/internal/syntax.scanner.next?方法,它會直接獲取文件中的下一個 Token,所以詞法和語法分析一起進行的。

    cmd/compile/internal/syntax.parser.fileOrNil?與在這個方法中執行的其他子方法共同構成了一棵樹,這棵樹根節點是?cmd/compile/internal/syntax.parser.fileOrNil,子節點是?cmd/compile/internal/syntax.parser.importDecl、cmd/compile/internal/syntax.parser.constDecl?等方法,它們與 Go 語言文法中的生產規則一一對應。

    圖 2-8 Go 語言解析器的方法

    cmd/compile/internal/syntax.parser.fileOrNil、cmd/compile/internal/syntax.parser.constDecl?等方法對應了 Go 語言中的生產規則,例如?cmd/compile/internal/syntax.parser.fileOrNil?實現的是:

    SourceFile = PackageClause ";" { ImportDecl ";" } { TopLevelDecl ";" } .

    我們根據這個規則能很好地理解語法分析器的實現原理 - 將編程語言的所有生產規則映射到對應的方法上,這些方法構成的樹形結構最終會返回一個抽象語法樹。

    因為大多數方法的實現都非常相似,所以這里就僅介紹?cmd/compile/internal/syntax.parser.fileOrNil?方法的實現了,想要了解其他方法的實現原理,讀者可以自行查看?src/cmd/compile/internal/syntax/parser.go?文件,該文件包含了語法分析階段的全部方法。

    輔助方法?#

    雖然這里不會展開介紹其他類似方法的實現,但是解析器運行過程中有幾個輔助方法我們還是要簡單說明一下,首先就是?cmd/compile/internal/syntax.parser.got?和?cmd/compile/internal/syntax.parser.want?這兩個常見的方法:

    func (p *parser) got(tok token) bool {if p.tok == tok {p.next()return true}return false }func (p *parser) want(tok token) {if !p.got(tok) {p.syntaxError("expecting " + tokstring(tok))p.advance()} }

    cmd/compile/internal/syntax.parser.got?只是用于快速判斷一些語句中的關鍵字,如果當前解析器中的 Token 是傳入的 Token 就會直接跳過該 Token 并返回?true;而?cmd/compile/internal/syntax.parser.want?就是對?cmd/compile/internal/syntax.parser.got?的簡單封裝了,如果當前 Token 不是我們期望的,就會立刻返回語法錯誤并結束這次編譯。

    這兩個方法的引入能夠幫助工程師在上層減少判斷關鍵字的大量重復邏輯,讓上層語法分析過程的實現更加清晰。

    另一個方法?cmd/compile/internal/synctax.parser.appendGroup?的實現就稍微復雜了一點,它的主要作用就是找出批量的定義,我們可以簡單舉一個例子:

    var (a intb int )

    這兩個變量其實屬于同一個組(Group),各種頂層定義的結構體?cmd/compile/internal/syntax.parser.constDecl、cmd/compile/internal/syntax.parser.varDecl?在進行語法分析時有一個額外的參數?cmd/compile/internal/syntax.Group,這個參數是通過?cmd/compile/internal/syntax.parser.appendGroup?方法傳遞進去的:

    func (p *parser) appendGroup(list []Decl, f func(*Group) Decl) []Decl {if p.tok == _Lparen {g := new(Group)p.list(_Lparen, _Semi, _Rparen, func() bool {list = append(list, f(g))return false})} else {list = append(list, f(nil))}return list }

    cmd/compile/internal/syntax.parser.appendGroup?方法會調用傳入的?f?方法對輸入流進行匹配并將匹配的結果追加到另一個參數?cmd/compile/internal/syntax.File?結構體中的?DeclList?數組中,import、const、var、type?和?func?聲明語句都是調用?cmd/compile/internal/syntax.parser.appendGroup?方法解析的。

    節點?#

    語法分析器最終會使用不同的結構體來構建抽象語法樹中的節點,其中根節點?cmd/compile/internal/syntax.File?我們已經在上面介紹過了,其中包含了當前文件的包名、所有聲明結構的列表和文件的行數:

    type File struct {Pragma PragmaPkgName *NameDeclList []DeclLines uintnode }

    src/cmd/compile/internal/syntax/nodes.go?文件中也定義了其他節點的結構體,其中包含全部聲明類型的,這里簡單看一下函數聲明的結構:

    type (Decl interface {NodeaDecl()}FuncDecl struct {Attr map[string]boolRecv *FieldName *NameType *FuncTypeBody *BlockStmtPragma Pragmadecl} }

    從函數定義中我們可以看出,函數在語法結構上主要由接受者、函數名、函數類型和函數體幾個部分組成,函數體?cmd/compile/internal/syntax.BlockStmt?是由一系列的表達式組成的,這些表達式共同組成了函數的主體:

    圖 2-9 Go 語言函數定義的結構體

    函數的主體其實是一個?cmd/compile/internal/syntax.Stmt?數組,cmd/compile/internal/syntax.Stmt?是一個接口,實現該接口的類型其實也非常多,總共有 14 種不同類型的?cmd/compile/internal/syntax.Stmt?實現:

    圖 2-9 Go 語言的 14 種聲明

    這些不同類型的?cmd/compile/internal/syntax.Stmt?構成了全部命令式的 Go 語言代碼,從中我們可以看到很多熟悉的控制結構,例如 if、for、switch 和 select,這些命令式的結構在其他的編程語言中也非常常見。

    2.2.3 小結?#

    這一節介紹了 Go 語言的詞法分析和語法分析過程,我們不僅從理論的層面介紹了詞法和語法分析的原理,還從源代碼出發詳細分析 Go 語言的編譯器是如何在底層實現詞法和語法解析功能的。

    了解 Go 語言的詞法分析器?cmd/compile/internal/syntax.scanner?和語法分析器?cmd/compile/internal/syntax.parser?讓我們對解析器處理源代碼的過程有著比較清楚的認識,同時我們也在 Go 語言的文法和語法分析器中找到了熟悉的關鍵字和語法結構,加深了對 Go 語言的理解。

    2.2.4 延伸閱讀?#

    • Lexical Scanning in Go - Rob Pike


  • 通用編程語言 General-purpose programming language?https://en.wikipedia.org/wiki/General-purpose_programming_language???

  • 詞法分析 Lexical analysis?https://en.wikipedia.org/wiki/Lexical_analysis???

  • 詞法分析生成器?Lex - A Lexical Analyzer Generator???

  • 生成的 simplego.lex.c 文件?https://gist.github.com/draveness/85db6ec4a4088b63ccccf7f09424f474???

  • 有限自動機 DFA?https://en.wikipedia.org/wiki/Deterministic_finite_automaton???

  • go/scanner.go at master · golang/go · GitHub???

  • go/tokens.go at master · golang/go · GitHub???

  • Go 1.5 Bootstrap Plan?https://docs.google.com/document/d/1OaatvGhEAq7VseQ9kkavxKNAfepWy2yhPUBs96FGV28/edit???

  • 語法分析 Syntactic analysis?https://en.wikipedia.org/wiki/Parsing???

  • https://en.wikipedia.org/wiki/Context-free_grammar???

  • 終結符和非終結符?https://en.wikipedia.org/wiki/Terminal_and_nonterminal_symbols???

  • 生產規則在計算機科學領域是符號替換的重寫規則,S -> aSb 就是可以用右側的 aSb 將左側的符號進行展開?https://en.wikipedia.org/wiki/Production_(computer_science)???

  • go/parser.go at master · golang/go · GitHub???

  • The Go Programming Language Specification?https://golang.org/ref/spec???

  • 自頂向下解析?https://en.wikipedia.org/wiki/Top-down_parsing???

  • 自底向上解析?https://en.wikipedia.org/wiki/Bottom-up_parsing???

  • LL 文法是一種上下文無關文法,可以使用 LL 解析器解析?https://en.wikipedia.org/wiki/LL_grammar???

  • LR 解析器是一種自底向上的解析器,它有很多 SLR、LALR、等變種?https://en.wikipedia.org/wiki/LR_parser???

  • https://en.wikipedia.org/wiki/Lookahead???

  • 關于 Go 語言文法的討論?https://groups.google.com/forum/#!msg/golang-nuts/jVjbH2-emMQ/UdZlSNhd3DwJ???

  • 關于 GO 語言的類型檢查可參見:Go 語言如何進行類型檢查 | Go 語言設計與實現?

    關于 GO 語言的中間代碼生成可參見:詳解 Go 語言中間代碼生成 | Go 語言設計與實現

    ?關于 GO 語言的機器碼生成可參見:指令集架構、機器碼與 Go 語言 | Go 語言設計與實現

    轉載自:?Go 語言編譯過程概述 | Go 語言設計與實現?

    總結

    以上是生活随笔為你收集整理的(四)Go 语言编译流程简述的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    麻豆精品国产精华精华液好用吗 | 亚洲中文无码av永久不收费 | 久久综合激激的五月天 | 97久久国产亚洲精品超碰热 | 国产两女互慰高潮视频在线观看 | 日本精品久久久久中文字幕 | 无码人妻丰满熟妇区毛片18 | 久久99精品久久久久久 | 国产激情艳情在线看视频 | 亚洲中文字幕乱码av波多ji | 中文字幕中文有码在线 | 日本护士xxxxhd少妇 | 女人色极品影院 | 久久久无码中文字幕久... | 久久 国产 尿 小便 嘘嘘 | 日本一区二区更新不卡 | 中文字幕乱码中文乱码51精品 | 国产亚洲欧美日韩亚洲中文色 | 国产两女互慰高潮视频在线观看 | 最近的中文字幕在线看视频 | 国内精品一区二区三区不卡 | av小次郎收藏 | a在线亚洲男人的天堂 | 欧美性生交活xxxxxdddd | 又色又爽又黄的美女裸体网站 | 久久国产精品精品国产色婷婷 | 中文精品久久久久人妻不卡 | 欧洲熟妇精品视频 | 人人妻人人澡人人爽精品欧美 | 青青青爽视频在线观看 | 国产精品毛片一区二区 | 任你躁在线精品免费 | 成人性做爰aaa片免费看 | 色欲久久久天天天综合网精品 | 无码精品人妻一区二区三区av | 精品国产麻豆免费人成网站 | 欧美日韩色另类综合 | 午夜丰满少妇性开放视频 | 亚欧洲精品在线视频免费观看 | 人人妻人人澡人人爽精品欧美 | 真人与拘做受免费视频一 | 图片区 小说区 区 亚洲五月 | 内射白嫩少妇超碰 | 无码人妻久久一区二区三区不卡 | 亚洲毛片av日韩av无码 | 东京一本一道一二三区 | 亚洲乱亚洲乱妇50p | 欧美老熟妇乱xxxxx | 丝袜 中出 制服 人妻 美腿 | a在线亚洲男人的天堂 | 中文字幕无码av激情不卡 | 日日摸日日碰夜夜爽av | 亚洲s码欧洲m码国产av | 帮老师解开蕾丝奶罩吸乳网站 | 水蜜桃色314在线观看 | 国产偷国产偷精品高清尤物 | 久精品国产欧美亚洲色aⅴ大片 | 少妇性荡欲午夜性开放视频剧场 | 成人无码精品一区二区三区 | 兔费看少妇性l交大片免费 | 色欲人妻aaaaaaa无码 | 宝宝好涨水快流出来免费视频 | 对白脏话肉麻粗话av | 欧美第一黄网免费网站 | 内射巨臀欧美在线视频 | 麻豆av传媒蜜桃天美传媒 | 国产免费久久精品国产传媒 | 精品人人妻人人澡人人爽人人 | 女人高潮内射99精品 | 国产香蕉尹人综合在线观看 | 国产乱人伦偷精品视频 | 亚洲成色www久久网站 | aⅴ在线视频男人的天堂 | 天天拍夜夜添久久精品 | 纯爱无遮挡h肉动漫在线播放 | 亚洲精品欧美二区三区中文字幕 | 亚洲第一无码av无码专区 | 久久精品人妻少妇一区二区三区 | 国产亚洲欧美日韩亚洲中文色 | 熟妇人妻无乱码中文字幕 | 亚洲精品国偷拍自产在线观看蜜桃 | 亚洲精品午夜国产va久久成人 | 国产av一区二区精品久久凹凸 | 无人区乱码一区二区三区 | 综合网日日天干夜夜久久 | 女高中生第一次破苞av | 夜夜影院未满十八勿进 | 色综合久久中文娱乐网 | 又紧又大又爽精品一区二区 | 女人高潮内射99精品 | 亚洲人交乣女bbw | 久久国内精品自在自线 | 国产精品免费大片 | 日本一区二区三区免费高清 | 牲欲强的熟妇农村老妇女视频 | 亚洲无人区一区二区三区 | 国产精品资源一区二区 | 久久久无码中文字幕久... | 亚洲中文字幕在线无码一区二区 | 亚洲无人区午夜福利码高清完整版 | 99riav国产精品视频 | 日日碰狠狠丁香久燥 | 一二三四在线观看免费视频 | 综合网日日天干夜夜久久 | 亚洲国产精品久久久天堂 | 一本精品99久久精品77 | 最近中文2019字幕第二页 | 国产三级久久久精品麻豆三级 | 欧美一区二区三区 | 欧美激情内射喷水高潮 | 国产精品无码成人午夜电影 | 亚洲精品无码人妻无码 | 国产日产欧产精品精品app | 久久这里只有精品视频9 | 亚洲啪av永久无码精品放毛片 | 欧美午夜特黄aaaaaa片 | 内射白嫩少妇超碰 | 久久久精品成人免费观看 | 日产精品高潮呻吟av久久 | 亚洲小说春色综合另类 | 日本精品少妇一区二区三区 | 日本精品高清一区二区 | 国内丰满熟女出轨videos | 中文字幕亚洲情99在线 | 亚洲国产一区二区三区在线观看 | 麻花豆传媒剧国产免费mv在线 | 5858s亚洲色大成网站www | 国产精品人妻一区二区三区四 | 欧美怡红院免费全部视频 | 国产免费观看黄av片 | 丰腴饱满的极品熟妇 | 国产高清av在线播放 | 国产午夜视频在线观看 | 熟女俱乐部五十路六十路av | 国产精品高潮呻吟av久久 | 正在播放东北夫妻内射 | 狂野欧美性猛xxxx乱大交 | 亚洲热妇无码av在线播放 | 日日橹狠狠爱欧美视频 | 国产一区二区三区影院 | 国产人妻久久精品二区三区老狼 | 宝宝好涨水快流出来免费视频 | 蜜臀av在线观看 在线欧美精品一区二区三区 | 丰满妇女强制高潮18xxxx | 久久精品国产99久久6动漫 | 国产精品.xx视频.xxtv | 丰满肥臀大屁股熟妇激情视频 | 国产精品人妻一区二区三区四 | 国产乱人无码伦av在线a | 成人综合网亚洲伊人 | 日本精品高清一区二区 | 纯爱无遮挡h肉动漫在线播放 | 国产国语老龄妇女a片 | 自拍偷自拍亚洲精品被多人伦好爽 | 亚洲成av人综合在线观看 | 极品尤物被啪到呻吟喷水 | 午夜男女很黄的视频 | 欧美真人作爱免费视频 | 偷窥日本少妇撒尿chinese | 精品久久久久久亚洲精品 | 在教室伦流澡到高潮hnp视频 | 欧美阿v高清资源不卡在线播放 | 欧美日韩亚洲国产精品 | 妺妺窝人体色www在线小说 | 日本免费一区二区三区最新 | 国产熟妇高潮叫床视频播放 | 综合网日日天干夜夜久久 | 装睡被陌生人摸出水好爽 | 国产偷自视频区视频 | 男女下面进入的视频免费午夜 | 小泽玛莉亚一区二区视频在线 | 樱花草在线社区www | 在线欧美精品一区二区三区 | 老子影院午夜精品无码 | 亚洲人交乣女bbw | 色窝窝无码一区二区三区色欲 | 精品国产麻豆免费人成网站 | 久久人人爽人人爽人人片av高清 | 成人免费无码大片a毛片 | 帮老师解开蕾丝奶罩吸乳网站 | 久久精品国产99久久6动漫 | 最新国产麻豆aⅴ精品无码 | 精品无人国产偷自产在线 | 漂亮人妻洗澡被公强 日日躁 | 国产午夜福利亚洲第一 | 国产明星裸体无码xxxx视频 | 人妻少妇精品久久 | 无码av岛国片在线播放 | 老熟妇乱子伦牲交视频 | 婷婷五月综合激情中文字幕 | 麻豆成人精品国产免费 | 免费看少妇作爱视频 | 99久久人妻精品免费一区 | 国产精品久久久av久久久 | 久久精品国产大片免费观看 | 成人性做爰aaa片免费看 | 亚洲精品午夜国产va久久成人 | 暴力强奷在线播放无码 | 少妇激情av一区二区 | 国产人妻人伦精品1国产丝袜 | 在线播放亚洲第一字幕 | 十八禁视频网站在线观看 | 国产又粗又硬又大爽黄老大爷视 | 色窝窝无码一区二区三区色欲 | 小sao货水好多真紧h无码视频 | 97资源共享在线视频 | 丝袜美腿亚洲一区二区 | 日本免费一区二区三区最新 | 久久无码中文字幕免费影院蜜桃 | 人妻夜夜爽天天爽三区 | 天堂亚洲免费视频 | 牲交欧美兽交欧美 | 亚洲国产精品久久人人爱 | 正在播放老肥熟妇露脸 | 亚洲爆乳大丰满无码专区 | 蜜桃臀无码内射一区二区三区 | 天天综合网天天综合色 | 麻豆国产人妻欲求不满 | 亚洲成av人综合在线观看 | 国产特级毛片aaaaaaa高清 | 欧美人与禽zoz0性伦交 | 乱中年女人伦av三区 | 色欲人妻aaaaaaa无码 | 精品国产麻豆免费人成网站 | 日本一区二区三区免费播放 | 精品人妻中文字幕有码在线 | 国产超级va在线观看视频 | 精品无人区无码乱码毛片国产 | 强开小婷嫩苞又嫩又紧视频 | 亚洲日韩av一区二区三区四区 | 国产精品久久久一区二区三区 | 久久国语露脸国产精品电影 | 久久国产精品_国产精品 | 免费国产成人高清在线观看网站 | 国产超碰人人爽人人做人人添 | 中文久久乱码一区二区 | аⅴ资源天堂资源库在线 | 日本一本二本三区免费 | 亚洲欧美日韩成人高清在线一区 | 在线亚洲高清揄拍自拍一品区 | 亚洲第一网站男人都懂 | 红桃av一区二区三区在线无码av | 久久久精品456亚洲影院 | 精品久久久久久人妻无码中文字幕 | 18禁止看的免费污网站 | 精品亚洲韩国一区二区三区 | 成人aaa片一区国产精品 | 一本久道久久综合婷婷五月 | 内射爽无广熟女亚洲 | 丰满诱人的人妻3 | 国产亲子乱弄免费视频 | 精品无码av一区二区三区 | 国产人妻久久精品二区三区老狼 | 久久国产精品二国产精品 | 久久久久免费精品国产 | 亚洲国产精品美女久久久久 | 久久婷婷五月综合色国产香蕉 | 98国产精品综合一区二区三区 | 蜜臀av无码人妻精品 | 国产成人一区二区三区别 | 久久熟妇人妻午夜寂寞影院 | 免费无码一区二区三区蜜桃大 | 少妇性l交大片欧洲热妇乱xxx | 中文字幕乱妇无码av在线 | 亚洲国产av美女网站 | 久久久精品欧美一区二区免费 | 丰满诱人的人妻3 | 精品欧洲av无码一区二区三区 | 日韩成人一区二区三区在线观看 | 高清国产亚洲精品自在久久 | 国产精品久久久久无码av色戒 | 在线观看免费人成视频 | 国产性生大片免费观看性 | 蜜臀av在线播放 久久综合激激的五月天 | 伊人色综合久久天天小片 | 亚欧洲精品在线视频免费观看 | 国内丰满熟女出轨videos | 亚洲国产精华液网站w | 亚洲综合无码一区二区三区 | 亚洲精品国产精品乱码视色 | 偷窥村妇洗澡毛毛多 | 欧美三级不卡在线观看 | 日欧一片内射va在线影院 | 国产成人综合色在线观看网站 | 日韩欧美群交p片內射中文 | 乱人伦人妻中文字幕无码久久网 | 日本va欧美va欧美va精品 | 国产一区二区三区四区五区加勒比 | 小泽玛莉亚一区二区视频在线 | 2020久久超碰国产精品最新 | 99精品国产综合久久久久五月天 | 欧美日本精品一区二区三区 | 日韩欧美中文字幕在线三区 | 久久久亚洲欧洲日产国码αv | 对白脏话肉麻粗话av | 好男人社区资源 | 强辱丰满人妻hd中文字幕 | 亚洲色欲色欲天天天www | 欧美喷潮久久久xxxxx | 中国大陆精品视频xxxx | 大地资源中文第3页 | 国产成人无码专区 | 天堂亚洲2017在线观看 | 国产又粗又硬又大爽黄老大爷视 | 国产乱人伦偷精品视频 | 55夜色66夜色国产精品视频 | av无码久久久久不卡免费网站 | 无套内射视频囯产 | 高清国产亚洲精品自在久久 | 久久亚洲日韩精品一区二区三区 | 成熟女人特级毛片www免费 | 国色天香社区在线视频 | 波多野结衣乳巨码无在线观看 | 亚洲成a人片在线观看无码 | 欧美亚洲日韩国产人成在线播放 | 日日天干夜夜狠狠爱 | 精品aⅴ一区二区三区 | 久久精品国产亚洲精品 | 久久综合激激的五月天 | 人人爽人人澡人人高潮 | 女高中生第一次破苞av | 人人妻人人澡人人爽人人精品浪潮 | 亚洲色在线无码国产精品不卡 | 日韩人妻无码一区二区三区久久99 | 亚洲aⅴ无码成人网站国产app | 亚洲最大成人网站 | 亚洲精品国产精品乱码不卡 | 国产极品美女高潮无套在线观看 | 人人妻人人澡人人爽欧美一区九九 | 高清国产亚洲精品自在久久 | 精品无码一区二区三区爱欲 | 无码人中文字幕 | 国产无套内射久久久国产 | 少妇无套内谢久久久久 | 成人影院yy111111在线观看 | 樱花草在线社区www | 久久久久久九九精品久 | 日欧一片内射va在线影院 | 中文字幕av日韩精品一区二区 | 亚洲一区二区三区在线观看网站 | 99久久久国产精品无码免费 | 亚洲日本一区二区三区在线 | 精品亚洲韩国一区二区三区 | 99re在线播放 | 中文无码伦av中文字幕 | 精品无码国产一区二区三区av | 亚洲狠狠婷婷综合久久 | 亚洲 欧美 激情 小说 另类 | 精品午夜福利在线观看 | 欧美喷潮久久久xxxxx | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 丰满妇女强制高潮18xxxx | 77777熟女视频在线观看 а天堂中文在线官网 | 少妇性俱乐部纵欲狂欢电影 | 国产精品亚洲а∨无码播放麻豆 | 成人无码影片精品久久久 | 无码人妻丰满熟妇区毛片18 | 亚洲伊人久久精品影院 | 成在人线av无码免费 | 久久久久久国产精品无码下载 | 久久久久亚洲精品中文字幕 | 嫩b人妻精品一区二区三区 | 欧美日本免费一区二区三区 | 大肉大捧一进一出好爽视频 | 美女张开腿让人桶 | 久久精品国产日本波多野结衣 | 亚洲综合久久一区二区 | 日日鲁鲁鲁夜夜爽爽狠狠 | 亚洲а∨天堂久久精品2021 | 波多野结衣乳巨码无在线观看 | 狠狠色噜噜狠狠狠7777奇米 | 国产人成高清在线视频99最全资源 | 正在播放东北夫妻内射 | 日日麻批免费40分钟无码 | 丝袜足控一区二区三区 | 久久久久久久人妻无码中文字幕爆 | 中文字幕中文有码在线 | 免费网站看v片在线18禁无码 | 麻豆国产人妻欲求不满谁演的 | 久久99精品国产.久久久久 | 一本色道久久综合狠狠躁 | 国产日产欧产精品精品app | 国精品人妻无码一区二区三区蜜柚 | 成人无码精品1区2区3区免费看 | 无码福利日韩神码福利片 | 国产免费观看黄av片 | 无码任你躁久久久久久久 | 99久久久无码国产aaa精品 | 在线亚洲高清揄拍自拍一品区 | 少妇人妻av毛片在线看 | 国产性生大片免费观看性 | 又大又硬又黄的免费视频 | 国产99久久精品一区二区 | 精品人人妻人人澡人人爽人人 | 国产精品手机免费 | 天堂在线观看www | 爆乳一区二区三区无码 | 99久久婷婷国产综合精品青草免费 | 亚洲欧美日韩综合久久久 | 国产成人精品优优av | 国产sm调教视频在线观看 | 国产成人综合美国十次 | 亚洲性无码av中文字幕 | 蜜臀av在线播放 久久综合激激的五月天 | 国精品人妻无码一区二区三区蜜柚 | 亚洲日韩av一区二区三区四区 | 日日噜噜噜噜夜夜爽亚洲精品 | 国产精品毛片一区二区 | 宝宝好涨水快流出来免费视频 | 欧美阿v高清资源不卡在线播放 | 国产亚洲人成在线播放 | 国产免费观看黄av片 | 久久久久久久久蜜桃 | 天天做天天爱天天爽综合网 | 久久精品中文闷骚内射 | 三上悠亚人妻中文字幕在线 | 久久久精品456亚洲影院 | 国产人妻久久精品二区三区老狼 | 国产两女互慰高潮视频在线观看 | 欧美怡红院免费全部视频 | 国产精华av午夜在线观看 | 又大又紧又粉嫩18p少妇 | 国产无遮挡吃胸膜奶免费看 | 色偷偷人人澡人人爽人人模 | 国产福利视频一区二区 | 久久精品人人做人人综合试看 | 国产午夜手机精彩视频 | 亚洲色无码一区二区三区 | 国产精品igao视频网 | 国产精品美女久久久久av爽李琼 | 国产在线无码精品电影网 | 国产精品毛多多水多 | 67194成是人免费无码 | 久久久精品成人免费观看 | 国内老熟妇对白xxxxhd | 5858s亚洲色大成网站www | 色妞www精品免费视频 | 国产后入清纯学生妹 | 51国偷自产一区二区三区 | 国产亚洲欧美日韩亚洲中文色 | 国产成人一区二区三区在线观看 | 国产精品理论片在线观看 | 国产成人av免费观看 | 中文字幕无码视频专区 | 成人性做爰aaa片免费看 | 少妇人妻偷人精品无码视频 | 国产超级va在线观看视频 | 国产精品香蕉在线观看 | 大地资源网第二页免费观看 | 伊人久久大香线焦av综合影院 | 99在线 | 亚洲 | 天天做天天爱天天爽综合网 | 国产精品无码mv在线观看 | 成年美女黄网站色大免费全看 | 青青久在线视频免费观看 | 国产人妻精品午夜福利免费 | 一个人看的视频www在线 | av在线亚洲欧洲日产一区二区 | 国产口爆吞精在线视频 | 性生交大片免费看女人按摩摩 | 99久久婷婷国产综合精品青草免费 | 国内丰满熟女出轨videos | 欧美日本精品一区二区三区 | 中文字幕中文有码在线 | 国产真实乱对白精彩久久 | 亚洲一区二区三区四区 | 国产无遮挡又黄又爽免费视频 | 图片区 小说区 区 亚洲五月 | 亚洲一区二区三区在线观看网站 | 国产精品久久精品三级 | 激情国产av做激情国产爱 | 老熟女乱子伦 | 牲欲强的熟妇农村老妇女 | 国产一区二区三区日韩精品 | 欧美 丝袜 自拍 制服 另类 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 欧美一区二区三区视频在线观看 | 久久久久免费精品国产 | 老熟女重囗味hdxx69 | aⅴ亚洲 日韩 色 图网站 播放 | 久久人人爽人人爽人人片ⅴ | 亚洲日本一区二区三区在线 | 国产成人无码一二三区视频 | 在线 国产 欧美 亚洲 天堂 | 亚洲综合另类小说色区 | 男人扒开女人内裤强吻桶进去 | 亚洲成a人片在线观看无码3d | 日本www一道久久久免费榴莲 | 一二三四社区在线中文视频 | 久久国产精品_国产精品 | 午夜免费福利小电影 | 久久99国产综合精品 | 99久久无码一区人妻 | 亚洲国产精品久久人人爱 | 国产成人午夜福利在线播放 | 久久精品中文字幕大胸 | 伊人久久大香线蕉亚洲 | 国产成人无码一二三区视频 | 青青青爽视频在线观看 | 巨爆乳无码视频在线观看 | 国产亚洲人成a在线v网站 | 日本一区二区更新不卡 | 国产亚洲精品久久久久久 | 日产精品高潮呻吟av久久 | 亚洲成av人在线观看网址 | 日本欧美一区二区三区乱码 | 亚洲最大成人网站 | 国模大胆一区二区三区 | 国产成人综合色在线观看网站 | 中文字幕 亚洲精品 第1页 | 国产人妻大战黑人第1集 | 露脸叫床粗话东北少妇 | 在线观看国产一区二区三区 | 亚洲自偷自偷在线制服 | 日韩精品无码一区二区中文字幕 | 国产偷抇久久精品a片69 | 少妇性俱乐部纵欲狂欢电影 | 无码人妻黑人中文字幕 | 国产精品无码永久免费888 | 98国产精品综合一区二区三区 | 又黄又爽又色的视频 | 妺妺窝人体色www在线小说 | 人人妻人人澡人人爽精品欧美 | 国产欧美熟妇另类久久久 | 成年美女黄网站色大免费全看 | 中文无码成人免费视频在线观看 | 无遮挡国产高潮视频免费观看 | 中文字幕亚洲情99在线 | 精品偷自拍另类在线观看 | 久久人人爽人人爽人人片ⅴ | 国产偷抇久久精品a片69 | 国产九九九九九九九a片 | 国产亚洲精品久久久久久久 | 美女扒开屁股让男人桶 | 亚洲午夜无码久久 | 久久久精品国产sm最大网站 | 中文亚洲成a人片在线观看 | 中文字幕 人妻熟女 | 国产熟女一区二区三区四区五区 | 亚洲另类伦春色综合小说 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 蜜臀av无码人妻精品 | yw尤物av无码国产在线观看 | 精品无码成人片一区二区98 | 噜噜噜亚洲色成人网站 | 一个人免费观看的www视频 | 久久久精品成人免费观看 | 久久综合激激的五月天 | 青春草在线视频免费观看 | 又粗又大又硬又长又爽 | 国产精品成人av在线观看 | 国内揄拍国内精品人妻 | 日本护士毛茸茸高潮 | 久久人人97超碰a片精品 | 久久精品一区二区三区四区 | 99久久精品午夜一区二区 | 亚洲欧洲中文日韩av乱码 | 99re在线播放 | 欧美大屁股xxxxhd黑色 | 亚洲欧洲日本综合aⅴ在线 | 国产成人精品一区二区在线小狼 | 无码av免费一区二区三区试看 | 天堂а√在线中文在线 | 国产女主播喷水视频在线观看 | 55夜色66夜色国产精品视频 | 久久久久久a亚洲欧洲av冫 | 婷婷六月久久综合丁香 | 无人区乱码一区二区三区 | 鲁大师影院在线观看 | 亚洲日韩一区二区 | 国产va免费精品观看 | 久青草影院在线观看国产 | 爽爽影院免费观看 | 欧美色就是色 | 午夜精品一区二区三区在线观看 | 久久精品成人欧美大片 | 国产精品久久久一区二区三区 | 丝袜足控一区二区三区 | 熟妇女人妻丰满少妇中文字幕 | 精品久久久无码中文字幕 | 久久伊人色av天堂九九小黄鸭 | 乱人伦人妻中文字幕无码 | 香蕉久久久久久av成人 | 丰满人妻被黑人猛烈进入 | 野外少妇愉情中文字幕 | 国产精品欧美成人 | 日本护士xxxxhd少妇 | 中文字幕精品av一区二区五区 | 亚洲国产精品久久久久久 | 国产熟女一区二区三区四区五区 | 男女爱爱好爽视频免费看 | 精品无码av一区二区三区 | 午夜精品一区二区三区的区别 | 亚洲精品国产精品乱码视色 | 国产精品久久福利网站 | 国产偷自视频区视频 | 国产精品18久久久久久麻辣 | 青青青手机频在线观看 | 漂亮人妻洗澡被公强 日日躁 | 亚洲日本一区二区三区在线 | 爽爽影院免费观看 | 亚洲国产精品美女久久久久 | 亚洲中文无码av永久不收费 | 精品 日韩 国产 欧美 视频 | 强开小婷嫩苞又嫩又紧视频 | 欧美老妇与禽交 | 少妇性荡欲午夜性开放视频剧场 | 国产人妻精品一区二区三区不卡 | 午夜福利试看120秒体验区 | av香港经典三级级 在线 | 免费人成在线视频无码 | av在线亚洲欧洲日产一区二区 | 捆绑白丝粉色jk震动捧喷白浆 | 性生交片免费无码看人 | av无码久久久久不卡免费网站 | 久久久久久a亚洲欧洲av冫 | 亚洲熟妇自偷自拍另类 | 久久天天躁狠狠躁夜夜免费观看 | 搡女人真爽免费视频大全 | 2020久久超碰国产精品最新 | 国产精品久久久久7777 | 久久久久se色偷偷亚洲精品av | 波多野结衣高清一区二区三区 | 奇米影视7777久久精品人人爽 | 丝袜美腿亚洲一区二区 | 亚洲精品欧美二区三区中文字幕 | 国产午夜视频在线观看 | 九九在线中文字幕无码 | 黑人巨大精品欧美一区二区 | 日日橹狠狠爱欧美视频 | 丝袜人妻一区二区三区 | 熟女体下毛毛黑森林 | 亚洲va中文字幕无码久久不卡 | 精品欧洲av无码一区二区三区 | aⅴ在线视频男人的天堂 | 午夜精品久久久内射近拍高清 | 久久亚洲中文字幕无码 | 蜜臀av在线观看 在线欧美精品一区二区三区 | 国产九九九九九九九a片 | 帮老师解开蕾丝奶罩吸乳网站 | 天堂在线观看www | 亚洲va欧美va天堂v国产综合 | 伊人久久婷婷五月综合97色 | 欧美国产日韩亚洲中文 | 亚洲 a v无 码免 费 成 人 a v | 国产成人无码区免费内射一片色欲 | 亚洲欧美中文字幕5发布 | 日本乱偷人妻中文字幕 | 日本一区二区三区免费高清 | 亚洲精品综合五月久久小说 | 偷窥村妇洗澡毛毛多 | 麻豆国产人妻欲求不满谁演的 | 久久久久久久久蜜桃 | 国产乱人偷精品人妻a片 | 国产精品无码永久免费888 | 免费人成在线视频无码 | 精品久久久无码中文字幕 | 白嫩日本少妇做爰 | 亚洲国产av精品一区二区蜜芽 | 日本va欧美va欧美va精品 | 狠狠色色综合网站 | 国产午夜亚洲精品不卡 | 国产激情艳情在线看视频 | 日韩欧美成人免费观看 | 国精品人妻无码一区二区三区蜜柚 | 东京无码熟妇人妻av在线网址 | 国产一区二区三区精品视频 | 成人三级无码视频在线观看 | 日韩av无码一区二区三区 | 激情综合激情五月俺也去 | 欧美日韩一区二区三区自拍 | 午夜精品一区二区三区的区别 | 丰满妇女强制高潮18xxxx | 国产黄在线观看免费观看不卡 | 无码精品国产va在线观看dvd | 亚洲精品一区三区三区在线观看 | 美女扒开屁股让男人桶 | 国产亚洲精品久久久ai换 | 妺妺窝人体色www婷婷 | 久久久亚洲欧洲日产国码αv | 欧洲美熟女乱又伦 | 国产高清av在线播放 | a片免费视频在线观看 | 欧美国产日产一区二区 | 精品国产成人一区二区三区 | 中文久久乱码一区二区 | 一本久道久久综合婷婷五月 | 欧美兽交xxxx×视频 | 色欲人妻aaaaaaa无码 | 动漫av一区二区在线观看 | 九九综合va免费看 | 亚洲区欧美区综合区自拍区 | 国产内射老熟女aaaa | 亚洲精品久久久久久一区二区 | 国产激情精品一区二区三区 | 18精品久久久无码午夜福利 | 亚洲爆乳精品无码一区二区三区 | 久久综合给久久狠狠97色 | 亚洲国产欧美日韩精品一区二区三区 | 久久综合香蕉国产蜜臀av | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 又色又爽又黄的美女裸体网站 | 巨爆乳无码视频在线观看 | 荫蒂被男人添的好舒服爽免费视频 | 国产乱子伦视频在线播放 | 亚洲春色在线视频 | 久久97精品久久久久久久不卡 | 人人爽人人澡人人人妻 | 一本久久a久久精品亚洲 | 国产精品久久久久无码av色戒 | 亚洲乱码日产精品bd | 无码人妻精品一区二区三区下载 | 国产精品理论片在线观看 | 欧美日本免费一区二区三区 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 国产精品久免费的黄网站 | 天堂一区人妻无码 | 美女张开腿让人桶 | 欧美日韩一区二区免费视频 | 免费乱码人妻系列无码专区 | 亚洲の无码国产の无码步美 | 日日麻批免费40分钟无码 | 初尝人妻少妇中文字幕 | 国产免费观看黄av片 | 日本爽爽爽爽爽爽在线观看免 | 国产精品鲁鲁鲁 | 日韩精品久久久肉伦网站 | 国产极品美女高潮无套在线观看 | 亚洲精品无码人妻无码 | 日韩精品一区二区av在线 | 性做久久久久久久免费看 | 又大又黄又粗又爽的免费视频 | 性欧美videos高清精品 | 大色综合色综合网站 | 丰满人妻一区二区三区免费视频 | 成人影院yy111111在线观看 | 国产莉萝无码av在线播放 | 亚洲区小说区激情区图片区 | 国产av人人夜夜澡人人爽麻豆 | 综合激情五月综合激情五月激情1 | 国产亚洲精品精品国产亚洲综合 | 久久精品女人的天堂av | 亚洲成a人片在线观看日本 | 任你躁国产自任一区二区三区 | 久久综合给合久久狠狠狠97色 | а√资源新版在线天堂 | 国产av一区二区三区最新精品 | 玩弄人妻少妇500系列视频 | 麻豆md0077饥渴少妇 | 中文字幕人成乱码熟女app | 中文字幕av无码一区二区三区电影 | 无人区乱码一区二区三区 | 日韩少妇内射免费播放 | 九九综合va免费看 | 久久综合色之久久综合 | 国产人成高清在线视频99最全资源 | 国产农村妇女高潮大叫 | 成人av无码一区二区三区 | 欧美日韩在线亚洲综合国产人 | 思思久久99热只有频精品66 | 亚洲欧美精品伊人久久 | 美女张开腿让人桶 | 无码国产激情在线观看 | 国产精品久久久久久亚洲毛片 | 97久久国产亚洲精品超碰热 | 欧美真人作爱免费视频 | 中文字幕人成乱码熟女app | 偷窥村妇洗澡毛毛多 | 国产激情艳情在线看视频 | 夜精品a片一区二区三区无码白浆 | 国产亚洲精品久久久久久久久动漫 | 亚洲国产精品毛片av不卡在线 | 蜜桃视频插满18在线观看 | 亚洲乱码中文字幕在线 | 台湾无码一区二区 | 久久天天躁夜夜躁狠狠 | 精品无码国产自产拍在线观看蜜 | 国产又爽又黄又刺激的视频 | 亚洲成a人一区二区三区 | 亚洲中文字幕无码中字 | 九月婷婷人人澡人人添人人爽 | 99久久婷婷国产综合精品青草免费 | 日本肉体xxxx裸交 | 亚洲国产精品久久久久久 | 天堂а√在线地址中文在线 | 亚洲日韩精品欧美一区二区 | 一本精品99久久精品77 | 日韩欧美成人免费观看 | 欧美 日韩 亚洲 在线 | 国内少妇偷人精品视频 | 高中生自慰www网站 | 强奷人妻日本中文字幕 | 天天摸天天碰天天添 | 国产97色在线 | 免 | 一个人看的视频www在线 | v一区无码内射国产 | 国产精品嫩草久久久久 | 国产女主播喷水视频在线观看 | 亚洲色偷偷男人的天堂 | 亚洲自偷自拍另类第1页 | 人妻插b视频一区二区三区 | 精品久久久久香蕉网 | 东京热一精品无码av | 成人免费视频视频在线观看 免费 | 国产无av码在线观看 | 国产激情无码一区二区app | 蜜臀aⅴ国产精品久久久国产老师 | 少妇久久久久久人妻无码 | 色婷婷久久一区二区三区麻豆 | 综合网日日天干夜夜久久 | 亚洲の无码国产の无码步美 | 99久久人妻精品免费二区 | 成人动漫在线观看 | 纯爱无遮挡h肉动漫在线播放 | 久久亚洲日韩精品一区二区三区 | 亚洲爆乳精品无码一区二区三区 | 午夜成人1000部免费视频 | 精品久久久久香蕉网 | 激情人妻另类人妻伦 | 丝袜足控一区二区三区 | 国产成人综合美国十次 | 久久99热只有频精品8 | 精品久久久无码中文字幕 | 国产激情艳情在线看视频 | 天堂а√在线中文在线 | 无码午夜成人1000部免费视频 | 成人综合网亚洲伊人 | 国产国语老龄妇女a片 | 久9re热视频这里只有精品 | 国产精品18久久久久久麻辣 | 日本乱人伦片中文三区 | 亚洲人成网站免费播放 | 亚洲色大成网站www国产 | 国产在线一区二区三区四区五区 | 色综合久久久无码中文字幕 | 日欧一片内射va在线影院 | 18无码粉嫩小泬无套在线观看 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 国内揄拍国内精品人妻 | 夜夜夜高潮夜夜爽夜夜爰爰 | 人人爽人人爽人人片av亚洲 | 亚洲成av人片天堂网无码】 | 成人欧美一区二区三区黑人 | 丝袜足控一区二区三区 | 偷窥村妇洗澡毛毛多 | 乱码av麻豆丝袜熟女系列 | 亚洲 高清 成人 动漫 | 无码人妻少妇伦在线电影 | 中文字幕av无码一区二区三区电影 | 日日橹狠狠爱欧美视频 | 国产亲子乱弄免费视频 | 亚洲中文字幕无码中文字在线 | 国产色视频一区二区三区 | av香港经典三级级 在线 | 97资源共享在线视频 | 国产色在线 | 国产 | 成人欧美一区二区三区 | 午夜男女很黄的视频 | 亚洲乱亚洲乱妇50p | 日韩亚洲欧美中文高清在线 | 内射爽无广熟女亚洲 | 日日躁夜夜躁狠狠躁 | 国产 精品 自在自线 | 午夜精品久久久久久久 | 精品夜夜澡人妻无码av蜜桃 | 夫妻免费无码v看片 | 樱花草在线社区www | yw尤物av无码国产在线观看 | 亚洲中文字幕在线无码一区二区 | 成熟女人特级毛片www免费 | 国产精品怡红院永久免费 | 午夜精品一区二区三区在线观看 | 日韩亚洲欧美中文高清在线 | 欧美性猛交xxxx富婆 | 任你躁国产自任一区二区三区 | 欧美一区二区三区视频在线观看 | 老司机亚洲精品影院 | 成人免费视频视频在线观看 免费 | 丝袜 中出 制服 人妻 美腿 | 亚洲人成无码网www | 成年美女黄网站色大免费全看 | √天堂中文官网8在线 | 无码人妻丰满熟妇区毛片18 | 色情久久久av熟女人妻网站 | 国产精品久久久久久无码 | 国产办公室秘书无码精品99 | 亚洲а∨天堂久久精品2021 | 欧美精品无码一区二区三区 | 少妇性l交大片欧洲热妇乱xxx | 亚洲人成网站在线播放942 | a国产一区二区免费入口 | 国产女主播喷水视频在线观看 | 丰满人妻精品国产99aⅴ | 国语精品一区二区三区 | 久精品国产欧美亚洲色aⅴ大片 | 亚洲精品综合五月久久小说 | 国产成人精品无码播放 | 久久熟妇人妻午夜寂寞影院 | 国产xxx69麻豆国语对白 | 无码人妻少妇伦在线电影 | 精品无码一区二区三区爱欲 | 日韩av无码一区二区三区不卡 | 免费国产黄网站在线观看 | 无码精品人妻一区二区三区av | 性做久久久久久久免费看 | 67194成是人免费无码 | 亚洲色偷偷男人的天堂 | 在线a亚洲视频播放在线观看 | 精品无码成人片一区二区98 | 国产卡一卡二卡三 | 国产成人无码区免费内射一片色欲 | 人妻无码久久精品人妻 | 亚洲欧美色中文字幕在线 | 国产又爽又黄又刺激的视频 | 亚洲中文字幕va福利 | 久久国产精品二国产精品 | 国产精品18久久久久久麻辣 | 四十如虎的丰满熟妇啪啪 | 久久精品国产99久久6动漫 | 红桃av一区二区三区在线无码av | av无码不卡在线观看免费 | 国产午夜亚洲精品不卡 | 日本在线高清不卡免费播放 | 欧美大屁股xxxxhd黑色 | 亚洲中文字幕无码中字 | 麻豆国产人妻欲求不满 | 疯狂三人交性欧美 | 自拍偷自拍亚洲精品被多人伦好爽 | 国产一区二区三区影院 | 极品嫩模高潮叫床 | 久久久成人毛片无码 | 色婷婷久久一区二区三区麻豆 | 欧美三级不卡在线观看 | 亚洲欧美国产精品专区久久 | 少妇久久久久久人妻无码 | 老子影院午夜伦不卡 | 久久精品国产99久久6动漫 | 宝宝好涨水快流出来免费视频 | 大地资源网第二页免费观看 | 日韩 欧美 动漫 国产 制服 | 国产莉萝无码av在线播放 | 国产精品a成v人在线播放 | 日本精品高清一区二区 | 亚洲成熟女人毛毛耸耸多 | 红桃av一区二区三区在线无码av | 日韩精品乱码av一区二区 | 天海翼激烈高潮到腰振不止 | 亚洲日韩中文字幕在线播放 | 国产精品无码mv在线观看 | 色欲久久久天天天综合网精品 | 婷婷丁香五月天综合东京热 | 天海翼激烈高潮到腰振不止 | 成人精品天堂一区二区三区 | 亚洲国产欧美日韩精品一区二区三区 | 偷窥日本少妇撒尿chinese | 亚洲国产综合无码一区 | 亚洲国产精华液网站w | 欧美35页视频在线观看 | 国产超碰人人爽人人做人人添 | 国产av无码专区亚洲a∨毛片 | 久久国产36精品色熟妇 | 亚洲一区二区三区播放 | www国产精品内射老师 | 亚洲日韩一区二区 | 亚洲狠狠婷婷综合久久 | 日本精品久久久久中文字幕 | 久久99国产综合精品 | 亚洲 另类 在线 欧美 制服 | 久久五月精品中文字幕 | 国产精品va在线播放 | 图片小说视频一区二区 | 国产成人无码区免费内射一片色欲 | 国内综合精品午夜久久资源 | 人妻有码中文字幕在线 | 欧美阿v高清资源不卡在线播放 | 日本一区二区三区免费高清 | 成人亚洲精品久久久久 | 欧美自拍另类欧美综合图片区 | 在线观看欧美一区二区三区 | 欧美日韩一区二区综合 | 18无码粉嫩小泬无套在线观看 | a在线观看免费网站大全 | 国产内射爽爽大片视频社区在线 | 夜夜高潮次次欢爽av女 | 丝袜足控一区二区三区 | 亚洲精品午夜国产va久久成人 | 国产va免费精品观看 | 理论片87福利理论电影 | 国产精品人人爽人人做我的可爱 | www一区二区www免费 | 无码免费一区二区三区 | 动漫av一区二区在线观看 | 亚洲中文字幕无码中文字在线 | 无码任你躁久久久久久久 | 国产精品久久久久久久影院 | 日本熟妇大屁股人妻 | 高潮毛片无遮挡高清免费 | 亚洲呦女专区 | 久久精品国产日本波多野结衣 | 色一情一乱一伦一视频免费看 | 鲁大师影院在线观看 | 久久无码专区国产精品s | 国产办公室秘书无码精品99 | 国产精品欧美成人 | 亚洲精品成人av在线 | 六十路熟妇乱子伦 | 亚洲午夜无码久久 | 在线看片无码永久免费视频 | 色一情一乱一伦一视频免费看 | 天堂亚洲免费视频 | 国精品人妻无码一区二区三区蜜柚 | 国产福利视频一区二区 | 久久无码中文字幕免费影院蜜桃 | 99国产欧美久久久精品 | 国产精品人人妻人人爽 | 丰满人妻被黑人猛烈进入 | 欧美精品在线观看 | 亚洲成a人一区二区三区 | 中文字幕无码免费久久9一区9 | 国产高潮视频在线观看 | 无码av岛国片在线播放 | 真人与拘做受免费视频一 | 99久久精品日本一区二区免费 | 久久综合激激的五月天 | 99久久精品国产一区二区蜜芽 | 荡女精品导航 | 色一情一乱一伦一区二区三欧美 | 一本色道久久综合狠狠躁 | 国产成人无码av一区二区 | 亚洲精品国偷拍自产在线观看蜜桃 | 欧美精品一区二区精品久久 | 人妻无码久久精品人妻 | 亚洲欧美日韩国产精品一区二区 | 永久免费精品精品永久-夜色 | 久久99精品久久久久婷婷 | 无码中文字幕色专区 | 国产成人精品三级麻豆 | 老熟妇仑乱视频一区二区 | 天天拍夜夜添久久精品大 | 国产乱人偷精品人妻a片 | 又粗又大又硬毛片免费看 | 国产人妻大战黑人第1集 | av无码电影一区二区三区 | 国产情侣作爱视频免费观看 | 国产成人综合在线女婷五月99播放 | 国模大胆一区二区三区 | 国产午夜亚洲精品不卡下载 | 无码av免费一区二区三区试看 | 在线观看欧美一区二区三区 | 无码av免费一区二区三区试看 | 免费看少妇作爱视频 | 国产尤物精品视频 | 麻花豆传媒剧国产免费mv在线 | 国产精品对白交换视频 | 日本精品人妻无码免费大全 | 人人澡人人透人人爽 | 国产成人无码av一区二区 | 九九综合va免费看 | 国产精品18久久久久久麻辣 | 亚洲精品国偷拍自产在线麻豆 | 国精品人妻无码一区二区三区蜜柚 | 一二三四社区在线中文视频 | 亚洲日韩乱码中文无码蜜桃臀网站 | 国产色在线 | 国产 | 少妇性荡欲午夜性开放视频剧场 | 亚洲国产精品无码久久久久高潮 | 日韩少妇内射免费播放 | 四虎影视成人永久免费观看视频 | 国产明星裸体无码xxxx视频 | 青青久在线视频免费观看 | 亚洲七七久久桃花影院 | 色欲av亚洲一区无码少妇 | 中文久久乱码一区二区 | 青青草原综合久久大伊人精品 | 中文无码精品a∨在线观看不卡 | 欧美性生交xxxxx久久久 | 西西人体www44rt大胆高清 | 18禁黄网站男男禁片免费观看 | 亚洲 另类 在线 欧美 制服 | 亚洲国产欧美国产综合一区 | 98国产精品综合一区二区三区 | 精品日本一区二区三区在线观看 | 人妻尝试又大又粗久久 | 国产精品美女久久久网av | 日日躁夜夜躁狠狠躁 | 亚洲高清偷拍一区二区三区 | 日本精品久久久久中文字幕 | 在线a亚洲视频播放在线观看 | 午夜男女很黄的视频 | 一本大道伊人av久久综合 | 久久精品人妻少妇一区二区三区 | 极品尤物被啪到呻吟喷水 | 乱人伦人妻中文字幕无码久久网 | 成人无码视频在线观看网站 | 亚洲成av人片天堂网无码】 | 免费人成在线视频无码 | 久久久精品456亚洲影院 | 成人亚洲精品久久久久软件 | 极品嫩模高潮叫床 | 欧美激情内射喷水高潮 | 国产性生交xxxxx无码 | 亚洲无人区一区二区三区 | 国产在线aaa片一区二区99 | 日本熟妇大屁股人妻 | 成人片黄网站色大片免费观看 | 欧洲欧美人成视频在线 | 亚洲人成无码网www | 一区二区传媒有限公司 | 任你躁在线精品免费 | 欧洲欧美人成视频在线 | 国产色xx群视频射精 | 性生交大片免费看女人按摩摩 | 2020久久超碰国产精品最新 | 在线亚洲高清揄拍自拍一品区 | 国产97人人超碰caoprom | 成人精品视频一区二区三区尤物 | 久久99久久99精品中文字幕 | 一二三四社区在线中文视频 | 久久精品丝袜高跟鞋 | 国产sm调教视频在线观看 | 日韩成人一区二区三区在线观看 | 桃花色综合影院 | 在线欧美精品一区二区三区 | www国产精品内射老师 | 国产精品美女久久久久av爽李琼 | 色一情一乱一伦一区二区三欧美 | 天天综合网天天综合色 | 亚洲a无码综合a国产av中文 | 国产精品高潮呻吟av久久4虎 | 国产明星裸体无码xxxx视频 | 欧美xxxxx精品 | 两性色午夜视频免费播放 | 未满小14洗澡无码视频网站 | а天堂中文在线官网 | 熟妇激情内射com | 免费观看黄网站 | 麻豆成人精品国产免费 | 香蕉久久久久久av成人 | 久久亚洲国产成人精品性色 | 色综合久久久久综合一本到桃花网 | 一二三四在线观看免费视频 | 久久国产精品_国产精品 | 久久 国产 尿 小便 嘘嘘 | 国内精品人妻无码久久久影院 | 国产国语老龄妇女a片 | 亚洲精品久久久久久久久久久 | 国产97人人超碰caoprom | 欧洲美熟女乱又伦 | 亚洲精品久久久久avwww潮水 | 黑森林福利视频导航 | 日本精品人妻无码77777 天堂一区人妻无码 | 无码av岛国片在线播放 | 99麻豆久久久国产精品免费 | 伊人久久大香线蕉av一区二区 | 全球成人中文在线 | 亚洲娇小与黑人巨大交 | 国产一区二区三区四区五区加勒比 | 性做久久久久久久免费看 | 亚洲日本va午夜在线电影 | 在线欧美精品一区二区三区 | 亚洲va欧美va天堂v国产综合 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 中文字幕av伊人av无码av | 精品国产一区av天美传媒 | 成人无码精品1区2区3区免费看 | 牲欲强的熟妇农村老妇女视频 | 久久久久久av无码免费看大片 | 日韩人妻少妇一区二区三区 | 欧美 日韩 人妻 高清 中文 | 人妻aⅴ无码一区二区三区 | 人人澡人人透人人爽 | 亚洲精品美女久久久久久久 | 久久精品国产99久久6动漫 | 色综合久久久久综合一本到桃花网 | 日韩精品乱码av一区二区 | 成在人线av无码免观看麻豆 | 日韩精品久久久肉伦网站 | 成人一区二区免费视频 | 国产精品永久免费视频 | 蜜臀aⅴ国产精品久久久国产老师 | 国产婷婷色一区二区三区在线 | 人人妻人人澡人人爽欧美一区 | 国产成人一区二区三区在线观看 | 中文久久乱码一区二区 | 亚洲色无码一区二区三区 | 无码国产激情在线观看 | 好屌草这里只有精品 | 久久精品人人做人人综合试看 | 免费看少妇作爱视频 | 少妇久久久久久人妻无码 | 伊人久久婷婷五月综合97色 | 成人一在线视频日韩国产 | 日本一区二区更新不卡 | 在线精品亚洲一区二区 | 伊人久久大香线蕉av一区二区 | 亚洲欧美日韩综合久久久 | 国产av一区二区精品久久凹凸 | 国产成人精品优优av | 国产成人午夜福利在线播放 | 久久亚洲精品中文字幕无男同 | 国产一区二区三区精品视频 | 亚洲色大成网站www | 亚洲小说春色综合另类 | 亲嘴扒胸摸屁股激烈网站 | 国产香蕉尹人视频在线 | 人人澡人人妻人人爽人人蜜桃 | 亚洲熟妇色xxxxx亚洲 | 国产成人精品无码播放 | 亚洲熟妇自偷自拍另类 | 日本丰满熟妇videos | 亚洲精品综合一区二区三区在线 | 国产九九九九九九九a片 | 精品一二三区久久aaa片 | 乱中年女人伦av三区 | 国产人妻人伦精品1国产丝袜 | 亚洲精品国偷拍自产在线麻豆 | 少妇人妻大乳在线视频 | 欧美猛少妇色xxxxx | 青春草在线视频免费观看 | 午夜性刺激在线视频免费 | 午夜时刻免费入口 | 美女张开腿让人桶 | 午夜熟女插插xx免费视频 | 久久精品无码一区二区三区 | 在线 国产 欧美 亚洲 天堂 | 麻豆精品国产精华精华液好用吗 | 香港三级日本三级妇三级 | 国产亚洲精品久久久久久大师 | 人人妻人人澡人人爽欧美一区九九 | 丰满人妻精品国产99aⅴ | 精品乱子伦一区二区三区 | 成人三级无码视频在线观看 | 国产绳艺sm调教室论坛 | 亚洲中文字幕无码一久久区 | 久久97精品久久久久久久不卡 | 无码国产激情在线观看 | 午夜嘿嘿嘿影院 | 精品国产国产综合精品 | 国产真人无遮挡作爱免费视频 | 色综合久久久久综合一本到桃花网 | 日韩视频 中文字幕 视频一区 | 久久人人97超碰a片精品 | 日本护士xxxxhd少妇 | 超碰97人人射妻 | 狠狠色欧美亚洲狠狠色www | 色一情一乱一伦 | 蜜臀av无码人妻精品 | 亚洲欧洲日本综合aⅴ在线 | 久久国产精品精品国产色婷婷 | 97夜夜澡人人双人人人喊 | a片在线免费观看 | 成人免费视频视频在线观看 免费 | 扒开双腿疯狂进出爽爽爽视频 | 亚洲无人区一区二区三区 | 国产精品美女久久久网av | 人妻无码αv中文字幕久久琪琪布 | 亚洲国产精品无码一区二区三区 | 成人毛片一区二区 | 亚洲の无码国产の无码步美 | 欧美日韩久久久精品a片 | 国产成人无码区免费内射一片色欲 | 狠狠亚洲超碰狼人久久 | 永久免费观看国产裸体美女 | 高清无码午夜福利视频 | 2020久久超碰国产精品最新 | 亚洲欧美日韩国产精品一区二区 | 成在人线av无码免观看麻豆 | 荡女精品导航 | 成人亚洲精品久久久久软件 | 国产精品人妻一区二区三区四 | 国产精品久久久久影院嫩草 | 人人爽人人澡人人高潮 | 国产成人无码区免费内射一片色欲 | 无码国内精品人妻少妇 | 亚洲国产欧美日韩精品一区二区三区 | 亚洲日韩一区二区 | 欧美日韩视频无码一区二区三 | 精品无码一区二区三区爱欲 | 中文字幕+乱码+中文字幕一区 | 亚洲区欧美区综合区自拍区 | 99久久久无码国产精品免费 | 亚洲乱亚洲乱妇50p | 天天爽夜夜爽夜夜爽 | а√资源新版在线天堂 | 免费看男女做好爽好硬视频 | 国产无套粉嫩白浆在线 | 成熟人妻av无码专区 | a在线亚洲男人的天堂 | 欧美激情内射喷水高潮 | 婷婷色婷婷开心五月四房播播 | 国产免费久久久久久无码 | 97夜夜澡人人双人人人喊 | 国产三级久久久精品麻豆三级 | 亚洲国产欧美国产综合一区 | 好爽又高潮了毛片免费下载 | 国产美女极度色诱视频www | 人妻人人添人妻人人爱 | 装睡被陌生人摸出水好爽 | 永久免费观看国产裸体美女 | 波多野42部无码喷潮在线 | 俺去俺来也在线www色官网 | 日日麻批免费40分钟无码 | 婷婷综合久久中文字幕蜜桃三电影 | 欧美精品国产综合久久 | 亚洲综合在线一区二区三区 | 国产精品高潮呻吟av久久 | 久久国产精品二国产精品 | 亚洲精品综合一区二区三区在线 | 人人妻人人澡人人爽人人精品 | 欧美激情内射喷水高潮 | 亚洲经典千人经典日产 | 成熟女人特级毛片www免费 | 国产人妻人伦精品 | 性欧美videos高清精品 | 亚洲天堂2017无码中文 | 国产欧美亚洲精品a | 国产无套粉嫩白浆在线 | 丰满少妇高潮惨叫视频 | 老熟妇仑乱视频一区二区 | 欧美人与禽猛交狂配 | 东京热一精品无码av | 狠狠噜狠狠狠狠丁香五月 | a在线亚洲男人的天堂 | 一本久久a久久精品亚洲 | 最近免费中文字幕中文高清百度 | 少妇的肉体aa片免费 | 西西人体www44rt大胆高清 | 极品嫩模高潮叫床 | 国产情侣作爱视频免费观看 | 中文字幕无码视频专区 | 亚洲精品国产a久久久久久 | 又大又硬又黄的免费视频 | 国产欧美熟妇另类久久久 | 大乳丰满人妻中文字幕日本 | 免费无码一区二区三区蜜桃大 | 国产乱人无码伦av在线a | 无码毛片视频一区二区本码 | 人人妻人人澡人人爽人人精品浪潮 | 国产99久久精品一区二区 | 亚洲熟妇色xxxxx亚洲 | 内射后入在线观看一区 | 久久久久久久久蜜桃 | 精品一区二区三区无码免费视频 | 国产乱人无码伦av在线a | 日韩少妇白浆无码系列 | 成人亚洲精品久久久久 | aa片在线观看视频在线播放 | 欧美高清在线精品一区 | 任你躁在线精品免费 | 日韩成人一区二区三区在线观看 | 在线欧美精品一区二区三区 | 免费乱码人妻系列无码专区 | 伊人久久大香线焦av综合影院 | 免费人成在线观看网站 | av无码电影一区二区三区 | 乱码av麻豆丝袜熟女系列 | 性欧美牲交xxxxx视频 | 亚洲精品无码国产 | 亚洲国产高清在线观看视频 | 乱中年女人伦av三区 | 成熟妇人a片免费看网站 | 澳门永久av免费网站 | 一本久道久久综合婷婷五月 | 一本大道久久东京热无码av | 中文字幕无码视频专区 | 综合激情五月综合激情五月激情1 | 日韩亚洲欧美中文高清在线 | 欧美三级不卡在线观看 | 四虎4hu永久免费 | 亚洲中文无码av永久不收费 | 久久国产36精品色熟妇 | 无码av岛国片在线播放 | 国产人妻人伦精品 | 亚洲国产高清在线观看视频 | 成人欧美一区二区三区黑人 | 正在播放老肥熟妇露脸 | 大地资源中文第3页 | 国产免费久久久久久无码 | 日本熟妇乱子伦xxxx | 精品国产乱码久久久久乱码 | 欧洲精品码一区二区三区免费看 | 男人的天堂av网站 | 色 综合 欧美 亚洲 国产 | 日韩欧美群交p片內射中文 | 国产尤物精品视频 | 国产成人综合色在线观看网站 | 麻豆果冻传媒2021精品传媒一区下载 | 成人无码精品一区二区三区 | 欧美放荡的少妇 | 欧美人与禽猛交狂配 | 色偷偷人人澡人人爽人人模 | 人妻与老人中文字幕 | 免费视频欧美无人区码 | 午夜嘿嘿嘿影院 | 亚洲成av人综合在线观看 | 日日摸夜夜摸狠狠摸婷婷 | 国产亚洲精品久久久久久 | 真人与拘做受免费视频 | 97人妻精品一区二区三区 | 国产精品香蕉在线观看 | 中文字幕无码av波多野吉衣 | 强开小婷嫩苞又嫩又紧视频 | 成 人 免费观看网站 | 久久婷婷五月综合色国产香蕉 | aⅴ在线视频男人的天堂 | 四十如虎的丰满熟妇啪啪 | 亚洲精品中文字幕 | 国产深夜福利视频在线 | 午夜精品久久久久久久久 | 亚洲午夜久久久影院 | 丝袜美腿亚洲一区二区 | 精品无码国产自产拍在线观看蜜 | 国产精品无套呻吟在线 | 国产精品久久久久无码av色戒 | 骚片av蜜桃精品一区 | 国产人妻人伦精品 | 国产精品成人av在线观看 | 中文字幕无码av波多野吉衣 | 亚洲日韩av一区二区三区中文 | 国产明星裸体无码xxxx视频 | 狠狠色欧美亚洲狠狠色www | 99国产精品白浆在线观看免费 | 两性色午夜免费视频 | 人人爽人人澡人人高潮 | 性色欲网站人妻丰满中文久久不卡 | 日本精品久久久久中文字幕 | 天下第一社区视频www日本 | 国产内射爽爽大片视频社区在线 | 日韩人妻系列无码专区 | 性欧美牲交xxxxx视频 | 欧美大屁股xxxxhd黑色 | 色欲人妻aaaaaaa无码 | 狠狠噜狠狠狠狠丁香五月 | 久久久久国色av免费观看性色 | 亚洲中文字幕在线无码一区二区 | 久久综合网欧美色妞网 | 欧美zoozzooz性欧美 | 国产乱人偷精品人妻a片 | 中文字幕无码av激情不卡 | 日本护士xxxxhd少妇 | 欧美freesex黑人又粗又大 | 亚洲精品美女久久久久久久 | 任你躁国产自任一区二区三区 | 成 人影片 免费观看 | 国产凸凹视频一区二区 | 国产成人人人97超碰超爽8 | 无遮挡国产高潮视频免费观看 | 婷婷五月综合缴情在线视频 | 免费乱码人妻系列无码专区 | 啦啦啦www在线观看免费视频 | 乱人伦人妻中文字幕无码 | 波多野结衣一区二区三区av免费 | 久久久国产精品无码免费专区 | 日本大乳高潮视频在线观看 | 欧美日韩一区二区综合 | 成人精品视频一区二区三区尤物 | 欧美性生交xxxxx久久久 | 国产精品无码一区二区桃花视频 | 国产99久久精品一区二区 | 沈阳熟女露脸对白视频 | 四十如虎的丰满熟妇啪啪 | 国产精品成人av在线观看 | 国产激情艳情在线看视频 | 欧美35页视频在线观看 | 色爱情人网站 | 亚洲男人av香蕉爽爽爽爽 | 亚洲乱码日产精品bd | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 国产av无码专区亚洲awww | 成人综合网亚洲伊人 | 国产两女互慰高潮视频在线观看 | 动漫av一区二区在线观看 | 夫妻免费无码v看片 | 久久精品女人的天堂av | 爽爽影院免费观看 | 亚洲の无码国产の无码步美 | 精品国偷自产在线视频 | 欧美人与物videos另类 | 国产精品人人妻人人爽 | 亚洲国产精品久久久久久 | 久久久久亚洲精品中文字幕 | 欧洲vodafone精品性 | 精品夜夜澡人妻无码av蜜桃 | 精品无码成人片一区二区98 | 成人一区二区免费视频 | 久久久久se色偷偷亚洲精品av | 日韩精品无码一区二区中文字幕 | 免费中文字幕日韩欧美 | 装睡被陌生人摸出水好爽 | 女人被爽到呻吟gif动态图视看 | 国产精品无码成人午夜电影 | 好男人社区资源 | 99re在线播放 | 精品久久久久久人妻无码中文字幕 | 中文字幕人妻无码一区二区三区 | 精品国产一区二区三区四区 | 夜夜高潮次次欢爽av女 | 久久亚洲日韩精品一区二区三区 | 少妇无码av无码专区在线观看 | 51国偷自产一区二区三区 | 日日碰狠狠躁久久躁蜜桃 | 日韩精品成人一区二区三区 | 午夜性刺激在线视频免费 | 在线播放亚洲第一字幕 | 无码av免费一区二区三区试看 | 国产精品igao视频网 | 免费视频欧美无人区码 | 亚洲综合另类小说色区 | 成人精品视频一区二区三区尤物 | 国产97人人超碰caoprom | 日韩av激情在线观看 | 久久亚洲中文字幕精品一区 | 97夜夜澡人人双人人人喊 | 成人免费无码大片a毛片 | 亚洲日本在线电影 | 四虎永久在线精品免费网址 | 丰满护士巨好爽好大乳 | 狠狠噜狠狠狠狠丁香五月 | 中文精品无码中文字幕无码专区 | 97无码免费人妻超级碰碰夜夜 | 兔费看少妇性l交大片免费 | 久久国产精品_国产精品 | 日日躁夜夜躁狠狠躁 | 激情内射亚州一区二区三区爱妻 | 欧美日韩在线亚洲综合国产人 | 成人无码影片精品久久久 | 亚洲自偷自偷在线制服 | 理论片87福利理论电影 | av无码电影一区二区三区 | 亚洲爆乳大丰满无码专区 | 熟妇女人妻丰满少妇中文字幕 | 人妻无码久久精品人妻 | 成人精品一区二区三区中文字幕 | 久久久久99精品国产片 | 2019nv天堂香蕉在线观看 | 欧美人与物videos另类 | 丰满肥臀大屁股熟妇激情视频 | 欧洲极品少妇 | 国产精品久久久久久久影院 | 久久久久国色av免费观看性色 | 久久精品视频在线看15 | 日日噜噜噜噜夜夜爽亚洲精品 | 久久www免费人成人片 | 秋霞成人午夜鲁丝一区二区三区 | 2020久久超碰国产精品最新 | 亚洲一区二区三区偷拍女厕 | 伊人色综合久久天天小片 | 日韩av无码一区二区三区 | 国色天香社区在线视频 | 一本加勒比波多野结衣 | 久久久精品人妻久久影视 | av无码不卡在线观看免费 | 色 综合 欧美 亚洲 国产 | 国产网红无码精品视频 | 精品偷自拍另类在线观看 | 三级4级全黄60分钟 | 一本大道久久东京热无码av | 老头边吃奶边弄进去呻吟 | 日日噜噜噜噜夜夜爽亚洲精品 | 亚洲中文字幕成人无码 | 好男人社区资源 | 国产精品久久久午夜夜伦鲁鲁 | 精品人妻中文字幕有码在线 | 伊人久久大香线蕉av一区二区 | 国产精品手机免费 | 国产三级久久久精品麻豆三级 | 黑人巨大精品欧美黑寡妇 | 亚洲国产av精品一区二区蜜芽 | 国产午夜亚洲精品不卡 | 国产精品igao视频网 | 国产人成高清在线视频99最全资源 | 国产精品福利视频导航 | 国产精品无码久久av | 亚洲精品一区二区三区四区五区 | 亚洲精品欧美二区三区中文字幕 | 亚洲色www成人永久网址 | 18黄暴禁片在线观看 | 国产热a欧美热a在线视频 | 窝窝午夜理论片影院 | 日韩精品无码一本二本三本色 | 老司机亚洲精品影院无码 | 日韩精品无码一本二本三本色 | 300部国产真实乱 | 无码免费一区二区三区 | 久久久国产精品无码免费专区 | 欧美性生交活xxxxxdddd | 内射后入在线观看一区 | 亚洲成a人片在线观看无码 | 无码人妻丰满熟妇区五十路百度 | 婷婷综合久久中文字幕蜜桃三电影 | 日本熟妇大屁股人妻 | 荡女精品导航 | 免费无码的av片在线观看 | 成人一区二区免费视频 | 在线精品国产一区二区三区 | 少妇被粗大的猛进出69影院 | 中文字幕人成乱码熟女app | 欧美阿v高清资源不卡在线播放 | 97夜夜澡人人爽人人喊中国片 | 300部国产真实乱 | 日韩精品a片一区二区三区妖精 | 精品久久久无码中文字幕 | 欧美一区二区三区视频在线观看 | 国产无套粉嫩白浆在线 | 强奷人妻日本中文字幕 | 精品无人区无码乱码毛片国产 | 久久精品国产99精品亚洲 | 亚洲国产午夜精品理论片 | 高潮毛片无遮挡高清免费视频 | 无码人妻少妇伦在线电影 | 丝袜美腿亚洲一区二区 | 久久久久国色av免费观看性色 | 波多野结衣av一区二区全免费观看 | 国产午夜精品一区二区三区嫩草 | 日韩无套无码精品 | 国内丰满熟女出轨videos | 成年美女黄网站色大免费全看 | 中文字幕av无码一区二区三区电影 | 亚洲 另类 在线 欧美 制服 | a在线亚洲男人的天堂 | 久久精品国产精品国产精品污 | 性色av无码免费一区二区三区 | 老司机亚洲精品影院无码 | 草草网站影院白丝内射 | 亚洲自偷自拍另类第1页 | 国产97色在线 | 免 | 国产sm调教视频在线观看 | 精品乱码久久久久久久 | 自拍偷自拍亚洲精品10p | 亚洲呦女专区 | 精品少妇爆乳无码av无码专区 | 亚洲精品一区二区三区在线 | 99久久精品日本一区二区免费 | 强开小婷嫩苞又嫩又紧视频 | 伊人久久大香线蕉av一区二区 | 狠狠色噜噜狠狠狠狠7777米奇 | 久久久久国色av免费观看性色 | 国产午夜视频在线观看 | 夜夜高潮次次欢爽av女 | 免费无码一区二区三区蜜桃大 | 亚洲精品一区二区三区四区五区 | 亚洲中文字幕av在天堂 | 国产亚洲精品久久久久久大师 | 亚洲人成影院在线观看 | 久久精品成人欧美大片 | 妺妺窝人体色www在线小说 | 色婷婷综合中文久久一本 | 亚拍精品一区二区三区探花 | √天堂中文官网8在线 | 亚洲成a人片在线观看无码 | 奇米影视7777久久精品 | 欧美亚洲日韩国产人成在线播放 | 狠狠噜狠狠狠狠丁香五月 | 亚洲经典千人经典日产 | 国产精品第一区揄拍无码 | 久久99精品久久久久婷婷 | 国产人妻久久精品二区三区老狼 | 亚洲无人区午夜福利码高清完整版 | 丁香花在线影院观看在线播放 | 色婷婷综合中文久久一本 | 日韩人妻无码一区二区三区久久99 | 久热国产vs视频在线观看 | 暴力强奷在线播放无码 | 中文字幕无码热在线视频 | 青春草在线视频免费观看 | 成人无码视频免费播放 | 欧洲vodafone精品性 | 一区二区三区高清视频一 | 高清国产亚洲精品自在久久 | 男女作爱免费网站 | 国产suv精品一区二区五 | 亚洲区小说区激情区图片区 | 老熟女乱子伦 | 色五月五月丁香亚洲综合网 | 中文字幕 亚洲精品 第1页 | 偷窥村妇洗澡毛毛多 |