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

一口氣看完45個寄存器,CPU核心技術大揭秘

商務辦公
前段時間,我連續寫了十來篇CPU底層系列技術故事文章,有不少讀者私信我讓我寫一下CPU的寄存器。

[[347435]]

 序言

前段時間,我連續寫了十來篇CPU底層系列技術故事文章,有不少讀者私信我讓我寫一下CPU的寄存器。

寄存器這個太多太復雜,不適合寫故事,拖了很久,總算是寫完了,這篇文章就來詳細聊聊x86/x64架構的CPU中那些紛繁復雜的寄存器們。

長文預警,時速較快,請系好安全帶~起飛~

[[347436]]

 

自1946年馮·諾伊曼領導下誕生的世界上第一臺通用電子計算機ENIAC至今,計算機技術已經發展了七十多載。

從當初專用于數學計算的龐然大物,到后來大型機服務器時代,從個人微機技術蓬勃發展,到互聯網浪潮席卷全球,再到移動互聯網、云計算日新月異的當下,計算機變的形態各異,無處不在。

這七十多年中,出現了數不清的編程語言,通過這些編程語言,又開發了無數的應用程序。

 

可無論什么樣的應用程序,什么樣的編程語言,最終的程序邏輯都是要交付給CPU去執行實現的(當然這里有些不嚴謹,除了CPU,還有協處理器、GPU等等)。所以了解和學習CPU的原理都是對計算機基礎知識的夯實大有裨益。

在七十多年的漫長歷程中,也涌現了不少架構的CPU。

  • MIPS
  • PowerPC
  • x86/x64
  • IA64
  • ARM
  • ······

這篇文章就以市場應用最為廣泛的x86-x64架構為目標,通過學習了解它內部的100個寄存器功能作用,來串聯闡述CPU底層工作原理。

通過這篇文章,你將了解到:

  • CPU指令執行原理
  • 內存尋址技術
  • 軟件調試技術原理
  • 中斷與異常處理
  • 系統調用
  • CPU多任務技術

什么是寄存器?

寄存器是CPU內部用來存放數據的一些小型存儲區域,用來暫時存放參與運算的數據和運算結果以及一些CPU運行需要的信息。

x86架構CPU走的是復雜指令集(CISC) 路線,提供了豐富的指令來實現強大的功能,與此同時也提供了大量寄存器來輔助功能實現。這篇文章將覆蓋下面這些寄存器:

  • 通用寄存器
  • 標志寄存器
  • 指令寄存器
  • 段寄存器
  • 控制寄存器
  • 調試寄存器
  • 描述符寄存器
  • 任務寄存器
  • MSR寄存器

通用寄存器

首當其沖的是通用寄存器,這些的寄存器是程序執行代碼最最常用,也最最基礎的寄存器,程序執行過程中,絕大部分時間都是在操作這些寄存器來實現指令功能。

所謂通用,即這些寄存器CPU沒有特殊的用途,交給應用程序“隨意”使用。注意,這個隨意,我打了引號,對于有些寄存器,CPU有一些潛規則,用的時候要注意。

  • eax: 通常用來執行加法,函數調用的返回值一般也放在這里面
  • ebx: 數據存取
  • ecx: 通常用來作為計數器,比如for循環
  • edx: 讀寫I/O端口時,edx用來存放端口號
  • esp: 棧頂指針,指向棧的頂部
  • ebp: 棧底指針,指向棧的底部,通常用ebp+偏移量的形式來定位函數存放在棧中的局部變量
  • esi: 字符串操作時,用于存放數據源的地址
  • edi: 字符串操作時,用于存放目的地址的,和esi兩個經常搭配一起使用,執行字符串的復制等操作

在x64架構中,上面的通用寄存器都擴展成為64位版本,名字也進行了升級。當然,為了兼容32位模式程序,使用上面的名字仍然是可以訪問的,相當于訪問64位寄存器的低32位。

  1. rax rbx rcx rdx rsp rbp rsi rdi 

除了擴展原來存在的通用寄存器,x64架構還引入了8個新的通用寄存器:

  1. r8-r15 

在原來32位時代,函數調用時,那個時候通用寄存器少,參數絕大多數時候是通過線程的棧來進行傳遞(當然也有使用寄存器傳遞的,比如著名的C++ this指針使用ecx寄存器傳遞,不過能用的寄存器畢竟不多)。

進入x64時代,寄存器資源富裕了,參數傳遞絕大多數都是用寄存器來傳了。寄存器傳參的好處是速度快,減少了對內存的讀寫次數。

當然,具體使用棧還是用寄存器傳參數,這個不是編程語言決定的,而是編譯器在編譯生成CPU指令時決定的,如果編譯器非要在x64架構CPU上使用線程棧來傳參那也不是不行,這個對高級語言是無感知的。

標志寄存器

標志寄存器,里面有眾多標記位,記錄了CPU執行指令過程中的一系列狀態,這些標志大都由CPU自動設置和修改:

  • CF 進位標志
  • PF 奇偶標志
  • ZF 零標志
  • SF 符號標志
  • OF 補碼溢出標志
  • TF 跟蹤標志
  • IF 中斷標志
  • ······

 

在x64架構下,原來的eflags寄存器升級為64位的rflags,不過其高32位并沒有新增什么功能,保留為將來使用。

指令寄存器

eip: 指令寄存器可以說是CPU中最最重要的寄存器了,它指向了下一條要執行的指令所存放的地址,CPU的工作其實就是不斷取出它指向的指令,然后執行這條指令,同時指令寄存器繼續指向下面一條指令,如此不斷重復,這就是CPU工作的基本日常。

而在漏洞攻擊中,黑客想盡辦法費盡心機都想要修改指令寄存器的地址,從而能夠執行惡意代碼。

同樣的,在x64架構下,32位的eip升級為64位的rip寄存器。

段寄存器

段寄存器與CPU的內存尋址技術緊密相關。

早在16位的8086CPU時代,內存資源寶貴,CPU使用分段式內存尋址技術:

 

16位的寄存器能尋址的范圍是64KB,通過引入段的概念,將內存空間劃分為不同的區域:分段,通過段基址+段內偏移段方式來尋址。

這樣一來,段的基地址保存在哪里呢?8086CPU專門設置了幾個段寄存器用來保存段的基地址,這就是段寄存器段的由來。

段寄存器也是16位的。

段寄存器有下面6個,前面4個是早期16位模式就引入了,到了32位時代,又新增了fs和gs兩個段寄存器。

  • cs: 代碼段
  • ds: 數據段
  • ss: 棧段
  • es: 擴展段
  • fs: 數據段
  • gs: 數據段

段寄存器里面存儲的內容與CPU當前工作的內存尋址模式緊密相關。

當CPU處于16位實地址模式下時,段寄存器存儲段的基地址,尋址時,將段寄存器內容左移4位(乘以16)得到段基地址+段內偏移得到最終的地址。

當CPU工作于保護模式下,段寄存器存儲的內容不再是段基址了,此時的段寄存器中存放的是段選擇子,用來指示當前這個段寄存器“指向”的是哪個分段。

注意我這里的指向打了引號,段寄存器中存儲的并不是內存段的直接地址,而是段選擇子,它的結構如下:

 

16個bit長度的段寄存器內容劃分了三個字段:

  • PRL: 特權請求級,就是我們常說的ring0-ring3四個特權級。
  • TI: 0表示用的是全局描述符表GDT,1表示使用的是局部描述符表LDT。
  • Index: 這是一個表格中表項的索引值,這個表格叫內存描述符表,它的每一個表項都描述了一個內存分段。

這里提到了兩個表,全局描述符表GDT和局部描述符表LDT,關于這兩個表的介紹,下面介紹描述符寄存器時再詳述,這里只需要知道,這是CPU支持分段式內存管理需要的表格,放在內存中,表格中的每一項都是一個描述符,記錄了一個內存分段的信息。

保護模式下的段寄存器和段描述符到最后的內存分段,通過下圖的方式聯系在一起:

 

通用寄存器、段寄存器、標志寄存器、指令寄存器,這四組寄存器共同構成了一個基本的指令執行環境,一個線程的上下文也基本上就是這些寄存器,在執行線程切換的時候,就是修改它們的內容。

 

控制寄存器

控制寄存器是CPU中一組相當重要的寄存器,我們知道eflags寄存器記錄了當前運行線程的一系列關鍵信息。

那CPU運行過程中自身的一些關鍵信息保存在哪里呢?答案是控制寄存器!

 

32位CPU總共有cr0-cr4共5個控制寄存器,64位增加了cr8。他們各自有不同的功能,但都存儲了CPU工作時的重要信息:

  • cr0: 存儲了CPU控制標記和工作狀態
  • cr1: 保留未使用
  • cr2: 頁錯誤出現時保存導致出錯的地址
  • cr3: 存儲了當前進程的虛擬地址空間的重要信息——頁目錄地址
  • cr4: 也存儲了CPU工作相關以及當前人任務的一些信息
  • cr8: 64位新增擴展使用

其中,CR0尤其重要,它包含了太多重要的CPU信息,值得單獨關注一下:

 

一些重要的標記位含義如下:

PG: 是否啟用內存分頁

AM: 是否啟用內存對齊自動檢查

WP: 是否開啟內存寫保護,若開啟,對只讀頁面嘗試寫入時將觸發異常,這一機制常常被用來實現寫時復制功能

PE: 是否開啟保護模式

除了CR0,另一個值得關注的寄存器是CR3,它保存了當前進程所使用的虛擬地址空間的頁目錄地址,可以說是整個虛擬地址翻譯中的頂級指揮棒,在進程空間切換的時候,CR3也將同步切換。

調試寄存器

在x86/x64CPU內部,還有一組用于支持軟件調試的寄存器。

調試,對于我們程序員是家常便飯,必備技能。但你想過你的程序能夠被調試背后的原理嗎?

程序能夠被調試,關鍵在于能夠被中斷執行和恢復執行,被中斷的地方就是我們設置的斷點。那程序是如何能在遇到斷點的時候停下來呢?

 

對于一些解釋執行(PHP、Python、JavaScript)或虛擬機執行(Java)的高級語言,這很容易辦到,因為它們的執行都在解釋器/虛擬機的掌控之中。

而對于像C、C++這樣的“底層”編程語言,程序代碼是直接編譯成CPU的機器指令來執行的,這就需要CPU來提供對于調試的支持了。

對于通常的斷點,也就是程序執行到某個位置下就停下來,這種斷點實現的方式,在x86/x64上,是利用了一條軟中斷指令:int 3來進行實現的。

注意,這里的int不是指高級語言里面的整數,而是表示interrupt中斷的意思,是一條匯編指令,int 3則表示中斷向量號為3的中斷。

在我們使用調試器下斷點時,調試器將會把對應位置的原來的指令替換為一個int 3指令,機器碼為0xCC。這個動作對我們是透明的,我們在調試器中看到的依然是原來的指令,但實際上內存中已經不是原來的指令了。

順便提一句,兩個0xCC是漢字【燙】的編碼,在一些編譯器里,會給線程的棧中填充大量的0xCC,如果程序出錯的時候,我們經常會看到很多燙燙燙出現,就是這個原因。

 

言歸正傳,CPU在執行這條int 3指令時,將自動觸發中斷處理流程(雖然這實際上不是一個真正的中斷),CPU將取出IDTR寄存器指向的中斷描述符表IDT的第3項,執行里面的中斷處理函數。

而這個中斷描述符表,早在操作系統啟動之初,就已經提前安排好了,所以執行這條指令后,操作系統的中斷處理函數將介入,來處理這一事件。

后面的過程就多了,簡單來說,操作系統會把觸發這一事件的進程凍結起來,隨后將這一事件發送到調試器,調試器拿到之后就知道目標進程觸發斷點了。這個時候,咱們程序員就能通過調試器的UI交互界面或者命令行調試接口來調試目標進程,查看堆棧、查看內存、變量都隨你。

如果我們要繼續運行,調試器將會把之前修改的int 3指令給恢復回去,然后告知操作系統:我處理完了,把目標進程解凍吧!

上面簡單描述了一下普通斷點的實現原理?,F在思考一個場景:我們發現一個bug,某個全局整數型變量的值老是莫名其妙被修改,但你發現有很多線程,很多函數都有可能會去修改這個變量,你想找出到底誰干的,怎么辦?

這個時候上面的普通斷點就沒辦法了,你需要一種新的斷點:硬件斷點。

這時候就該本小節的主人公調試寄存器登場表演了。

 

在x86架構CPU內部,提供了8個調試寄存器DR0~DR7。

DR0~DR3:這是四個用于存儲地址的寄存器

DR4~DR5:這兩個有點特殊,受前面提到的CR4寄存器中的標志位DE位控制,如果CR4的DE位是1,則DR4、DR5是不可訪問的,訪問將觸發異常。如果CR4的DE位是0,則DR4和DR5將會變成DR6和DR7的別名,相當于做了一個軟鏈接。這樣做是為了將DR4、DR5保留,以便將來擴展調試功能時使用。

DR6:這個寄存器中存儲了硬件斷點觸發后的一些狀態信息

DR7:調試控制寄存器,這里面記錄了對DR0-DR3這四個寄存器中存儲地址的中斷方式(是對地址的讀,還是寫,還是執行)、數據長度(1/2/4個字節)以及作用范圍等信息

通過調試器的接口設置硬件斷點后,CPU在執行代碼的過程中,如果滿足條件,將自動中斷下來。

回答前面提出的問題,想要找出是誰偷偷修改了全局整形變量,只需要通過調試器設置一個硬件寫入斷點即可。

描述符寄存器

所謂描述符,其實就是一個數據結構,用來記錄一些信息,‘描述’一個東西。把很多個描述符排列在一起,組成一個表,就成了描述符表。再使用一個寄存器來指向這個表,這個寄存器就是描述符寄存器。

在x86/x64系列CPU中,有三個非常重要的描述符寄存器,它們分別存儲了三個地址,指向了三個非常重要的描述符表。

gdtr: 全局描述符表寄存器,前面提到,CPU現在使用的是段+分頁結合的內存管理方式,那系統總共有那些分段呢?這就存儲在一個叫全局描述符表(GDT)的表格中,并用gdtr寄存器指向這個表。這個表中的每一項都描述了一個內存段的信息。

ldtr: 局部描述符表寄存器,這個寄存器和上面的gdtr一樣,同樣指向的是一個段描述符表(LDT)。不同的是,GDT是全局唯一,LDT是局部使用的,可以創建多個,隨著任務段切換而切換(下文介紹任務寄存器會提到)。

 

GDT和LDT中的表項,就是段描述符,描述了一個內存分段的信息,其結構如下:

 

一個表項占據8個字節(32位CPU),里面存儲了一個內存分段的諸多信息:基地址、大小、權限、類型等信息。

除了這兩個段描述符寄存器,還有一個非常重要的描述符寄存器:

idtr: 中斷描述符表寄存器,指向了中斷描述符表IDT,這個表的每一項都是一個中斷處理描述符,當CPU執行過程中發生了硬中斷、異常、軟中斷時,將自動從這個表中定位對應的表項,里面記錄了發生中斷、異常時該去哪里執行處理函數。

 

IDT中的表項稱為Gate,中文意思為門,因為這是應用程序進入內核的主要入口。雖然表的名字叫中斷描述符表,但表中存儲的不全是中斷描述符,IDT中的表項存在三種類型,對應三種類型的門:

  • 任務門
  • 陷阱門
  • 中斷門

 

三種描述符中都存儲了處理這個中斷/異常/任務時該去哪里處理的地址。三種門用途不一,其中中斷門是真正意義上的中斷,而像前面提到的調試指令int 3以及老式的系統調用指令int 2e/int 80都屬于陷阱門。任務門則用的較少,要了解任務門,先了解下任務寄存器。

任務寄存器

現代操作系統,都是支持多任務并發運行的,x86架構CPU為了順應時代潮流,在硬件層面上提供了專門的機制用來支持多任務的切換,這體現在兩個方面:

  • CPU內部設置了一個專用的寄存器——任務寄存器TR,它指向當前運行的任務。

 

  • 定義了描述任務的數據結構TSS,里面存儲了一個任務的上下文(一系列寄存器的值),下圖是一個32位CPU的TSS結構圖:

 

x86CPU的構想是每一個任務對應一個TSS,然后由TR寄存器指向當前的任務,執行任務切換時,修改TR寄存器的指向即可,這是硬件層面的多任務切換機制。

這個構想其實還是很不錯的,然而現實卻打了臉,包括Linux和Windows在內的主流操作系統都沒有使用這個機制來進行線程切換,而是自己使用軟件來實現多線程切換。

所以,絕大多數情況下,TR寄存器都是指向固定的,即便線程切換了,TR寄存器仍然不會變化。

注意,我這里說的的是絕大多數情況,而沒有說死。雖然操作系統不依靠TSS來實現多任務切換,但這并不意味著CPU提供的TSS操作系統一點也沒有使用。還是存在一些特殊情況,如一些異常處理會使用到TSS來執行處理。

下面這張圖,展示了控制寄存器、描述符寄存器、任務寄存器構成的全貌:

 

模型特定寄存器

從80486之后的x86架構CPU,內部增加了一組新的寄存器,統稱為MSR寄存器,中文直譯是模型特定寄存器,意思是這些寄存器不像上面列出的寄存器是固定的,這些寄存器可能隨著不同的版本有所變化。這些寄存器主要用來支持一些新的功能。

隨著x86CPU不斷更新換代,MSR寄存器變的越來越多,但與此同時,有一部分MSR寄存器隨著版本迭代,慢慢固化下來,成為了變化中那部分不變的,這部分MSR寄存器,Intel將其稱為Architected MSR,這部分MSR寄存器,在命名上,統一加上了IA32的前綴。

這里選取三個代表性的MSR簡單介紹一下:

  • IA32_SYSENTER_CS
  • IA32_SYSENTER_ESP
  • IA32_SYSENTER_EIP

這三個MSR寄存器是用來實現快速系統調用。

在早期的x86架構CPU上,系統調用依賴于軟中斷實現,類似于前面調試用到的int 3指令,在Windows上,系統調用用到的是int 2e,在Linux上,用的是int 80。

軟中斷畢竟還是比較慢的,因為執行軟中斷就需要內存查表,通過IDTR定位到IDT,再取出函數進行執行。

系統調用是一個頻繁觸發的動作,如此這般勢必對性能有所影響。在進入奔騰時代后,就加上了上面的三個MSR寄存器,分別存儲了執行系統調用后,內核系統調用入口函數所需要的段寄存器、堆棧棧頂、函數地址,不再需要內存查表??焖傧到y調用還提供了專門的CPU指令sysenter/sysexit用來發起系統調用和退出系統調用。

在64位上,這一對指令升級為syscall/sysret。

總結

以上就是全部要介紹的寄存器了,需要說明一下的是,這并不是x86CPU全部所有的寄存器,除了這些,還存在XMM、MMX、FPU浮點數運算等其他寄存器。

這篇文章以x86/x64架構CPU為目標,通過對CPU內部寄存器的闡述,串講了CPU執行代碼機制、內存尋址技術、中斷與異常處理、多任務管理、系統調用、調試原理等多種計算機底層知識。

本文轉載自微信公眾號「編程技術宇宙」,可以通過以下二維碼關注。轉載本文請聯系編程技術宇宙公眾號。

 

責任編輯:武曉燕 來源: 編程技術宇宙
相關推薦

2023-12-18 23:09:25

開源優化引擎

2024-01-29 00:29:49

通信技術行業

2021-03-29 12:22:25

微信iOS蘋果

2021-06-08 22:43:07

IPC方式Qt

2020-03-31 08:12:25

Kafka架構數據庫

2021-12-06 08:30:49

SpringSpring Bean面試題

2025-05-14 01:55:00

FCMCPAI

2020-04-14 13:32:56

@Transacti失效場景

2020-10-22 12:30:33

MySQL

2020-09-24 09:08:04

分布式系統架構

2024-04-26 09:40:10

項目精度丟失javascrip

2021-03-01 18:52:39

工具在線瀏覽器

2020-11-26 10:14:49

機器人人工智能小冰

2024-03-28 12:52:00

AI模型

2022-05-24 11:50:46

延時消息分布式

2021-05-18 09:03:16

Gomapslice

2022-08-14 15:40:55

表情DIY

2020-07-08 07:45:44

OAuth2.0授權

2024-03-26 09:42:27

分片算法應用

2021-01-04 11:23:21

手機無線電通訊
點贊
收藏

51CTO技術棧公眾號

国产精品毛片| 91精品丝袜国产高跟在线| 国产无人区一区二区三区| 国产精品第3页| 日本精品在线免费观看| 日韩中文字幕在线一区| 亚洲电影一级黄| 欧洲一区二区在线观看| 国产日韩一级片| 亚洲综合日本| 欧美猛交ⅹxxx乱大交视频| 北京富婆泄欲对白| 国产精品久久久久久吹潮| 一区二区三区**美女毛片| 亚洲免费av网址| 在线观看av网页| 国内高清免费在线视频| 国产欧美一区二区三区鸳鸯浴| 亚洲最大福利网站| 一级黄色在线观看| 欧美视频网站| 欧美日韩亚洲国产综合| 激情图片qvod| 国产视频二区在线观看| 国产精品88av| 日韩免费在线看| 国产性猛交普通话对白| 久久综合99| 亚洲欧美精品中文字幕在线| 成年人看片网站| 九九热这里有精品| 精品久久久久久电影| 91网站在线观看免费| 久久久精品2019中文字幕神马| 国产人妻人伦精品| av中文在线| 91麻豆国产福利在线观看| 亚洲a区在线视频| 国产精品免费无遮挡无码永久视频| 欧美成人一品| 欧美日韩国产天堂| 国产h视频在线播放| 二区在线播放| 国产精品国产三级国产普通话蜜臀| 精品无人乱码一区二区三区的优势 | 亚洲视频日韩精品| 免费在线观看成年人视频| 91精品国产乱码久久久竹菊| 91精品国产乱码| 婷婷久久青草热一区二区 | 成人手机视频在线| av在线天堂播放| 国产亚洲成aⅴ人片在线观看 | 黄色片视频在线观看| eeuss国产一区二区三区| 国产福利久久精品| 亚洲第一黄色片| 国产99久久久国产精品免费看| 91啪国产在线| 国产视频一区二区三区四区五区| 经典三级在线一区| 久久99热精品| 日韩成人毛片视频| 欧美韩日精品| 欧美极品少妇全裸体| 久久99久久久| 亚洲黄页一区| 国产亚洲欧美日韩一区二区| 久久久久久亚洲中文字幕无码| 亚洲成a人片77777在线播放| 亚洲免费福利视频| 国产精成人品免费观看| 青青草97国产精品麻豆| 日韩免费福利电影在线观看| 亚洲制服在线观看| 凹凸成人在线| 日韩av最新在线观看| 精品无人区无码乱码毛片国产| 国产精品免费不| 在线播放国产精品二区一二区四区| 自拍偷拍21p| 免费精品一区二区三区在线观看| 欧美va日韩va| 97超碰在线免费观看| av资源久久| 久久综合五月天| 国产一级一片免费播放放a| 国产欧美日韩一区二区三区在线| 日本欧美黄网站| 一级黄色片在线看| 一区二区国产在线观看| www欧美日韩| 欧美在线视频第一页| 亚洲黄色影片| 国产日韩精品在线播放| 亚洲视频 欧美视频| 免费xxxx性欧美18vr| 亚洲综合av影视| 亚洲欧美色视频| 成人精品小蝌蚪| 久久综合伊人77777麻豆| av在线之家电影网站| 亚洲图片欧美综合| 美女喷白浆视频| 亚洲综合网站| 中文字幕日韩在线观看| 国产精品6666| 麻豆精品久久精品色综合| 国产福利久久精品| 美女隐私在线观看| 狠狠色狠狠色综合日日小说| 免费人成自慰网站| 欧美精品高清| 精品国产乱码久久久久久1区2区| 欧美多人猛交狂配| 亚洲精品2区| 国产精品99久久99久久久二8| aaa一区二区三区| 日本一区二区三级电影在线观看| 国产成a人亚洲精v品在线观看| 99亚洲伊人久久精品影院| 精品久久久久av影院| 三级黄色录像视频| 久久尤物视频| 九九九九九精品| 在线三级电影| 欧美日韩不卡在线| 一级黄色性视频| 亚洲黄色大片| 翡翠波斯猫1977年美国| 免费在线观看av网站| 欧洲精品中文字幕| 亚洲欧美日韩一级| 开心激情综合| 久久久久久久久久国产精品| 99国产精品欲| 中文字幕在线一区二区三区| 欧美性猛交久久久乱大交小说| 牛牛精品成人免费视频| 久久久久久久香蕉网| www.蜜桃av.com| 亚洲男人天堂一区| 污视频网址在线观看| 欧美精选一区二区三区| 日韩免费中文字幕| 飘雪影视在线观看免费观看| 久久久国产午夜精品| 成人免费视频91| 一区二区三区四区精品视频| 欧美成年人视频| 精品无码一区二区三区电影桃花| 精品亚洲成av人在线观看| 色狠狠久久av五月综合| 性欧美gay| 亚洲视频在线观看网站| 一级黄色大片视频| 久久精品人人做人人爽97| 91免费视频网站在线观看| 国产在视频一区二区三区吞精| 亚洲乱亚洲乱妇无码| 三级视频在线观看| 国产亚洲美州欧州综合国| 久久人妻精品白浆国产| 精品国内自产拍在线观看视频| 日本一区二区在线免费播放| 触手亚洲一区二区三区| 欧美日韩国产美女| 2025国产精品自拍| 高清av一区二区| 欧美一级在线看| 免费精品国产| 国产精品一二三视频| 精产国品自在线www| 日韩一卡二卡三卡国产欧美| 久久久全国免费视频| 99精品久久久久久| 性欧美极品xxxx欧美一区二区| 欧美gayvideo| 99热在线播放| 超级碰碰久久| 久久精品中文字幕免费mv| 性一交一乱一乱一视频| 精品国产乱码久久久久久虫虫漫画| av在线网站观看| 蜜臀99久久精品久久久久久软件| 国产一区二区三区播放| 国产三级精品三级在线观看国产| 国产97在线|亚洲| 免费av毛片在线看| 精品999久久久| 无码人妻丰满熟妇精品| 亚洲丝袜制服诱惑| 一起草在线视频| 免费欧美在线视频| 欧美图片激情小说| 国产欧美日韩| caoporen国产精品| 成人黄色免费短视频| 日韩中文字幕视频| 无码精品视频一区二区三区 | 国产精一区二区| 97视频在线观看视频免费视频| 岛国在线视频免费看| 日韩精品一区二区三区在线播放| 在线免费黄色av| 尤物av一区二区| 国产精品20p| 成人国产精品免费观看动漫| 手机看片福利盒子久久| 精品91久久久久| 在线成人av电影| 少妇高潮一区二区三区| 成人做爽爽免费视频| 欧美a级在线观看| 日韩一区二区三区xxxx| 亚洲av成人无码久久精品老人| 欧美精选一区二区| 国产视频91在线| 亚洲欧美日韩在线播放| 女同毛片一区二区三区| 国产成人免费在线| 国产成人美女视频| 日韩av电影一区| 国产成人无码精品久久久性色| 亚洲精品久久久| 亚洲欧洲一区二区福利| 伊人久久大香线蕉综合网站| 国产精品区免费视频| 深夜福利一区二区三区| 国产精品午夜国产小视频| 亚洲高清黄色| 日本老师69xxx| 亚洲欧美韩国| 国产亚洲精品91在线| 欧洲成人一区二区三区| 91精品国产综合久久久久| 在线观看免费观看在线| 日本高清视频一区二区| 男人天堂av在线播放| 午夜伦理一区二区| 日产欧产va高清| 亚洲在线视频一区| 欧美日韩在线视频免费| 成人久久久精品乱码一区二区三区 | 久久77777| 日韩一区二区av| 日韩大片在线永久免费观看网站| 亚洲性xxxx| 国产在线自天天| 国产亚洲欧洲高清一区| 国产裸舞福利在线视频合集| 亚洲男子天堂网| 激情小视频在线观看| 国产亚洲精品高潮| 都市激情一区| 综合激情国产一区| 337p日本欧洲亚洲大胆鲁鲁| 在线成人午夜影院| 一级特黄aa大片| 欧美军同video69gay| 91免费视频播放| 欧美一卡在线观看| 午夜精品久久久久久久第一页按摩| 日韩一区二区免费电影| 欧美熟妇交换久久久久久分类| 精品久久五月天| 少妇人妻精品一区二区三区| 日韩福利视频在线观看| 久久免费看视频| 日韩在线免费高清视频| 巨大荫蒂视频欧美另类大| 毛片精品免费在线观看| 欧美野外wwwxxx| 97精品久久久中文字幕免费| 激情黄产视频在线免费观看| 国产成人在线一区| 日韩在线电影| 91网站在线免费观看| 动漫3d精品一区二区三区乱码| 精品国产乱码久久久久久88av | 2021国产视频| 亚洲电影av| 91n.com在线观看| 国产精品自拍网站| 特级西西人体wwwww| 国产精品热久久久久夜色精品三区| 九九精品视频免费| 亚洲国产sm捆绑调教视频 | 国内在线视频| 国产成人亚洲综合91精品| 97久久精品一区二区三区的观看方式| 国产精品免费一区二区| 日韩午夜电影网| 久草视频国产在线| 蜜臀av在线播放一区二区三区| 国产无套精品一区二区三区| 久久久久久久精| 欧美做爰爽爽爽爽爽爽| 色域天天综合网| av综合在线观看| 国产午夜精品一区二区三区 | 亚洲 欧美 激情 小说 另类| 中文字幕av一区中文字幕天堂| 黄色污污视频在线观看| 国产精品日韩在线一区| 国偷自产视频一区二区久| 在线观看成人一级片| 久久大逼视频| 国产xxx在线观看| 中文字幕一区二区日韩精品绯色| 国产污污视频在线观看| 日韩三级在线免费观看| 国产青青草在线| 韩国精品久久久999| 91视频成人| 亚洲欧美在线网| 日韩和欧美一区二区三区| 不许穿内裤随时挨c调教h苏绵| 国产精品美女一区二区| 国内精品福利视频| 精品国产乱码久久久久久牛牛 | 中文字幕一区二区三区四| 免费高清在线视频一区·| 69xxx免费视频| 日韩理论片在线| 久久久久精彩视频| 亚洲精品综合久久中文字幕| 免费在线国产视频| 亚洲最大的免费| 99视频精品全部免费在线视频| aaa毛片在线观看| 91视频在线看| 国产午夜在线播放| 精品国产露脸精彩对白| 深夜国产在线播放| 91免费观看网站| 91亚洲国产| 嫩草视频免费在线观看| 国产精品三级视频| 久久久久久av无码免费看大片| 日韩精品中文字幕久久臀| av影院在线免费观看| www.成人三级视频| 精品动漫av| 免费不卡的av| 调教+趴+乳夹+国产+精品| 黄色一级大片在线免费看国产| 欧美日本啪啪无遮挡网站| 精品国产三级| japanese在线播放| 豆国产96在线|亚洲| 精品无码人妻一区二区三区品 | 欧美啪啪一区| 一区二区三区人妻| 一区二区三区欧美亚洲| 国产黄a三级三级三级| 欧美激情xxxxx| 国产乱论精品| 欧美视频在线观看网站| 91在线国产观看| 午夜影院免费在线观看| 亚洲系列中文字幕| 福利一区二区| 激情五月五月婷婷| 不卡免费追剧大全电视剧网站| 国产精品50页| 亚洲乱码国产乱码精品精天堂 | 91久久精品一区二区别| 欧美精品九九| 免费无码一区二区三区| 色先锋久久av资源部| h网站视频在线观看| 成人网在线免费观看| 欧美激情麻豆| 蜜桃精品成人影片| 欧美放荡的少妇| 超级碰碰不卡在线视频| 欧美性bbwbbwbbwhd| 88国产精品视频一区二区三区| 香蕉视频1024| 欧美日韩亚洲一区二区三区| а√天堂中文在线资源bt在线| 91在线视频一区| 亚洲日本黄色| 中文字幕在线观看二区| 欧美大片在线观看一区二区| 小h片在线观看| 亚洲五月六月| 日欧美一区二区| 老熟妻内射精品一区| 亚洲国产又黄又爽女人高潮的| 欧美精品资源| 青青草视频在线视频| 国产偷国产偷精品高清尤物| 国产精品日韩无码| 欧美一区在线直播| 一本一本久久a久久综合精品| 一级做a爰片毛片| 51精品久久久久久久蜜臀| 日韩理论视频|