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

從Hello World說程序運行機制

開發(fā) 前端
學習任何一門編程語言,都會從Hello World 開始。對于一門從未接觸過的語言,在短時間內(nèi)我們都能用這種語言寫出它的hello world。然而,對于hello world 這個簡單程序的內(nèi)部運行機制,我相信還有很多人都不是很清楚。

開篇

學習任何一門編程語言,都會從Hello World 開始。對于一門從未接觸過的語言,在短時間內(nèi)我們都能用這種語言寫出它的hello world。然而,對于hello world 這個簡單程序的內(nèi)部運行機制,我相信還有很多人都不是很清楚。

hello world 這些信息是如何通顯示器過顯示的?cpu執(zhí)行的代碼和程序中我們寫的的代碼肯定不一樣,她是什么樣子的?又是如何從我們寫的代碼變成cpu能執(zhí)行的代碼的?程序運行時代碼是在什么地方?她們是如何組織的?程序中的變量存儲在什么地方?函數(shù)調(diào)用是怎樣是現(xiàn)的?

這篇文章將簡單的討論程序的運行機制

開發(fā)平臺隱藏的過程

每一種語言都有自己的開發(fā)平臺,我們的程序大多是也都是在這里誕生的。從程序源代碼到可執(zhí)行文件的轉(zhuǎn)化過程其實是分很多步而且是很復雜的,只是而現(xiàn)在的開發(fā)平臺把所有的這些事情都自己承擔了,給我們帶來方便的同時她也影藏了大量的實現(xiàn)細節(jié)。所以大多程序員只負責編寫代碼,其它的復雜的轉(zhuǎn)換工作則由開發(fā)平臺默默完成。

按照我的理解,簡單 的說從源代碼到可執(zhí)行文件的過程可分為以下幾個階段:

1、從源代碼到機器語言并將產(chǎn)生的機器語言按照一定的規(guī)律組織起來。我們暫且稱為文件A。
2、把文件A和運行A需要的文件B(如庫函數(shù))鏈接起來,形成文件A+
3、把文件A+裝載進入內(nèi)存,運行文件
(其實如果是看參考書或者其他資料的話可能不止這幾步,只是這里為了簡化我把它歸納為3步)

這些事形成可執(zhí)行文件的關鍵步驟,缺一不可。現(xiàn)在看到被開發(fā)平臺“蒙蔽”了吧。下面的部分將撥開迷霧,還你開發(fā)平臺的真面目。

目標文件

在計算機領域有過一句經(jīng)典的話:

“any problem in computer science can be sloved by another layer of indirecition”
“計算機科學領域的任何問題都可以通過增加一個中間層來解決”

比如說要實現(xiàn)從A到B的轉(zhuǎn)換,可以先把A轉(zhuǎn)換為文件A+,再把文件A+轉(zhuǎn)換為我們需要的文件B。(其實在波利亞的《how to slove it》里面對這種方法也有敘述。在解題的時候可以通過增加中間層來簡化問題)

那么從源代碼到可執(zhí)行文件的過程可以這樣理解。從源代碼到可執(zhí)行文件也是一樣的, 通過(不斷的)在他們之間增加中間層,來解決問題。和上文說的, 先把源程序轉(zhuǎn)化為中間文件A,再把中間文件轉(zhuǎn)化為我們需要的目標文件。

在處理文件的時候就是按照這種思路來的。

其實上面說的文件A更專業(yè)的說法是:目標文件。她不是可執(zhí)行程序,需要和其它的目標文件進行鏈接、裝載后才能執(zhí)行。對于一個源程序, 開發(fā)平臺首先要做的就是把源程序翻譯成機器語言。其中很重要的一部就是編譯。相信很多人都知道,就是把源代碼翻譯成機器語言(其實就是一堆二進制代碼)。編譯知識很重要,卻不是本文的重點,有興趣的可自行google。

目標文件格式:

現(xiàn)在來看一下上面說的目標文件是如何組織的(也就是存放結(jié)構(gòu))。

起源:

想象一下如果是你來設計會如何組織這些二進制代碼?就像書桌上的物品要分類放置才整潔一樣,為了便于管理翻譯出來的二進制代碼也分類存放,把表示代碼的放在一起,表示數(shù)據(jù)的放在一起。這樣,二進制代碼就分為了不同的塊來存放。這樣的一個區(qū)域就是被稱為段(segment)的東西。

標準:

和計算機科學中的很多東西一樣,為了方便人們的交流、程序的兼容等問題。也為這種二進制的存放方式制訂了標準,于是COFF(common object file format)就誕生了。現(xiàn)在的windows、Linux、等主流操作系統(tǒng)下的目標文件格式和COFF大同小異,都可以認為是它的變種。

a.out:

a.out是目標文件的默認名字。也就是說,當編譯一個文件的時候,如果不對編譯后的目標文件重命名,編譯后就會產(chǎn)生一個名字為a.out的文件。具體的為什么會用這個名字這里就不在深究了。有興趣的可以自己google。

下面的圖可以讓你更直觀的了解目標文件:

上圖是目標文件的典型結(jié)構(gòu),實際的情況可能會有所差別,但都是在這個基礎上衍生出來的。

ELF文件頭:即上圖中的***個段。其中的header是目標文件的頭部,里面包含了這個目標文件的一些基本信息。如該文件的版本、目標機器型號、程序入口地址等等。

文本段:里面的數(shù)據(jù)主要是程序中的代碼部分。

數(shù)據(jù)段:程序中的數(shù)據(jù)部分,比如說變量。

重定位段

重定位段包括了文本重定位和數(shù)據(jù)重定位,里面包含了重定位信息。一般來說,代碼中都會存在引用了外部的函數(shù),或者變量的情況。既然是引用,那么這些函數(shù)、變量并沒存在該目標文件內(nèi)。在使用他們的時候, 就要給出他們的實際地址(這個過程發(fā)生在鏈接的時候)。正是這些重定位表,提供了尋找這些實際地址的信息。理解了上面之后,文本重定位和數(shù)據(jù)重定位也就不難理解了。

符號表:符號表包含了源代碼中所有的符號信息 。 包括每個變量名、函數(shù)名等等。里面記錄了每個符號的信息,比如說代碼中有“student”這個符號,對應的在符號表中就包括這個符號的信息。包括這個符號所在的段、它的屬性(讀寫權限)等相關信息。

其實符號表最初的來源可以說是在編譯的詞法分析階段。在做詞法分析的時候,就把代碼中的每個符號及其屬性都記錄在符號表中。

字符串表:和符號表差不多的功能,存放了一些字符串信息。
其中還有一點要說嗎的是:目標文件都是以二進制來存儲的,它本身就是二進制文件。
現(xiàn)實中的目標文件會比這個模型要復雜些,但是它的思路都是一樣的,就是按照類型來存儲,再加上一些描述目標文件信息的段和鏈接中需要的信息。

a.out剖分

Hello World

空口無憑,我們現(xiàn)在就來研究一下hello world編譯后形成的目標文件,這里用 C 來描述。
簡單的hellow world 源碼:

  1. /*hello.c*/ 
  2. #include<stdio.h> 
  3. int main() 
  4.   int a=5
  5.   printf("hellow world \n"); 

為了在數(shù)據(jù)段中也有數(shù)據(jù)可放,這里增加了“int a=5”。

如果在VC上的話,點擊運行便能看到結(jié)果。為了能看清楚內(nèi)部到底是如何處理的,我們使用GCC來編譯。

運行

gcc hello.c

再看我們的目錄下,就多了目標文件a.out。

2012030416254326

現(xiàn)在我們想做的是看看a.out里到底有什么,可能有童鞋回想到用vim文本查看,當時我也是這么天真的認為。但a.out是何等東西,怎能這么簡單就暴露出來呢 。是的,vim不行。“我們遇到的問題大多是前人就已經(jīng)遇到并且已經(jīng)解決的”,對,其中有一個很強悍的工具叫做objdump。有了它,我們就能徹底的去了解目標文件的各種細節(jié),當然還有一個叫做readelf也很有用,這個在后面介紹。這兩個工具一般Linux里面都會自帶有有,可以自行google

注:這里的代碼主要是在Linux下用GCC編譯,查看目標文件用的是Objdump、readelf。但是我會把所有的運行結(jié)果都上圖,所以之前沒有接觸過Linux的童鞋來看下面的內(nèi)容也完全沒問題哦。我用的是ubuntu,感覺挺好~

下面是a.out的組織結(jié)構(gòu):(每段的起始地址、、大小等等)
查看目標文件的命令是    objdump -h a.out

就和上文中描述的目標文件的格式一樣,可以看出是分類存儲的。目標文件被分為了6段。

從左到右,***列(Idx Name)是段的名字,第二列(Size)是大小 ,VMA為虛擬地址,LMA為物理地址,F(xiàn)ile off是文件內(nèi)的偏移。也就是這段相對于段中某一參考(一般是段起始)的距離。***的Algn是對段屬性的說明,暫時不用理會

“text”段:代碼段。

“data”段:也就是上面說的數(shù)據(jù)段,保存了源代碼中的數(shù)據(jù),一般是以初始化的數(shù)據(jù)。

“bss”段:也是數(shù)據(jù)段,存放那些未初始化的數(shù)據(jù),因為這些數(shù)據(jù)還未分配空間,所以單獨存放。

“rodata”段:只讀數(shù)據(jù)段,里面存放的數(shù)據(jù)是只讀的。

“cmment”存放的是編譯器版本信息。

剩下的兩段對我們的討論沒有實際意義,就不再介紹。認為他們包含了一些鏈接、編譯、裝在的信息就可。

注:

這里的目標文件格式只是列出實際情況中主要部分。實際情況還有一些表未列出。如果你也在用Linux,可以用objdump -X 列出更詳細的段內(nèi)容。

深入a.out

上面部分通過實例說了目標文件中的典型的段,主要是段的信息,如大小 等相關的屬性。

那么這些段里面究竟有些什么東西呢,“text”段里到底存了什么東西,還是用我們的objdump。

objdump -s a.out   通過-s選項就可以查看目標文件的十六進制格式。

查看結(jié)果如下:

2012030416293749

如上圖所示,列出了各段的十六進制表示形式。可以看出圖中共分為兩欄,左邊的一欄是十六進制的表示, 右邊則顯示相應的信息。比較明顯的如“rodata”只讀數(shù)據(jù)段中就有 “hello world”。。汗,好像程序里的“hello”打錯了,后面多加了一個“w”,截圖麻煩。原諒下哈。

你也可以查看“hellow world”的ASCII值,對應的十六進制就是里面的內(nèi)容了。“comment”上文中說的這個段包含了一些編譯器的版本信息,這個段后面的內(nèi)容就是了:GCC編譯器,后面的是版本號。

a.out反匯編

編譯的過程總是先把源文先變?yōu)閰R編形式,再翻譯為機器語言。(添加中間層嘛)看了這么多的a.out,再研究一下他的匯編形式是恨必要的

objdump -d a.out可以列出文件的匯編形式。不過這里只列出了主要部分,即main函數(shù)部分,其實在main函數(shù)執(zhí)行的開始和main函數(shù)執(zhí)行以后都還有多工作要做。即初始化函數(shù)執(zhí)行環(huán)境以及釋放函數(shù)占用的空間等。

2012030416311179

上面的圖中,左邊是代碼的十六進制形式,左邊是匯編形式。對匯編熟悉的童鞋應該能看懂大部分,這里就不在多述。

a.out頭文件

在介紹目標文件格式的時候,提到過頭文件這個概念,里面包含了這個目標文件的一些基本信息。如該文件的版本、目標機器型號、程序入口地址等等。

下圖是文件頭的形式:

可以用readelf -h 來查看。(下圖中查看的是 hello.o,它是源文件hello.c編譯但未鏈接的文件。 這個和查看a.out 大部分是一樣的)

2012030416324049

圖中分為兩欄,左邊一欄表示的是屬性,右邊是屬性值。***行常被稱為魔數(shù)。后面是一連串的數(shù)字,其中的具體含義就不多說了,可以自己去google。

接下來的是一些和目標文件相關的信息。由于和我們要討論的問題關系不大,這里就不展開討論了。

上面是內(nèi)容用具體的實例說了目標文件內(nèi)部的組織形式,目標文件只是產(chǎn)生可執(zhí)行文件過程中的一個中間過程,對于程序是如何運行的還沒做討論,目標文件是如何轉(zhuǎn)變?yōu)榭蓤?zhí)行文件以及可執(zhí)行文件是如何執(zhí)行的將在下面的部分中討論

對鏈接的簡單認識

鏈接通俗的說就是把幾個可執(zhí)行文件。如果程序A中引用了文件B中定義的函數(shù),為了A中的函數(shù)能正常執(zhí)行,就需要把B中的函數(shù)部分也放在A的源代碼中,那么將A和B合并成一個文件的過程就是鏈接了。有專門的過程用來鏈接程序,稱為鏈接器。他將一些輸入的目標文件加工后合成一個輸出文件。這些目標文件中往往有相互的數(shù)據(jù)、函數(shù)引用。

上文中我們看過了hello world的反匯編形式,是一個還沒有經(jīng)過鏈接的文件,也就是說當引用外部函數(shù)的時候是不知道其地址的,如下圖:

2012030512415488

上圖中,cal指令就是調(diào)用了printf()函數(shù),因為這時候printf()函數(shù)并不在這個文件中,所以無法確定它的地址,在十六進制中就用“ff ff ff ”來表示它的地址。等經(jīng)過鏈接以后,這個地址就會變?yōu)楹瘮?shù)的實際地址,應為連接后這個函數(shù)已經(jīng)被加載進入這個文件中了。

鏈接的分類:按把A相關的數(shù)據(jù)或函數(shù)合并為一個文件的先后可以把鏈接分為靜態(tài)鏈接和動態(tài)鏈接。

靜態(tài)鏈接:

在程序執(zhí)行之前就完成鏈接工作。也就是等鏈接完成后文件才能執(zhí)行。但是這有一個明顯的缺點,比如說庫函數(shù)。如果文件A 和文件B 都需要用到某個庫函數(shù),鏈接完成后他們連接后的文件中都有這個庫函數(shù)。當A和B同時執(zhí)行時,內(nèi)存中就存在該庫函數(shù)的兩份拷貝,這無疑浪費了存儲空間。當規(guī)模擴大的時候,這種浪費尤為明顯。靜態(tài)鏈接還有不容易升級等缺點。為了解決這些問題,現(xiàn)在的很多程序都用動態(tài)鏈接。

動態(tài)鏈接:和靜態(tài)鏈接不一樣,動態(tài)鏈接是在程序執(zhí)行的時候才進行鏈接。也就是當程序加載執(zhí)行的時候。還是上面的例子 ,如果A和B都用到了庫函數(shù)Fun(),A和B執(zhí)行的時候內(nèi)存中就只需要有Fun()的一個拷貝。
關于鏈接還有很多知識,以后會用專門的文章來談。這里就不展開講了。

對裝載的簡單解釋

我們知道,程序要運行是必然要把程序加載到內(nèi)存中的。在過去的機器里都是把整個程序都加載進入物理內(nèi)存中,現(xiàn)在一般都采用了虛擬存儲機制,即每個進程都有完整的地址空間,給人的感覺好像每個進程都能使用完成的內(nèi)存。然后由一個內(nèi)存管理器把虛擬地址映射到實際的物理內(nèi)存地址。

按照上文的敘述, 程序的地址可以分為虛擬地址和實際地址。虛擬地址即她在她的虛擬內(nèi)存空間中的地址,物理地址就是她被加載的實際地址。

2012030512583948

在上文中查看段 的時候或許你已經(jīng)注意到了,由于文件是未鏈接、未加載的,所以每個段的虛擬地址和物理地址都是0.

加載的過程可以這樣理解:先為程序中的各部分分配好虛擬地址,然后再建立虛擬地址到物理地址的映射。其實關鍵的部分就是虛擬地址到物理地址的映射過程。程序裝在完成之后,cpu的程序計數(shù)器pc就指向文件中的代碼起始位置,然后程序就按順序執(zhí)行。

小結(jié)一下

寫這篇文章的目的在于梳理程序運行的機制,在一個可執(zhí)行文件執(zhí)行的背后都隱藏了什么。從源代碼到可執(zhí)行文件通常要經(jīng)歷許多中間步驟,每一個中間步驟都生成一個中間文件。只是現(xiàn)在的集成開發(fā)環(huán)境都吧這些步驟影藏了,習慣于集成開發(fā)環(huán)境的我們也就逐漸的忽略了這些重要的技術內(nèi)幕。

這篇文章也只是介紹了一下這個過程的主線而已。其中的每一個細節(jié)展開來講都可足已用一篇文章來論述。上面寫的多是我個人的理解和看法。有不足的地方、還望能不吝賜教。

責任編輯:張燕妮 來源: Geek_Ling
相關推薦

2012-03-06 10:22:00

程序

2016-12-13 14:12:25

程序機制

2019-05-10 14:00:21

小程序運行機制前端

2010-03-15 15:18:23

Python運行

2015-11-20 11:20:54

js開發(fā)

2023-05-23 08:01:10

Netty網(wǎng)絡通信

2009-02-03 14:00:20

PHP運行PHP調(diào)用PHP原理

2009-12-11 10:52:37

PHP運行機制

2010-02-01 17:19:30

C++運行機制

2015-10-27 09:47:11

2017-06-26 08:55:52

2010-01-07 13:27:22

Linux驅(qū)動程序

2019-10-11 09:00:00

JavaScriptEvent Loop前端

2010-01-05 16:10:21

.NET Framew

2023-05-26 08:01:01

FacebookVelox機制

2019-08-15 10:17:16

Webpack運行瀏覽器

2018-12-26 16:30:09

SQL Server內(nèi)部運行機制數(shù)據(jù)庫

2010-02-23 10:15:22

WCF運行機制

2011-06-08 17:59:43

Qt Creator

2023-09-26 07:44:52

JavaJVM
點贊
收藏

51CTO技術棧公眾號

欧美男男青年gay1069videost| 久久久久久久久久久久久久久99 | 国产成人av一区二区三区| 精品一区在线观看视频| 日韩激情网站| 宅男在线国产精品| 亚洲国产精品久久久久婷蜜芽| 色哟哟免费在线观看| 成人福利视频网站| 国产欧美一区二区三区在线| 国产精品99精品无码视| 日韩在线视屏| 日韩精品高清在线| 两女双腿交缠激烈磨豆腐| videos性欧美另类高清| 亚洲欧美成aⅴ人在线观看 | 亚洲精品91| 亚洲欧美日韩一区在线| 男人女人拔萝卜视频| 亚洲四虎影院| 欧美日韩亚洲国产一区| 精品免费久久久久久久| 日本三级在线视频| 久久久777精品电影网影网| 99中文字幕| 91亚洲国产成人精品一区| 亚洲免费一区二区| 久久久人成影片一区二区三区观看 | 日韩中文视频免费在线观看| 中文字幕一区三区久久女搜查官| 国产精品视频一区二区三区| 91国产成人在线| 777久久久精品一区二区三区| 在线免费观看的av| 亚洲欧洲一区二区在线播放| 日本不卡二区高清三区| 欧美91精品久久久久国产性生爱| 成人一二三区视频| 91在线免费看片| 999av视频| 国产一区二区三区在线观看免费 | 日韩免费观看高清| 九九热在线视频播放| 国内精品久久久久久久影视蜜臀 | 麻豆一区二区三区精品视频| 91精品国产麻豆国产在线观看| 在线电影欧美日韩一区二区私密| 亚洲码无人客一区二区三区| 三级小说欧洲区亚洲区| 日韩成人黄色av| 国产又粗又长又爽| 亚洲人成网www| 亚洲欧美日韩在线高清直播| 三上悠亚影音先锋| 不卡中文一二三区| 色久欧美在线视频观看| 最新黄色av网址| 婷婷精品进入| 色综合男人天堂| 久草视频精品在线| 国产精品日韩| 国产精品美女久久久久av超清| 日批视频免费观看| 麻豆专区一区二区三区四区五区| 国产日韩欧美一二三区| 99久久精品国产成人一区二区 | 欧美做受xxxxxⅹ性视频| 美女亚洲一区| 日韩中文在线观看| 精品99在线观看| 亚洲清纯自拍| 国产精品白嫩美女在线观看| 一级特黄aaa大片| 国产大片一区二区| 久久精品aaaaaa毛片| 国产无套粉嫩白浆在线2022年| 国产精品欧美久久久久一区二区| 久久99国产精品一区| 欧美人与禽猛交乱配| 欧美日韩视频在线| 午夜国产福利在线观看| 在这里有精品| 国产亚洲精品久久久优势 | 国产精品www994| 26uuu亚洲伊人春色| 超碰在线免费97| 国产传媒久久文化传媒| 免费99视频| 1区2区在线观看| 日韩欧美在线视频日韩欧美在线视频 | 91国内外精品自在线播放| 91.麻豆视频| 成人无码www在线看免费| 一区二区xxx| 夜夜嗨aⅴ一区二区三区| 久久国产精品99久久人人澡| 岛国一区二区三区高清视频| 久草视频在线看| 亚洲乱码日产精品bd| 日韩久久一级片| 爱情电影网av一区二区| 精品一区二区三区三区| 黄色一级大片在线免费观看| 国产日韩欧美三级| 91黄在线观看| av午夜在线| 午夜精品免费在线观看| 黄色一级片免费播放| 夜夜春成人影院| 欧美黑人一级爽快片淫片高清| japanese国产在线观看| 成人免费视频一区二区| 日本女人高潮视频| 韩国成人在线| 日韩黄色在线免费观看| 九九视频免费在线观看| 久久国产夜色精品鲁鲁99| 久久久久久精| 成人女同在线观看| 在线不卡的av| 1024手机在线观看你懂的| 一二三区精品| 国产成人精品免费视频大全最热| 欧洲不卡av| 欧美在线免费播放| 女尊高h男高潮呻吟| 亚洲国产二区| 高清av免费一区中文字幕| 美女av在线播放| 在线观看视频一区二区| 18禁裸乳无遮挡啪啪无码免费| 伊人久久综合| 国产成人免费电影| 男插女视频久久久| 欧美大胆人体bbbb| 日韩女优一区二区| 国产精品99久久久久久宅男| 一区不卡字幕| 亚洲欧美一级| 久久这里只有精品99| 亚洲怡红院av| 最新不卡av在线| 国产欧美一区二| 日韩一区欧美| 91午夜理伦私人影院| 欧洲日本在线| 日韩亚洲欧美一区| 黄色一级视频免费| 成人黄色777网| 少妇高潮喷水在线观看| 欧美变态网站| 欧美怡春院一区二区三区| 手机看片福利在线观看| 色婷婷精品久久二区二区蜜臂av| av中文字幕免费观看| 日韩高清一级片| 亚洲成人av动漫| 在线观看网站免费入口在线观看国内| 精品视频中文字幕| 天天射天天干天天| 国产精品视频九色porn| 国产欧美一区二| 亚洲一级一区| 久久免费一区| 成人黄色在线| 欧美成人一区二区三区电影| 韩国av免费在线| 色综合一区二区| 国产视频不卡在线| 国产成人精品在线看| 成年人午夜视频在线观看| 视频国产一区| 91在线免费视频| av电影在线地址| 亚洲丝袜av一区| 99国产精品99| 黑人巨大精品欧美一区二区免费| av永久免费观看| 国产在线精品一区二区不卡了| 欧美在线观看黄| 色愁久久久久久| 国产在线不卡精品| 18video性欧美19sex高清| 亚洲欧美色图片| 国产精品自偷自拍| 欧美性猛交xxxx乱大交极品| 久久久国产一级片| 成人国产精品免费网站| 中文字幕在线导航| 亚洲香蕉网站| 亚洲电影网站| 福利片在线一区二区| 国产精品wwww| 久久香蕉av| 在线成人激情黄色| 特级丰满少妇一级aaaa爱毛片| 欧美三级视频在线观看| 日韩精品一区二区三区国语自制 | 新91视频在线观看| 狠狠色丁香九九婷婷综合五月| 免费看黄在线看| 天天影视天天精品| 欧美深深色噜噜狠狠yyy| 99精品在免费线中文字幕网站一区 | 亚洲免费电影一区| а√中文在线资源库| 欧美网站大全在线观看| 国产成人无码精品亚洲| 亚洲日本韩国一区| 国产小视频自拍| av亚洲精华国产精华精华| 国产欧美精品一二三| 日本欧美在线看| 欧美 日本 亚洲| 欧美三区不卡| 中文字幕免费在线不卡| 免费一区二区| 免费一区二区三区| 欧美a一欧美| 国产伦精品一区二区三区高清版| 亚洲高清影院| 国产欧美日韩高清| 国产综合色区在线观看| 5278欧美一区二区三区| 3344国产永久在线观看视频| 欧美成年人视频| 黄色一级片在线观看| 搡老女人一区二区三区视频tv| 全色精品综合影院| 日韩精品丝袜在线| 少妇一区二区三区四区| 精品剧情v国产在线观看在线| 国产av无码专区亚洲av| 欧美精品成人一区二区三区四区| 伊人久久亚洲综合| 欧美日韩亚洲综合在线 | 激情都市一区二区| 天天干天天操天天做| 免费av网站大全久久| 黄色成人免费看| 亚欧美中日韩视频| 欧美性大战久久久久xxx| 亚洲综合好骚| 亚洲精品一二三四五区| 日韩有码一区二区三区| 我看黄色一级片| 蜜臀va亚洲va欧美va天堂| 日日噜噜噜噜久久久精品毛片| 美女高潮久久久| 天天干天天av| 国产精品一二三四区| 国产乱国产乱老熟300部视频| 成人午夜伦理影院| 一级黄色免费视频| 91美女片黄在线观看91美女| a毛片毛片av永久免费| 久久久久88色偷偷免费| 女人裸体性做爰全过| 中文字幕一区二区不卡| 高h视频免费观看| 亚洲午夜一二三区视频| 国产微拍精品一区| 欧洲精品一区二区| 国产精品视频一二区| 精品国产乱码久久久久久1区2区| 人妻精品一区一区三区蜜桃91| 亚洲男人天堂古典| 思思99re6国产在线播放| 欧美日本中文字幕| 免费h在线看| 国产欧美一区二区三区在线看 | 男的操女的网站| 亚洲一区二区五区| 国产精品免费精品一区| 欧美日韩五月天| www.成人在线观看| 亚洲男人天堂网| 中中文字幕av在线| 日本sm极度另类视频| 四虎永久精品在线| 精品婷婷色一区二区三区蜜桃| 精品久久一区| 日韩国产小视频| 日韩电影在线一区二区| 中文字幕人妻熟女人妻a片| 91亚洲精华国产精华精华液| 欧美福利在线视频| 亚洲18女电影在线观看| 中文字幕日产av| 精品国产a毛片| 麻豆视频网站在线观看| 欧美亚洲国产成人精品| 国产精品一级在线观看| 玛丽玛丽电影原版免费观看1977| 91精品国产成人观看| 成熟老妇女视频| 国产福利91精品一区二区三区| 91精品久久久久久久久久久久| 亚洲网友自拍偷拍| 国产乱色精品成人免费视频| 精品香蕉一区二区三区| 亚洲电影视频在线| 国产精品自拍偷拍视频| 免费国产自久久久久三四区久久| 色哺乳xxxxhd奶水米仓惠香| 久久久精品五月天| 野战少妇38p| 亚洲欧美另类小说视频| 亚洲精品国产精品乱码视色| 日韩电影中文字幕一区| 在线播放免费av| 成人黄色影片在线| 日本不卡免费一区| 亚洲午夜精品久久久久久人妖| 国产九九视频一区二区三区| 东方伊人免费在线观看| 欧美香蕉大胸在线视频观看| 国产成人手机在线| 久久视频在线直播| 精品久久福利| 亚洲精品一区二区毛豆| 日韩精品免费视频人成| 久久国产精品影院| 黑丝美女久久久| 欧美综合视频在线| 欧美激情亚洲自拍| 亚洲啊v在线免费视频| 手机成人av在线| 久久9热精品视频| 激情无码人妻又粗又大| 欧美视频在线观看一区二区| 国产视频第一区| 国产精品9999| 久草精品在线| 99热手机在线| 国产女人水真多18毛片18精品视频| 成人毛片在线播放| 亚洲天堂网在线观看| 全亚洲第一av番号网站| 日本不卡一区二区三区视频| 日本系列欧美系列| 精品人体无码一区二区三区| 精品视频一区二区不卡| 日本蜜桃在线观看| 91美女片黄在线观| 中文字幕乱码亚洲无线精品一区| 成人高清在线观看视频| 亚洲黄色av一区| 欧美一级性视频| 777精品视频| 狠狠操综合网| 中文字幕有码av| 中文字幕综合网| 成人激情四射网| 韩国精品久久久999| 日韩mv欧美mv国产网站| 少妇性饥渴无码a区免费| 久久精品一区蜜桃臀影院| 无码人妻精品一区二区三区不卡| 国产午夜精品视频免费不卡69堂| 电影亚洲一区| 久久视频免费在线| 9i在线看片成人免费| 国产一级淫片a视频免费观看| 亚洲人成在线免费观看| 国产精品第一国产精品| 国产精品igao激情视频| 91视视频在线直接观看在线看网页在线看 | 9191在线视频| 欧美午夜精品久久久久久久| 成人精品一区二区三区免费| 91精品中文在线| 日韩午夜免费| 亚洲色图 激情小说| 日韩欧美一区二区三区在线| 乡村艳史在线观看| 一区二区在线观看网站| 99热国产精品| 中文字幕av资源| 久久免费成人精品视频| 狠狠色狠狠色综合婷婷tag| 91精品国产三级| 欧美性猛交xxxx乱大交3| 国产在线1区| 免费看污久久久| 国产成人综合网站| 香蕉污视频在线观看| 欧美人与性动交| 精品产国自在拍| 亚洲最大视频网| 欧美亚洲国产一区二区三区va| 影音先锋在线播放| 欧美一区二区福利| 国产激情一区二区三区四区| 97人妻一区二区精品视频| 欧美乱大交xxxxx| 日韩成人综合| 污污污www精品国产网站| 欧美日本在线一区| 成人欧美大片|