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

鴻蒙內核源碼分析(寄存器篇) | ARM37個寄存器一網打盡, 不再神秘

系統
文章由鴻蒙社區產出,想要了解更多內容請前往:51CTO和華為官方戰略合作共建的鴻蒙技術社區https://harmonyos.51cto.com

[[387309]]

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

本篇說清楚寄存器

ARM系列篇基于ARM720T.pdf文檔.

讀本篇之前建議先讀鴻蒙內核源碼分析(總目錄)arm體系系列篇.

寄存器的本質

寄存器從大一的計算機組成原理就開始聽到它,感覺很神秘,如夢如霧多年.揭開本質后才發現,寄存器就是一個32位的存儲空間,一個int變量而已,但它的厲害之處在于極高頻率的使用,讓人不敢相信是怎么做到的,不管再復雜再牛牛的應用程序,電商也好,游戲,直播也罷,到了它這里都變成了有限的十幾個寄存器在玩,簡直太神奇了. 本篇將清楚說明寄存器的數量和功能,至于它是如何把復雜的上層程序變成了這十幾個寄存器來玩?這是編譯器的事情,不在討論范圍之內.

ARM7有37個寄存器,具體看圖說明:

這些寄存器不能同時顯示,處理器指令狀態和工作模式指定哪些寄存器可供使用,圖中一一對應.

● 其中31個通用32位寄存器,系統和用戶模式全程復用寄存器,而其余5中異常(或叫特權)模式從R8_* ~ R14_* 的寄存器叫模式專屬寄存器.

● 注意 r8 和 r8_fiq是兩個不同的寄存器,名字前綴是為了好記,管理方便,以示同級概念理解.如此湊成了31個寄存器.

● 其中r13寄存器用于SP寄存器,始終指向棧頂,因為每種工作模式都有獨立的運行棧,所以有獨立的寄存器去記住各自的棧頂.

● 同理r14寄存器用于LR寄存器,用于保存模式切換時的切換位置,也是獨立存在,說明模式間回跳時并不需要重新給r14_*賦值,只需在跳出去的時候保存即可.

● 系統和用戶模式共用r13(sp)和r14(lr)寄存器,所以在每個子函數的棧幀中都要保存上一個調用它函數的SP和LR值,自己執行完成后要從棧幀中恢復這兩個寄存器的值,否則無法界定回去后從哪里開始,從哪里計算偏移位置.

● r15(pc)寄存器是指向代碼段的,所有模式復用的原因是它是共用的,一份代碼,你運行與不允許,代碼段就在哪里,不增不減.

● 6個狀態寄存器,其中CPSR(1個)和SPSR_*(5個),它們主要用于自運行或發生模式切換后的各種狀態保存.

● CPSR:程序狀態寄存器(current program status register) (當前程序狀態寄存器),在任何處理器模式下被訪問。

● SPSR:程序狀態保存寄存器(saved program status register),每一種處理器模式下都有一個狀態寄存器SPSR,SPSR用于保存CPSR的狀態,以便異常返回后恢復異常發生時的工作狀態。當特定 的異常中斷發生時,這個寄存器用于存放當前程序狀態寄存器的內容。在異常中斷退出時,可以用SPSR來恢復CPSR。

七種工作模式

關于工作模式在 鴻蒙內核源碼分析(總目錄)之工作模式篇中有詳細,可自行前往查看.此處只簡單說明下. 下圖來源于 ARM720T.pdf第43頁,在ARM體系中,CPU工作在以下七種模式中:

● 用戶模式(usr):屬于正常的用戶模式,不能直接切換到其他模式,ARM處理器正常的程序執行狀態。

● 快速中斷模式(fiq):支持高速數據傳輸及通道處理,FIQ異常響應時進入此模式

● 外部中斷模式(irq):用于通用中斷處理,IRQ異常響應時進入此模式

● 管理模式(svc):操作系統保護模式,系統復位和軟件中斷響應時進入此模式(由系統調用執行軟中斷SWI命令觸發)

● 數據訪問終止模式(abt):當數據或指令預取終止時進入該模式,可用于處理存儲器故障、實現虛擬存儲器和存儲器保護。

● 系統模式(sys):運行具有特權的操作系統任務,與用戶模式類似,但具有可以直接切換到其他模式等特權

● 未定義指令中止模式(und):處理未定義的指令陷阱,當未定義的指令執行時進入該模式,可用于支持硬件協處理器的軟件仿真。

除用戶模式外,其余6種工作模式都屬于特權模式

● 特權模式中除了系統模式以外的其余5種模式稱為異常模式

● 大多數程序運行于用戶模式

● 進入特權模式是為了處理中斷、異常、或者訪問被保護的系統資源

● 硬件權限級別:系統模式 > 異常模式 > 用戶模式

● 快中斷(fiq)與慢中斷(irq)區別:快中斷處理時禁止中斷

每種模式都有自己獨立的入口和獨立的運行棧空間. 系列篇之CPU篇 已介紹過只要提供了入口函數和運行空間,CPU就可以干活了.入口函數解決了指令來源問題,運行空間解決了指令的運行場地問題. 而且在多核情況下,每個CPU核的每種特權模式都有自己獨立的棧空間.注意是特權模式下的棧空間,用戶模式的棧空間是由用戶(應用)程序提供的.

R0 寄存器

R0是寄存器中的王牌,被稱為頭號寄存器,通用寄存器中它用的最高頻,隨便翻段匯編代碼都能看到它的影子.鴻蒙開機第一跳指令就是 r0 = 0

  1. reset_vector: //鴻蒙開機代碼 
  2.     /* clear register TPIDRPRW */ 
  3.     mov     r0, #0                  @r0 = 0 
  4.     mcr     p15, 0, r0, c13, c0, 4  @c0,c13 = 0, C13為進程標識符 含義見 ARM720T.PDF 第64頁 
  5.     /* do some early cpu setup: i/d cache disable, mmu disabled */ @禁用MMU, i/d緩存 
  6.     mrc     p15, 0, r0, c1, c0, 0   @r0 = c1 ,c1寄存器詳細解釋見第64頁 
  7.     bic     r0, #(1<<12)            @位清除指令,清除r0的第11位 
  8.     bic     r0, #(1<<2 | 1<<0)      @清除第0和2位 ,禁止 MMU和緩存 0位:MMU enable/disable 2位:Cache enable/disable 
  9.     mcr     p15, 0, r0, c1, c0, 0   @c1=r0  

再看拿自旋鎖的匯編代碼,這些代碼都在系列篇中詳細講解過,可前往鴻蒙內核源碼分析(總目錄)自行查看.

  1. FUNCTION(ArchSpinLock)  @非要拿到鎖 
  2.     mov     r1, #1      @r1=1 
  3. 1:                      @循環的作用,因SEV是廣播事件.不一定lock->rawLock的值已經改變了 
  4.     ldrex   r2, [r0]    @r0 = &lock->rawLock, 即 r2 = lock->rawLock 
  5.     cmp     r2, #0      @r2和0比較 
  6.     wfene               @不相等時,說明資源被占用,CPU核進入睡眠狀態 
  7.     strexeq r2, r1, [r0]@此時CPU被重新喚醒,嘗試令lock->rawLock=1,成功寫入則r2=0 
  8.     cmpeq   r2, #0      @再來比較r2是否等于0,如果相等則獲取到了鎖 
  9.     bne     1b          @如果不相等,繼續進入循環 
  10.     dmb                 @用DMB指令來隔離,以保證緩沖中的數據已經落實到RAM中 
  11.     bx      lr          @此時是一定拿到鎖了,跳回調用ArchSpinLock函數 

R0被潛規則的干了兩件事,突出了它的重要性:

● 第一個參數 由R0保管,當然第二個參數就給R1保管

● 函數的返回值統一交給R0保管, 例如 a -> b ,b執行完會把返回值給r0,回到a后,a從r0取值,不管取到什么,它就認為這是b的返回值,默認都只認r0保存了返回值,這就是規定.

具體看一個C函數和它的匯編,在系列篇也已經講過,可自行翻看.

  1. //++++++++++++ square(c -> 匯編)++++++++++++++++++++++++ 
  2. int square(int a,int b){ 
  3.     return a*b; 
  4. square(intint): 
  5.         sub     sp, sp, #8     @sp減去8,意思為給square分配棧空間,只用2個棧空間完成計算 
  6.         str     r0, [sp, #4]   @第一個參數入棧 
  7.         str     r1, [sp]       @第二個參數入棧 
  8.         ldr     r1, [sp, #4]   @取出第一個參數給r1 
  9.         ldr     r2, [sp]       @取出第二個參數給r2 
  10.         mul     r0, r1, r2     @執行a*b給R0,返回值的工作一直是交給R0的 
  11.         add     sp, sp, #8     @函數執行完了,要釋放申請的棧空間 
  12.         bx      lr             @子程序返回,等同于mov pc,lr,即跳到調用處 
  13. //++++++++++++ fp(c -> 匯編)++++++++++++++++++++++++ 
  14. int fp(int b) 
  15.     int a = 1; 
  16.     return square(a+b,a+b); 
  17. fp(int): 
  18.         push    {r11, lr}      @r11(fp)/lr入棧,保存調用者main的位置 
  19.         mov     r11, sp        @r11用于保存sp值,函數棧開始位置  
  20.         sub     sp, sp, #8     @sp減去8,意思為給fp分配棧空間,只用2個棧空間完成計算 
  21.         str     r0, [sp, #4]   @先保存參數值,放在SP+4,此時r0中存放的是參數 
  22.         mov     r0, #1         @r0=1 
  23.         str     r0, [sp]       @再把1也保存在SP的位置 
  24.         ldr     r0, [sp]       @把SP的值給R0 
  25.         ldr     r1, [sp, #4]   @把SP+4的值給R1 
  26.         add     r1, r0, r1     @執行r1=a+b 
  27.         mov     r0, r1         @r0=r1,用r0,r1傳參 
  28.         bl      square(intint)@先mov lr, pc 再mov pc square(intint)    
  29.         mov     sp, r11        @函數執行完了,要釋放申請的棧空間  
  30.         pop     {r11, lr}      @彈出r11和lr,lr是專用標簽,彈出就自動復制給lr寄存器 
  31.         bx      lr             @子程序返回,等同于mov pc,lr,即跳到調用處 

這段代碼同樣適用于理解以下的各個寄存器.

R7 寄存器

為啥要單獨講R7寄存器,因為它偶爾作為特殊寄存器在使用.內核對上層應用提供了數百個系統調用功能,當發生系統調用時,在CPU工作模式切換過程中,系統調用號是一直保存在R7寄存器中的,通過系統調用號就能查詢到對應的注冊函數.具體在 系統調用篇中有詳細的過程說明,這里只列出部分代碼

  1. //4個參數的系統調用時底層處理 
  2. static inline long __syscall4(long n, long a, long b, long c, long d) 
  3.     register long a7 __asm__("a7") = n; //將系統調用號保存在R7寄存器 
  4.     register long a0 __asm__("a0") = a; //R0 
  5.     register long a1 __asm__("a1") = b; //R1 
  6.     register long a2 __asm__("a2") = c; //R2 
  7.     register long a3 __asm__("a3") = d; //R3 
  8.     __asm_syscall("r"(a7), "0"(a0), "r"(a1), "r"(a2), "r"(a3)) 
  9. //切換到SVC模式后,由匯編代碼調用由C語言實現的系統調用統一入口 
  10. LITE_OS_SEC_TEXT UINT32 *OsArmA32SyscallHandle(UINT32 *regs) 
  11.     UINT32 ret; 
  12.     UINT8 nArgs; 
  13.     UINTPTR handle; 
  14.     UINT32 cmd = regs[REG_R7];// 從R7寄存器中取出系統調用號 
  15.     handle = g_syscallHandle[cmd];//查詢系統調用的注冊函數  
  16.     //... 

fp(R11) 寄存器

R11:可以用作通用寄存器,在開啟特定編譯選項時可以用作幀指針寄存器FP,用來實現棧回溯功能。 GNU編譯器(gcc)默認將R11作為存儲變量的通用寄存器,因而默認情況下無法使用FP的棧回溯功能。為支持調用棧解析功能,需要在編譯參數中添加-fno-omit-frame-pointer選項,提示編譯器將R11作為FP使用。

FP寄存器(Frame Point),幀指針寄存器,指向當前函數的父函數的棧幀起始地址。利用該寄存器可以得到父函數的棧幀,從棧幀中獲取父函數的FP,就可以得到祖父函數的棧幀,以此類推,可以追溯程序調用棧,得到函數間的調用關系。

在鴻蒙內核R11是當FP寄存器使用.

SP(R13) 寄存器

SP:棧指針寄存器(stack pointer),指向函數棧的棧頂,如此 fp 和 sp 就劃定了函數棧的范圍,函數在運行期間除了動態申請的內存要跑出去玩,其余就在這塊空間里玩.

在鴻蒙內核R13是當SP寄存器使用.

LR(R14) 寄存器

異常的發生會導致程序正常運行的被打斷, 并將控制流轉移到相應的異常處理(異常響應),有些異常(fiq、irq)事件處理后,系統還希望能回 到當初異常發生時被打斷的源程序斷點處繼續完成源程序的執行(異常返回),這就需要一種解決方案, 用于記錄源程序的斷點位置,以便正確的異常返回。 類似的還有子程序的調用和 返回。在主程序中(通過子程序調用指令)調用子程序時,也需要記錄下主程序中的調用點位置,以便將來的子程序的返回。 LR:鏈接寄存器(linked pointer),就是用來解決上述問題的,ARM處理器中使用 R14實現對斷點和調用點的記錄,即R14用作返回連接寄存器(LR),確保回來知道自己從哪個位置中斷,以便繼續執行.

在鴻蒙內核R14是當LR寄存器使用.

PC(R15) 寄存器

pc:程序計數寄存器(Program Counter Register) 向代碼段取指令,指向代碼段具體位置,PC寄存器涉及到arm的流水線結構設計,具體在后續流水線篇中詳細說明,敬請關注. 在鴻蒙內核R15是當PC寄存器使用.

CPSR 寄存器

CPSR(current program status register)當前程序的狀態寄存器 CPSR有4個8位區域:標志域(F)、狀態域(S)、擴展域(X)、控制域(C) 32 位的程序狀態寄存器可分為4 個域:

1.位[31:24]為條件標志位域,用f 表示;

2.位[23:16]為狀態位域,用s 表示;

3.位[15:8]為擴展位域,用x 表示;

4.位[7:0]為控制位域,用c 表示;

CPSR和其他寄存器不一樣,其他寄存器是用來存放數據的,都是整個寄存器具有一個含義. 而CPSR寄存器是按位起作用的,也就是說,它的每一位都有專門的含義,記錄特定的信息.

CPSR的低8位(包括I、F、T和M[4:0])稱為控制位,程序無法修改, 除非CPU運行于特權模式下,程序才能修改控制位

N、Z、C、V均為條件碼標志位。它們的內容可被算術或邏輯運算的結果所改變, 并且可以決定某條指令是否被執行!意義重大!

● CPSR的第31位是 N,符號標志位。它記錄相關指令執行后,其結果是否為負. 如果為負 N = 1,如果是非負數 N = 0.

● CPSR的第30位是Z,0標志位。它記錄相關指令執行后,其結果是否為0. 如果結果為0.那么Z = 1.如果結果不為0,那么Z = 0.

● CPSR的第29位是C,進位標志位(Carry)。一般情況下,進行無符號數的運算。 加法運算:當運算結果產生了進位時(無符號數溢出),C=1,否則C=0。 減法運算(包括CMP):當運算時產生了借位時(無符號數溢出),C=0,否則C=1。

● CPSR的第28位是V,溢出標志位(Overflow)。在進行有符號數運算的時候, 如果超過了機器所能標識的范圍,稱為溢出。

MSR{條件} 程序狀態寄存器(CPSR 或SPSR)_<域>,操作數 MSR 指令用于將操作數的內容傳送到程序狀態寄存器的特定域中 示例如下:

  1. MSR CPSR,R0   @傳送R0 的內容到CPSR 
  2.     MSR SPSR,R0   @傳送R0 的內容到SPSR 
  3.     MSR CPSR_c,R0 @傳送R0 的內容到CPSR,但僅僅修改CPSR中的控制位域 

MRS{條件} 通用寄存器,程序狀態寄存器(CPSR 或SPSR) MRS 指令用于將程序狀態寄存器的內容傳送到通用寄存器中。該指令一般用在以下兩種情況: 1) 當需要改變程序狀態寄存器的內容時,可用MRS 將程序狀態寄存器的內容讀入通用寄存器,修改后再寫回程序狀態寄存器。 2) 當在異常處理或進程切換時,需要保存程序狀態寄存器的值,可先用該指令讀出程序狀態寄存器的值,然后保存。 示例如下:

  1. MRS R0,CPSR   @傳送CPSR 的內容到R0 
  2. MRS R0,SPSR   @傳送SPSR 的內容到R0 
  3.                @MRS指令是唯一可以直接讀取CPSR和SPSR寄存器的指令 

SPSR 寄存器

SPSR(saved program status register)程序狀態保存寄存器.五種異常模式下一個狀態寄存器SPSR,用于保存CPSR的狀態,以便異常返回后恢復異常發生時的工作狀態。

● 1、SPSR 為 CPSR 中斷時刻的副本,退出中斷后,將SPSR中數據恢復到CPSR中。

● 2、用戶模式和系統模式下SPSR不可用,所以SPSR寄存器只有5個

留個問題

從R11 ~ R15 寄存器除了R12都用著專用寄存器,用作為特殊用途,單獨獨R12夾在中間不上不下的,這又是為什么呢?

參與貢獻

● 訪問注解倉庫地址

● Fork 本倉庫 >> 新建 Feat_xxx 分支 >> 提交代碼注解 >> 新建 Pull Request

● 新建 Issue

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

 

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2023-09-06 18:37:45

CSS選擇器符號

2024-04-26 00:25:52

Rust語法生命周期

2024-02-27 10:11:36

前端CSS@規則

2021-08-05 06:54:05

流程控制default

2017-07-05 14:37:07

Linux調試器寄存器和內存

2009-12-17 17:31:38

2023-09-14 12:35:28

寄存器

2009-04-20 14:55:20

思科配置寄存器

2018-10-22 12:18:50

存儲器內存寄存器

2021-02-26 08:46:46

PHY寄存器網絡

2023-04-03 08:30:54

項目源碼操作流程

2021-10-11 07:55:42

瀏覽器語法Webpack

2020-10-15 14:50:24

寄存器CPU部件

2010-08-25 01:59:00

2011-12-02 09:22:23

網絡管理NetQos

2013-08-02 10:52:10

Android UI控件

2024-04-07 08:41:34

2024-08-26 10:01:50

2024-06-12 00:00:05

2021-08-13 07:56:13

CPU寄存器數據
點贊
收藏

51CTO技術棧公眾號

国产一区二区三区朝在线观看| 青青青草原在线| 亚洲无毛电影| 亚洲另类图片色| 中文字幕av专区| 手机在线免费看av| 久久久99精品免费观看不卡| 91香蕉国产在线观看| 国产一级做a爰片在线看免费| 曰本一区二区三区视频| 日韩一区二区三区观看| 欧美国产亚洲一区| 久草免费在线| 久久久美女艺术照精彩视频福利播放| 成人国产精品一区| 天天综合网久久综合网| 色小子综合网| 日韩久久免费视频| 熟妇无码乱子成人精品| 日本免费久久| 亚洲777理论| 亚洲开发第一视频在线播放| 熟妇人妻一区二区三区四区 | 色哟哟精品视频| 高清电影在线免费观看| 国产精品国产三级国产普通话99| 国产久一道中文一区| 国产一区二区麻豆| 性伦欧美刺激片在线观看| 欧美精品在线免费| 99在线视频免费| 欧美三级午夜理伦三级小说| 日韩欧美在线一区二区三区| 国产三级三级看三级| 欧美aa一级| 午夜精品成人在线| 高清无码视频直接看| 欧美黄色激情| 欧洲成人免费aa| 欧美综合在线播放| a免费在线观看| 国产精品色哟哟| 欧美大香线蕉线伊人久久国产精品 | 国产视频在线观看视频| 日韩高清不卡一区| 欧美与黑人午夜性猛交久久久| 久久97人妻无码一区二区三区| 五月综合激情| 久久精品这里热有精品| 国产午夜精品福利视频| 激情婷婷综合| 国产午夜精品全部视频播放| 亚洲激情视频小说| 国产探花在线精品| 亚洲最新av在线网站| 精品国产无码在线观看| 免费欧美一区| 亚洲午夜色婷婷在线| 波多野结衣片子| 综合亚洲色图| 亚洲香蕉成人av网站在线观看| 成人h动漫精品一区| 亚洲天堂日韩在线| 亚洲三级免费看| 久操视频在线观看免费| 不卡av一区二区| 久久久国产视频91| 欧美成人三级视频| 亚洲国产91| 91精品国产91久久久久福利| 日韩欧美国产亚洲| 久久久www| 国产精品白丝jk喷水视频一区| 国产三级理论片| 韩国v欧美v亚洲v日本v| 国产精品久久精品视| 婷婷视频在线观看| 欧美国产综合一区二区| 国产91porn| 91资源在线观看| 日韩欧美国产网站| 校园春色 亚洲色图| 成人在线视频国产| 欧美精品一区二区三区久久久| 欧美无人区码suv| 精品国产一区二区三区香蕉沈先生 | 五月久久久综合一区二区小说| 色一区av在线| 国产真实的和子乱拍在线观看| 久久国产66| 成人午夜一级二级三级| 欧美 日韩 综合| 国产网站一区二区三区| 天堂av在线中文| 亚洲欧美韩国| 欧美区在线观看| 中文在线观看免费视频| 日韩精品影视| 午夜精品久久久久久99热| 无码人妻丰满熟妇奶水区码| 激情综合一区二区三区| 久久综合九色99| 国产精品刘玥久久一区| 色综合久久久久久久| 成人免费播放视频| 欧美日韩国产在线观看网站 | 亚洲精品88| 欧美精品tushy高清| 精品人妻人人做人人爽夜夜爽| 免费av一区二区三区四区| 欧美乱妇高清无乱码| 国语对白做受69按摩| 丁香婷婷综合色啪| 在线电影看在线一区二区三区| 嗯啊主人调教在线播放视频| 欧美另类videos死尸| 国产美女喷水视频| 欧美日韩亚洲国产精品| 国产一区视频在线播放| 免费在线国产| 午夜精品一区在线观看| 先锋资源在线视频| 99久久99久久精品国产片果冰| 欧美一区第一页| 日本黄色不卡视频| 一区二区在线看| 日本不卡一区二区在线观看| 国产毛片一区二区三区| 51精品在线观看| 国产综合在线播放| 亚洲女与黑人做爰| 国产日韩欧美久久| 欧美日韩老妇| 欧美综合国产精品久久丁香| 人妻一区二区三区| 亚洲一区二区三区四区在线观看| 黄色aaaaaa| 青青草91久久久久久久久| 日韩美女毛茸茸| 亚洲av成人无码久久精品老人 | 午夜在线视频免费观看| 国产激情欧美| 中文日韩在线视频| 日批视频免费观看| 国产精品久线观看视频| 日韩av片网站| 欧美激情理论| 成人国产精品久久久| 欧美精品hd| 在线综合视频播放| 538精品在线视频| 国产精品自拍三区| 国产盗摄视频在线观看| 欧美另类中文字幕| 欧美丰满片xxx777| 亚洲伦理在线观看| 午夜久久电影网| 无码h肉动漫在线观看| 久久精品麻豆| 亚洲精品欧美精品| 国产人与zoxxxx另类91| 欧美高清性猛交| 手机看片福利在线| 色婷婷激情一区二区三区| 国产传媒国产传媒| 久久99国内精品| 女人床在线观看| 开心激情综合| 国产精品高清在线观看| 欧美性猛交xxx乱大交3蜜桃| 日韩亚洲欧美在线| 日产亚洲一区二区三区| 久久久精品中文字幕麻豆发布| 亚欧在线免费观看| 香蕉久久网站| 国产精品一区二区三区精品| 在线观看特色大片免费视频| 亚洲天堂精品在线| 国产免费一区二区三区最新不卡| 亚洲一区二区三区视频在线| 熟女少妇一区二区三区| 久久国产精品色婷婷| 欧美久久久久久久久久久久久久| 日韩三区视频| 国产日韩在线一区| heyzo在线欧美播放| 一区二区三区www| 国产av无码专区亚洲av| 福利一区视频在线观看| jizzjizzjizz国产| 成人国产精品视频| 色婷婷狠狠18| 亚洲国产精品第一区二区三区| 日韩免费电影一区二区| 日韩中文字幕视频网| 日韩av成人在线观看| 最新日本在线观看| 亚洲欧美在线第一页| 亚洲第九十九页| 色综合久久66| 麻豆91精品91久久久| 国产午夜精品一区二区| 97精品人人妻人人| 美女一区二区三区在线观看| 国精产品一区一区三区视频| 日韩在线观看一区| 蜜桃av噜噜一区二区三| 精品中文字幕一区二区三区四区| 热99精品里视频精品| 少女频道在线观看免费播放电视剧| 亚洲欧美成人精品| 国产香蕉在线观看| 欧美精品久久天天躁| 日韩精品一区二区亚洲av| 亚洲专区一二三| 小向美奈子av| 欧美激情资源网| 久久精品一区二区免费播放| 国产成人免费视频网站 | 免费日韩一级片| 亚洲激情成人在线| 免费看一级黄色| 国产女人aaa级久久久级| 完美搭档在线观看| 国产高清在线观看免费不卡| 久久婷五月综合| 久久一区精品| 免费无码国产v片在线观看| 欧美日韩亚洲一区二区三区在线| 一区二区三区四区五区视频| 视频一区在线观看| 人禽交欧美网站免费| 日韩激情网站| 久久免费99精品久久久久久| aaa国产精品| 国产精品日韩欧美一区二区| 国产精品日本一区二区不卡视频| 国产人妖伪娘一区91| 日韩制服一区| 国产精品第七十二页| 亚洲人免费短视频| 欧美专区中文字幕| 婷婷六月国产精品久久不卡| 国产91九色视频| 桃子视频成人app| 日本道色综合久久影院| 国产日韩电影| 国产大片精品免费永久看nba| 中文字幕资源网在线观看免费| 91黄色8090| 日韩av大片站长工具| 国产精品福利在线| 成人黄色免费观看| 成人午夜一级二级三级| 欧美电影在线观看一区| 国产精品欧美久久| 牛牛影视久久网| 欧美国产一二三区| 欧美精品乱码| 7777在线视频| 欧美网站在线| 成人免费aaa| 久久精品网址| 一级做a免费视频| 国产成a人亚洲| 欲求不满的岳中文字幕| 久久久久久久久久看片| 欧洲性xxxx| 一二三四区精品视频| 久久久久久久久久影院| 欧美午夜免费电影| 国产ts变态重口人妖hd| 亚洲国产精品系列| 成人福利在线| 美乳少妇欧美精品| 毛片在线网站| 国产精品久久久av| 亚洲一区二区电影| 欧美二区在线| 91av精品| 欧美 日韩 国产一区| 久久er精品视频| 妖精视频一区二区| 久久精品一区四区| 蜜臀久久精品久久久用户群体| 亚洲777理论| 一级黄色录像大片| 亚洲国产精品视频在线观看| 91精品专区| 欧美激情中文网| 国产精品字幕| 国产精品果冻传媒潘| 欧美三级三级| 日韩国产一级片| 毛片av一区二区| 欧美双性人妖o0| 国产精品九色蝌蚪自拍| 日本三级小视频| 91精品国产麻豆国产自产在线 | 国产在线视频欧美一区| 久久狠狠久久综合桃花| 亚洲国产精品久久久天堂| 青青艹视频在线| 国产在线国偷精品免费看| 国产男男chinese网站| 亚洲精品国久久99热| 91青青草视频| 亚洲精品91美女久久久久久久| 日日夜夜精品一区| 欧美在线视频播放| aaa国产精品| 香蕉视频在线网址| 免费日本视频一区| 亚洲午夜福利在线观看| 亚洲高清免费观看| 国产av无码专区亚洲a∨毛片| 中文在线不卡视频| 欧美自拍电影| 蜜桃麻豆91| 在线不卡视频| 久久久久亚洲av片无码v| 国产精品视频看| 亚洲欧美偷拍视频| 日韩av在线一区二区| 欧美24videosex性欧美| 亚洲一区二区日本| 国产精品久久久久久影院8一贰佰| 黄色国产精品视频| 97精品国产露脸对白| 日本一二三区不卡| 精品国产乱码久久久久久久久 | 亚洲精品911| 久久中文字幕在线视频| 日韩三区四区| 亚洲一区精彩视频| 六月丁香婷婷久久| 你懂得视频在线观看| 色哦色哦哦色天天综合| 黄色av免费在线看| 日韩av电影在线播放| 天天躁日日躁狠狠躁欧美巨大小说 | 阿v免费在线观看| 国产成人a亚洲精品| 亚洲婷婷丁香| 99re在线视频免费观看| 99久久伊人精品| 99热只有这里有精品| 亚洲国产欧美精品| 午夜激情在线播放| 欧美精品欧美精品| 狂野欧美性猛交xxxx巴西| 欧美特黄一区二区三区| 色欧美日韩亚洲| sese在线视频| 91久久久久久国产精品| 欧美一区二区三区久久精品| 久草福利在线观看| 亚洲高清久久久| 毛片免费在线播放| 国产精品久久久久久久久久东京 | 国产亚洲成精品久久| 日韩中文视频| 美女黄色片网站| 成人性生交大片免费看视频在线| 国产精品suv一区二区69| 日韩av网站大全| 日韩三区免费| 国产精品av免费| 成人性生交大合| 久久国产黄色片| 中文字幕久久久av一区| 国产成人视屏| 可以在线看的av网站| 国产欧美在线观看一区| 国产乱码精品一区二三区蜜臂| 九九九久久国产免费| 欧美影院天天5g天天爽| 亚洲欧洲日本精品| 亚洲国产日韩精品| 国内精品在线视频| 91亚洲国产精品| 亚洲在线网站| 亚洲天堂av中文字幕| 欧美大胆人体bbbb| 亚洲永久av| 男同互操gay射视频在线看| 99久久国产综合精品女不卡 | 欧美不卡一区二区三区| 无遮挡爽大片在线观看视频| 亚洲欧美日韩在线综合 | 在线小视频你懂的| 日韩女优视频免费观看| 另类专区亚洲| 久久久无码中文字幕久...| 国产亚洲精品资源在线26u| 国产女人高潮时对白| 国产ts一区二区| 午夜精品免费| 女人黄色一级片| 亚洲精品电影在线观看|