日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

程序员的自我修养 - 读书笔记文字版

發(fā)布時(shí)間:2024/3/13 编程问答 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 程序员的自我修养 - 读书笔记文字版 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

第1部分 簡(jiǎn)介

第1章 溫故而知新

  • 程序在運(yùn)行的時(shí)候先通過分段(segmentation)的方式將虛擬地址空間與真實(shí)的物理內(nèi)存地址空間進(jìn)行一一的映射,但是這種方式每次換入換出的是整個(gè)程序,導(dǎo)致IO變大,更具局部性原理,可以采用分頁(Paging)來解決. 分頁就是將地址空間人為的等分成固定大小的頁,每頁的大小(4KB或者4MB)由操作系統(tǒng)確定。 幾乎所有操作系統(tǒng)都采用4KB的分頁,那么對(duì)于一個(gè)32位的程序來說,最多只能有4GB/4KB = 1048576頁, 物理空間也是同樣的分法。但是當(dāng)真實(shí)物理空間不夠虛擬空間的頁數(shù)的時(shí)候,真正有效的空間以真實(shí)內(nèi)存空間為準(zhǔn)。頁的映射是由MMU部件來完成的。MMU一般集成在CPU內(nèi)部。

  • 外設(shè)使用總線地址,CPU使用物理地址。x86平臺(tái)上,物理地址和總線地址相同。

  • 線程可以分為IO密集型線程和CPU密集型線程,當(dāng)CPU密集型線程的優(yōu)先級(jí)較高的時(shí)候,可能會(huì)導(dǎo)致低優(yōu)先級(jí)的線程被餓死,而IO密集型線程獲得較高優(yōu)先級(jí)的時(shí)候,由于大部分時(shí)間是處于等待狀態(tài),所以不叫不容易造成其他線程的餓死。 如果一個(gè)線程長(zhǎng)時(shí)間得不到執(zhí)行,調(diào)度系統(tǒng)會(huì)逐步提升它的優(yōu)先級(jí)讓它執(zhí)行。

  • 線程還可以分為搶占線程和不搶占線程,搶占線程是那些時(shí)間片用完之后會(huì)被剝奪執(zhí)行權(quán)的線程,不可搶占線程是那些除非執(zhí)行完畢否則不能剝奪執(zhí)行權(quán)的線程。時(shí)至今日,非搶占線程已經(jīng)十分罕見。

  • windows對(duì)于進(jìn)程和線程的實(shí)現(xiàn)如同教科書一般的標(biāo)準(zhǔn),但是在linux中其實(shí)并沒有嚴(yán)格的線程和進(jìn)程的概念,Linux中所有的執(zhí)行實(shí)體都被成為任務(wù)Task,每一個(gè)任務(wù)概念上類似于一個(gè)單線程的進(jìn)程,但是它的不同任務(wù)之間可以選擇共享內(nèi)存空間,因此在實(shí)際意義上共享了同一內(nèi)存空間的多個(gè)任務(wù)構(gòu)成了一個(gè)進(jìn)程。

  • 為了保證多線程環(huán)境下操作的原子性,有以下幾種辦法:
    6.1 鎖
    6.2 二元信號(hào)量和多元信號(hào)量
    6.3 互斥量,和上面兩個(gè)的區(qū)別是哪個(gè)線程建立的互斥量就必須由哪個(gè)線程去釋放
    6.4 臨界區(qū),和上面幾種的區(qū)別是,哪個(gè)進(jìn)程創(chuàng)建臨界區(qū)的鎖,就由哪個(gè)進(jìn)程獲取,對(duì)其他進(jìn)程不可見。
    6.5 讀寫鎖,有兩種獲取方式獨(dú)占式和共享式,區(qū)別如下

  • 讀寫鎖狀態(tài)以共享方式獲取以獨(dú)占方式獲取自由成功成功共享成功等待獨(dú)占等待等待
    6.6 條件變量 ,相當(dāng)于一個(gè)柵欄
  • 可重入線程是并發(fā)安全的強(qiáng)力保障,一個(gè)可重入的函數(shù)可以在多線程環(huán)境下放心使用。

  • 三種線程模型
    8.1 一對(duì)一模型
    8.2 多對(duì)一模型
    8.3 多對(duì)多模型


  • 第2部分 - 靜態(tài)鏈接

    第2章 編譯和鏈接

  • 程序編譯運(yùn)行的流程是 預(yù)編譯-編譯-匯編-鏈接, 命令分別是:
    gcc -E xx.c -o xx.i
    gcc -S xx.i -o xx.s 或者(cc1 xx.i)
    gcc -c xx.s -o xx.o 或者(as xx.s -s xx.o)
    以及 ld xxx.o xxxx.o xxxx.o等

  • 目標(biāo)文件即.obj文件或者.o文件,本質(zhì)上是函數(shù)的集合,用于重定位, 他們的內(nèi)部函數(shù)和變量的存儲(chǔ)方式和真正的可執(zhí)行文件一樣只是在結(jié)構(gòu)上稍有不同。

  • 第3章 目標(biāo)文件里有什么

  • PC流行的PE文件格式和ELF文件格式都是COEF格式的變種。

  • bss段只是為全局變量和局部靜態(tài)變量預(yù)留位置,在elf文件中不占空間。

  • x86的cpu中字節(jié)序采用小端模式存儲(chǔ)(所以elf文件中變量的存儲(chǔ)采用小端), arm架構(gòu)的cpu中采用大端,網(wǎng)絡(luò)字節(jié)序(TCP/IP)采用大端傳輸。

  • elf文件主要包含,代碼段(.text)和數(shù)據(jù)段(.data, .rodata, .bss), 未初始化的全局變量和和未初始化的局部靜態(tài)變量被存放在.bss段(有時(shí)候未初始化的全局變量也會(huì)存放在符號(hào)表中)。 字符串一般在.rodata段,也有的在.data段。值得一提的是賦值為0的局部靜態(tài)變量也會(huì)被認(rèn)為是未賦值從而放置在bss 段而不是data段。 attribute 命令可以在代碼中指定變量或者函數(shù)存放在elf文件的那一段

  • reaelf -h xx.o可以輸出elf文件的文件頭信息。 ELF文件最開始的16個(gè)字節(jié)代表了ELF文件的平臺(tái)屬性,其中前四個(gè)字節(jié)是ELF文件的魔數(shù),不同平臺(tái)的魔術(shù)不同(ELF的魔數(shù)是0x7f, 0x45, 0x4c, 0x46 即 DEL控制符,‘E’,‘L’,‘F’ PE/COEF的魔數(shù)是0x01, 0x07, 即’M’,‘Z’), 操作系統(tǒng)在加載可執(zhí)行文件的時(shí)候會(huì)確認(rèn)魔數(shù)是否正確,如果不正確會(huì)拒絕加載。
    第5個(gè)字節(jié)是用來標(biāo)識(shí)文件類型,0x01是32位的,0x02是64位的。第6個(gè)字節(jié)表示字節(jié)序是大段或者小端,第七個(gè)字節(jié)表示ELF的主版本,一般是1。后面9個(gè)字節(jié)沒有指定,表示可擴(kuò)展。

  • ELF文件中段表的位置由e_shoff成員決定,即(Start of section headers的值決定段表的起始位置)。 readelf -S xx.o 可以顯示真正的段表結(jié)構(gòu)。

  • elf文件中段表是其中的一個(gè)段,段表里面存儲(chǔ)了其他各個(gè)段的起始地址和大小還有其他一些信息。

  • 符號(hào)表里面存儲(chǔ)了全局變量,全局函數(shù)和行號(hào)和用于調(diào)式和核心轉(zhuǎn)儲(chǔ)的局部符號(hào),行號(hào)等信息,鏈接器在鏈接的時(shí)候只關(guān)注全局函數(shù)和變量。 可重定位文件中包含的局部信息對(duì)其他重定位文件來說都是不可見的,只有全局函數(shù)和變可見。可以用nm來查看elf文件的符號(hào)結(jié)果。 符號(hào)表也是elf文件中的一個(gè)段,段名一般叫做.symtab

  • readelf -s xx.o可以打印輸出elf包含的符號(hào)表的信息。 分別有符號(hào)的類型,值(函數(shù)或者變量的地址),大小,綁定信息(局部,全局,弱引用), Ndx表示符號(hào)所在的段的下標(biāo),該下標(biāo)可以通過readelf -a xx.o 看到。 值得注意的是符號(hào)表中第一個(gè)符號(hào),即下標(biāo)為0的符號(hào)永遠(yuǎn)是一個(gè)未定義的符號(hào)。
    對(duì)于STT_SECTION類型的符號(hào),它們的符號(hào)名沒有顯示,其Ndx所對(duì)應(yīng)的段名也就是這里的符號(hào)名, 因?yàn)樗麄兪嵌蚊?hào)。可以通過 objdump -t 看到這種段名符號(hào)

  • 特殊符號(hào)是由ld鏈接器定義的,程序中只需要申明就可以使用,程序在最終鏈接的時(shí)候會(huì)自動(dòng)轉(zhuǎn)化為正確的值,例如__executeable_start, __etext或_etext或etext, _edata或者edata, _end或者end等等。

  • 為了防止函數(shù)和全局變量在各文件之間的命名沖突。但是隨著操作系統(tǒng)和編譯器的分化,GCC已經(jīng)不用在符號(hào)前面加_但是windows平臺(tái)下的編譯器還保持著前面加_這樣的傳統(tǒng)。此外GCC在windows平臺(tái)下下編譯器例如cywin和mingw還保持著這樣的傳統(tǒng)。GCC本身可以通過編譯器選項(xiàng)-fleading-underscore或者-fno-leading-underscore來打開或關(guān)閉是否在C語言符號(hào)前加下劃線。

  • 函數(shù)簽名是C++引入的區(qū)別不同類,命名空間等不同作用域名中相同名稱的成員的機(jī)制 binutils提供的 c++filt命令可以解析一個(gè)函數(shù)修飾后名稱對(duì)應(yīng)的真正的函數(shù)簽名。一般規(guī)則是對(duì)于在命名空間或者類的中的變量和函數(shù)其前面一般是_ZN開頭,以E(+)i/f/d結(jié)尾。最后值得說明的是不同平臺(tái)的編譯器的對(duì)同一函數(shù)的函數(shù)簽名可能是不同的。 VC++的函數(shù)簽名方法沒用向外公開,但是其UndecorateSymbolName()的api可以將修飾后的名稱轉(zhuǎn)換成函數(shù)簽名。
    由于不同編譯器采用不同的名字修飾方法,所以導(dǎo)致了不同編譯器產(chǎn)生的目標(biāo)文件無法正常的相互鏈接,這也是導(dǎo)致不同編譯器之間不能互操作的主要原因之一。
    目標(biāo)文件即OBJ文件是跨平臺(tái)的

  • extern "C"{}語句會(huì)導(dǎo)致受作用的變量和函數(shù)名在修飾之后采用的是C語言的格式而不是C++. 對(duì)于同一個(gè)變量或者函數(shù),C++和C語言的修飾不一樣,為了讓C++能正確引用并使用C語言的符號(hào),通常在聲明這個(gè)函數(shù)的時(shí)候會(huì)先判斷當(dāng)前的編譯單元是C還是C++即使用下面的語句

  • #ifdef __cplusplus extern "C"{ #endifvoid *memset {void *, int , size_t};#ifdef __cplusplus } #endif

    這種技巧幾乎出現(xiàn)在任何系統(tǒng)頭文件中(源文件已經(jīng)判斷了C或者cpp所以不需要這樣寫)

  • 強(qiáng)符號(hào)和弱符號(hào),一般初始化了的全局變量和函數(shù)未強(qiáng)符號(hào)而未初始化的全局變量為弱符號(hào),強(qiáng)若符號(hào)有以下規(guī)則
  • 14.1 不允許強(qiáng)符號(hào)重復(fù)定義 14.2 如果一個(gè)符號(hào)在某個(gè)目標(biāo)文件中是強(qiáng)符號(hào),其他目標(biāo)文件中是弱符號(hào),則選擇強(qiáng)符號(hào) 14.3 如果一個(gè)符號(hào)在多個(gè)目標(biāo)文件中都是若符號(hào),則選擇占用空間最大的那個(gè)。

    弱符號(hào)和鏈接器的COMMON塊概念的聯(lián)系很緊密

    15 強(qiáng)引用和弱引用: 如果引用的一個(gè)庫中的符號(hào)沒用被定義,則鏈接時(shí)候會(huì)報(bào)為定義錯(cuò)誤,這是強(qiáng)引用, 這種情況不報(bào)錯(cuò)的就屬于弱引用。 弱引用和弱符號(hào)對(duì)庫十分有用,因?yàn)檫@樣用戶可以自定義庫中函數(shù),也可以在去掉了某些模塊之后程序依然可以正常鏈接,著使得程序更容易裁剪和組合。

    16 使用gcc/g++ -g參數(shù)可以在目標(biāo)文件中保存調(diào)試信息,ELF文件的標(biāo)準(zhǔn)調(diào)試信息格式是DWARF, 目前是 DWARF 3, 微軟的調(diào)試信息標(biāo)準(zhǔn)格式叫CodeView. 調(diào)試信息通常數(shù)倍于ELF文件本身的內(nèi)容, 發(fā)布時(shí)候必須去掉。 在Linux下,可以使用strip去掉ELF文件中的調(diào)試信息


    第4章 靜態(tài)鏈接

  • 空間地址分配有按序疊加和相似段合并兩種方法,一般都使用相似段合并的方法。最后的可執(zhí)行文件當(dāng)中包含了可重定位的.o文件里面的所有指令。

  • Linux下,ELF可執(zhí)行文件默認(rèn)地址從0x08048000開始分配。生成的可執(zhí)行elf文件中的.text段是各個(gè).o文件的.text段大小之和

  • elf文件中需要重定位的段都有一個(gè)相對(duì)于重定位段(表), 利用objdump -r xx.o 可以查看目標(biāo)文件的重定位表。

  • 對(duì)于弱符號(hào),即未初始化的全局變量,由于在編譯成目標(biāo)文件之后,編譯器不能確定其大小,所以將其放在COMMON塊中,但是當(dāng)鏈接器分析完各個(gè)目標(biāo)文件之后就可以確定其大小,從而將其放在BSS段,所以總體來看,未初始化的全局變量還是放在BSS段的。可以在GCC編譯的時(shí)候使用fno-common指定未賦值的全局變量不在COMMON塊中, 也可可以在代碼中寫__attribbute__ ((nocommon))將其當(dāng)成強(qiáng)符號(hào)處理。

  • 重復(fù)代碼消除,例如C++的模板技術(shù)使得模板可以在多個(gè)源文件中別實(shí)例化但是編譯器并不能知道它在多處被同一種數(shù)據(jù)類型實(shí)例化,所以現(xiàn)在主流編譯器例如GNU 的做法是在每一個(gè)目標(biāo)文件中對(duì)于一個(gè)模板的同一種實(shí)例化使用一種相同的名稱,這樣在鏈接階段,鏈接器會(huì)檢查這些重復(fù)的段并只保留一份。GCC把這種段叫"Link Once"命名為".gnu.linkonce.name" . VC++叫做COMDAT,
    這種做法的一個(gè)潛在的問題是,當(dāng)編譯器對(duì)不同的編譯單元使用不同的編譯優(yōu)化選項(xiàng)的時(shí)候,可能會(huì)使得相同名稱的段有不同的內(nèi)容,編譯器的做法是隨意選擇一個(gè)作為鏈接的輸入且提供警告信息。

  • 函數(shù)級(jí)別鏈接: 通常的鏈接過程都是文件或者編譯單元級(jí)別的鏈接,但是當(dāng)只需要使用某個(gè)目標(biāo)為見中的一個(gè)函數(shù)或變量的時(shí)候,就需要全部包含該文件,導(dǎo)致體積很大,編譯器為此專門提供了函數(shù)級(jí)別的鏈接,與重復(fù)代碼消除和相似,編譯器將所有函數(shù)都想模板函數(shù)一樣單獨(dú)保存到一個(gè)段中,需要的時(shí)候再將其包含到輸出文件,其他的則直接拋棄,這雖然較小的最終文件的體積但是由于段的數(shù)目增減,減慢了編譯和鏈接的過程。GCC使用-fdata-sections和-ffunction-sections可以將變量或者函數(shù)分別保存到獨(dú)立的段中。

  • 全局構(gòu)造與析構(gòu): 全局對(duì)象的構(gòu)造在main函數(shù)之前執(zhí)行,全局對(duì)象的析構(gòu)在main函數(shù)之后哦執(zhí)行,Linux下的入口函數(shù)是_start,用于在main執(zhí)行前進(jìn)行初始化。為此,ELF文件提供了兩個(gè)特殊的段.init和.fini。其中.init中保存的指令是main執(zhí)行之前Glibc的初始化部分, .fini中是main函數(shù)正常退出之后Glibc會(huì)安排執(zhí)行的代碼。

  • 為了使得不同平臺(tái)的目標(biāo)文件兼容,即可以相互鏈接,這些文件必須有一直的ABI(Application Binary Interface),即二進(jìn)制兼容,ABI內(nèi)容包括符號(hào)修飾標(biāo)準(zhǔn),變量?jī)?nèi)存布局,函數(shù)調(diào)用方式等等。廠商不希望用戶看見自己的源代碼所以會(huì)提供二進(jìn)制版本,所以二進(jìn)制兼容在大型項(xiàng)目中變得很重要。目前編譯器的兩大陣營(yíng) VISUAL C++和GNU 的GCC各執(zhí)己見互不兼容。ABI兼容問題還有待解決

  • 一個(gè)靜態(tài)庫文件(.a)是由許多.o文件合并而來的,linux下使用ar -t xx.a可以查看.a文件中包含的.o文件。在windows平臺(tái)下可以使用lib /LIST xx.lib查看

  • 可以使用objdump -t xx.a | grep xxx查找特定的目標(biāo)文件。使用gcc -static --verbose -fno-builtin hello.c可以將編譯鏈接過程的中間步驟打印出來, 即使我們寫的代碼非常簡(jiǎn)單,這也是一個(gè)非常長(zhǎng)的依賴關(guān)系。這個(gè)過程會(huì)鏈接部分會(huì)顯示collect2這是ld的一個(gè)包裝,會(huì)調(diào)用ld

  • BFD(Binary File Descriptor library)是基于所有硬件平臺(tái)(不同的處理器和目標(biāo)文件格式)的一個(gè)抽象層,基于BFD可以不用關(guān)心具體的硬件格式,而進(jìn)行統(tǒng)一操作,因?yàn)锽FD中已經(jīng)包含了這些CPU和可執(zhí)行文件的格式信息,ubuntu下BFD軟件包的名字叫binutils-dev.

  • 第5章

  • windows上的目標(biāo)文件為COEF格式,而可執(zhí)行文件是PE格式,PE又是COEF格式衍生出來的, 所以將這類文件統(tǒng)稱為PE/COEF格式

  • 64位的Windows中對(duì)PE文件格式做了一點(diǎn)小小的修改,叫做PE32+格式,只是將32位的字段換成了64位而已。

  • VC++有一些對(duì)C/C++的專用拓展,使用cl編譯的時(shí)候,可以使用 /Za來禁用這些拓展,也可以在程序中使用宏__STDC__來查看VC++是否禁用了這些語法拓展

  • 和GNU對(duì)象,Windows上的cl就是gcc, link就是ld, dumpbin就是objdump,

  • PE中有兩個(gè)ELF文件中不存在的段,分別是.drectve和 .debug$S. .drectve段是編譯器傳遞給鏈接器的指令,其中的flags表示了他的特點(diǎn)。 .debug$S表示的是符號(hào)相關(guān)的調(diào)試信息。其中有原始文件信息和編譯器信息

  • 可以在cl命令中通過/ZI來關(guān)掉默認(rèn)C庫的鏈接指令

  • PE文件為了兼容DOS的MZ文件結(jié)構(gòu)在PE文件中加入了DOS的相關(guān)設(shè)置,所以將windows下的可執(zhí)行文件在DOS上運(yùn)行的時(shí)候會(huì)輸出"This program cannot be run in DOS"

  • 第3部分 裝在與動(dòng)態(tài)鏈接

    第 6章

  • 程序和進(jìn)程的區(qū)別,程序就是菜譜,是一個(gè)靜態(tài)概念, 進(jìn)程就是菜,是一個(gè)動(dòng)態(tài)概念。

  • 程序的尋址空間由CPU的位數(shù)決定,所以32位下的程序?qū)ぶ房臻g是 2 32 b i t 2^{32} bit 232bit即4GB, 64位下是17179869184 GB, 32位下C語言指針的長(zhǎng)度是4字節(jié),64位系統(tǒng)下長(zhǎng)度是8字節(jié).

  • 對(duì)于一個(gè)32位的程序,尋址空間雖然是4GB,但是程序并不能全部使用,例如在Linux下,1GB是留給操作系統(tǒng)的,剩下的3GB給進(jìn)程,且這3GB內(nèi)存程序也不能完全使用,還有一部分給其他用途; 在Windows上,默認(rèn)情況下2GB留給系統(tǒng),2GB留給進(jìn)程, 但是可以通過修改winows根目錄下Boot.ini文件調(diào)整內(nèi)存分配和linux下一樣。
    1995年P(guān)entium Pro CPU使用PAE(Physical Address Extension),將地址線擴(kuò)充到了36位,所以理論上計(jì)算機(jī)可以尋址的空間變成了64G, 但是進(jìn)程的尋址空間仍然是4G(32位系統(tǒng)下指針是4個(gè)字節(jié))

    為了使應(yīng)用程序能使用超過32位的內(nèi)存,Windows上可以使用AWE(Address Window Extension)的方式, 在Linux上可以使用mmap(),但是這只是一種補(bǔ)救32地址線的方法, 在原來16位的DOS上也曾有過這樣的做法。

  • 為了提高內(nèi)存的使用效率,采用動(dòng)態(tài)裝入的辦法,動(dòng)態(tài)裝入由兩種方式,第一種是覆蓋裝入,即每次將要使用的模塊裝入內(nèi)存,不使用的調(diào)出,這樣,調(diào)用的程序可以共享同一塊內(nèi)存區(qū)域,使用之前先要將程序的所有調(diào)用關(guān)系組織成一個(gè)樹狀結(jié)構(gòu)。但是這種方式需要保證兩點(diǎn), 1) 調(diào)用路徑上的模塊都應(yīng)該存在,2)不能存在跨樹調(diào)用。 第二種是葉映射的方式,即將內(nèi)存和文件存在的磁盤空間都劃分成一個(gè)一個(gè)的頁(通常是4KB),在程序使用的時(shí)候?qū)⑾鄳?yīng)的頁調(diào)入,決定頁面替換的算法由先進(jìn)先出(FIFO)和最近最長(zhǎng)使用算法等。
    由于每次將同一頁程序裝入內(nèi)存中時(shí)的地址可能并不一樣,所以加入按實(shí)際物理地址進(jìn)行操作,那每次都需要重新讀取地址,所以MMU就用來在實(shí)際物理地址和虛擬地址之間轉(zhuǎn)換,
  • 進(jìn)程的建立過程:
    4.1 創(chuàng)建虛擬地址空間,也就是分配一個(gè)頁目錄。
    4.2 讀取可執(zhí)行文件頭,建立虛擬地址空間和可執(zhí)行文件的對(duì)應(yīng)關(guān)系(可執(zhí)行文件被裝載時(shí)其實(shí)就是被映射的虛擬空間,所以也被稱為映像文件)
    4.3 將CPU指令寄存器設(shè)置成可執(zhí)行文件的入口(也就是可執(zhí)行文件代碼段的其實(shí)地址)
  • ELF文件的鏈接視圖和執(zhí)行視圖,鏈接視圖是按照Section分配,執(zhí)行試圖又是Segment,Segment是將相同屬性(只讀,可讀寫,可讀可執(zhí)行)的Section作為一個(gè)Segment. 一般在鏈接的時(shí)候說"段"指的就是Section,在裝載的時(shí)候說"段"指的是Segment
    readelf -S xx可以輸出可執(zhí)行文件中的section,而readelf -l xx可以輸出可執(zhí)行文件中的Segment(即程序頭表),即怎樣被裝入進(jìn)程空間, Segment中只有類型是LOAD的部分會(huì)被映射,這部分在裝載之后又會(huì)被映射到兩段VMA,分別是可讀可寫的部分和可讀可執(zhí)行的部分,
  • ELF可執(zhí)行文件和動(dòng)態(tài)鏈接文件都有一個(gè)結(jié)構(gòu)叫程序頭表,保存著程序被裝載時(shí)候的Segment信息,而靜態(tài)目標(biāo)文件沒有這個(gè)程序頭表,因?yàn)槟繕?biāo)文件不需要被裝載。
  • 操作系統(tǒng)會(huì)通過給進(jìn)程空間劃分出一個(gè)個(gè)的VMA來管理進(jìn)程的虛擬空間,基本原則是將相同權(quán)限屬性,有相同映像文件的映射成一個(gè)VMA,一般包含四個(gè)區(qū)域:代碼VMA,數(shù)據(jù)VMA,堆VMA,棧VMA,棧通常也叫堆棧。
  • 程序員可以操作的進(jìn)程空間,理論上linux下是3GB,windows下是2GB,但是操作系統(tǒng)為了防止惡意攻擊,使用了一種叫做隨機(jī)地址空間分布的技術(shù),使得真正的堆區(qū)可用空間比理論上要少。
  • 在Linux系統(tǒng)中,為了使得物理內(nèi)存的使用效率更高,通常不是一個(gè)虛擬頁面對(duì)應(yīng)一個(gè)物理頁面也是會(huì)有一定的重合,重合部分的頁面映射兩次,所以裝載視圖中每一Segment 的其實(shí)地址就不再必須是4096的倍數(shù)了。
  • 一個(gè)進(jìn)程在剛開始運(yùn)行的時(shí)候,操作系統(tǒng)會(huì)預(yù)先把系統(tǒng)的環(huán)境變量和命令行參數(shù)傳遞到進(jìn)程的堆棧(棧)中,在main函數(shù)開始執(zhí)行的時(shí)候,main函數(shù)的兩個(gè)參數(shù)args和argv[]兩個(gè)參數(shù)就是從這里傳遞進(jìn)來的,分別表示命令參數(shù)的數(shù)量和指向命令行傳入?yún)?shù)的指針數(shù)組。
  • ELF文件的裝載過程: fork() -> execve() -> sys_execve()【系統(tǒng)調(diào)用,用于參數(shù)檢查和復(fù)制】 -> do_execve()【讀取文件頭部的128字節(jié),決定執(zhí)行程序,如果第一行是#!則會(huì)解析這之后的字符串,以確定解釋器的路徑,例如#!/usr/bin/python】->load_elf_binary()->do_execve() -> sys_execve()【從內(nèi)核態(tài)返回用戶態(tài)】
  • PE文件的裝載過程:讀取文件的第一頁(段表,DOS文件頭,PE文件頭)-> 檢查目標(biāo)地址是否可用不可用則換一個(gè)裝載地址(不可用一般只出現(xiàn)在dll的裝載中)-> 按照段表一一裝載各個(gè)段, 裝載所以DLL -> 解析符號(hào) -> 建立主線程并啟動(dòng)進(jìn)程
  • 第7章 動(dòng)態(tài)鏈接

  • 靜態(tài)鏈接的缺點(diǎn): 1). 內(nèi)存和磁盤空間的浪費(fèi),(會(huì)在內(nèi)存和磁盤中存在多份同一程序的拷貝),2). 程序開發(fā)和發(fā)布時(shí)不得不重新鏈接一遍所有文件,每次都需要用戶下載新的連接之后的可執(zhí)行文件
  • 動(dòng)態(tài)鏈接的優(yōu)點(diǎn):程序的可拓展性和兼容性,缺點(diǎn):“DLL Hell"即由于dll文件接口的改變使得程序無法運(yùn)行而這種錯(cuò)誤事先難以得知, 還有由于在運(yùn)行時(shí)鏈接所以會(huì)使得程序運(yùn)行的速度相對(duì)變慢。
  • 編譯共享so文件的命令gcc -fPIC -shared -o Lib.so Lib.c, 共享目標(biāo)文件so的裝載地址是從0開始的,所以會(huì)在運(yùn)行時(shí)確定地址。
  • 靜態(tài)共享庫和靜態(tài)鏈接庫以及動(dòng)態(tài)鏈接庫都不同,本身屬于動(dòng)態(tài)庫,沒有被包含到一個(gè)可執(zhí)行文件當(dāng)中,但是它在運(yùn)行時(shí)的地址是事先已經(jīng)分配好的。
  • 靜態(tài)鏈接文件是鏈接時(shí)重定位,動(dòng)態(tài)鏈接文件是裝載時(shí)重定位,又叫基址重置;但是裝載時(shí)重定位的一個(gè)大問題是無法實(shí)現(xiàn)多個(gè)進(jìn)程的公用,解決辦法是地址無關(guān)代碼(PIC),先將將so文件分為四部分:1) 模塊內(nèi)部的函數(shù)調(diào)用 2) 模塊內(nèi)部的數(shù)據(jù)訪問, 3) 模塊外部的函數(shù)調(diào)用 4) 模塊外部的數(shù)據(jù)訪問。 編譯器實(shí)際上沒法知道一個(gè)函數(shù)或者變量是來自外部還是外部,所以編譯器拓展 _declspec(dllimport)用于指定來自外部或者內(nèi)部。
  • 如何判斷一個(gè)動(dòng)態(tài)共享目標(biāo)文件(DSO)是否是PIC的代碼: readelf -d xx. so | grep TEXTREL如果沒有任何輸出則是PIC的,因?yàn)門EXTREL表示代碼段重定位表地址,PIC不存在這個(gè)地址。
  • 地址無關(guān)技術(shù)也可以用于可執(zhí)行文件,即地址無關(guān)可執(zhí)行文件(PIE)相應(yīng)的GCC編譯參數(shù)為-fPIE或-fpie.
  • 為了防止DSO文件在運(yùn)行時(shí)鏈接過程耗費(fèi)太多的時(shí)間,采用延遲綁定(Lazy Binding)機(jī)制。即在第一次用到的時(shí)候進(jìn)行地址綁定。
  • 可執(zhí)行文件動(dòng)態(tài)鏈接的過程時(shí),操作系統(tǒng)啟動(dòng)動(dòng)態(tài)鏈接器,即加載ld.so文件并將控制權(quán)交給它,它將可執(zhí)行文件需要的共享文件動(dòng)態(tài)加載完之后,控制權(quán)再交給可執(zhí)行文件。ELF文件的。interp段里面保存著一個(gè)字符串,這個(gè)字符串是動(dòng)態(tài)鏈接器的路徑,再linux下,幾乎所有ELF文件的動(dòng)態(tài)鏈接器的路徑都是lib/ld.linux.so.2, 其他*nix系統(tǒng)可能會(huì)有差異, 這個(gè)路徑是一個(gè)軟鏈接,真正的文件是Glibc庫的一部分,升級(jí)Glibc庫也會(huì)升級(jí)動(dòng)態(tài)鏈接器,但是軟連接總是指向動(dòng)態(tài)鏈接器文件,不需要手動(dòng)修改。
  • 動(dòng)態(tài)鏈接文件中最重要的段時(shí).dynamic段,類似于靜態(tài)鏈接文件的ELF文件頭,里面保存了依賴于那些共享對(duì)象,動(dòng)態(tài)鏈接符號(hào)表的位置等等,ldd命令可以查看一個(gè)共享庫依賴于哪些共享庫。所依賴的庫中l(wèi)inux.gate.so.1時(shí)一個(gè)在文件系統(tǒng)中不存在的文件,其加載地址在進(jìn)程的內(nèi)核區(qū),
  • 動(dòng)態(tài)鏈接庫中往往包含了兩個(gè)表.dynsym 和.symtab。其中 .symtab保存了所有的符號(hào),包括.dynsym中的符號(hào),和靜態(tài)鏈接的.symtab表類似,動(dòng)態(tài)鏈接庫也需要很多輔助的表,例如靜態(tài)的符號(hào)字符串表.strtab 對(duì)應(yīng)動(dòng)態(tài)符號(hào)字符串表.dynstr 為了加快符號(hào)查找過程,還需要,符號(hào)哈希表 .hash可以用命令readelf -sD xx.so查看動(dòng)態(tài)符號(hào)表和它的哈希表。
  • 普通共享對(duì)象的鏈接和裝載由動(dòng)態(tài)鏈接器完成,但是動(dòng)態(tài)鏈接器本身也是一個(gè)共享對(duì)象,所以要求動(dòng)態(tài)鏈接器共享對(duì)象本身不依賴任何其他的共享對(duì)象,且其需要的全局變量和靜態(tài)變量的重定位工作有它自己完成,對(duì)于第二個(gè)要求,需要一段精妙的代碼完成,這被稱為自舉。
  • 第七章7.6節(jié)以后略去不寫

    第八章

  • 在開發(fā)共享庫的時(shí)候,使用C的接口會(huì)讓事情簡(jiǎn)單很多,因?yàn)镃++非常復(fù)雜,支持模板等很多復(fù)雜操作,很容易破壞共享庫的兼容性(ABI)
  • 為了解決兼容性,共享庫的命名采用libxxx.so.x.y.z其中x表示主版本號(hào),y表示次版本號(hào),z表示發(fā)布版本號(hào),x表四重大升級(jí),y表示增量升級(jí),z表示對(duì)一些錯(cuò)誤的修正和改進(jìn),相同的x和y,不同的z的共享庫完全兼容,
  • solaris和linux等系統(tǒng)中,會(huì)采用SO-NAME的方式解決存在多個(gè)相同功能的共享庫的問題,SO-NAME時(shí)共享庫的文件名.主版本號(hào)命名,例如,假如系統(tǒng)中存在libxxx.so.2.6.1和libxx.so.2.5.3則,在同目錄下會(huì)存在一個(gè)名為libxx.so.2的軟連接,并且指向最新版本的共享庫libxx.so.2.6.1。在編譯的時(shí)候,SO-NAME也會(huì)寫入到共享庫的.dynamic段中,防止寫入完整名稱之后遇到共享庫升級(jí)而找不到的情況。
  • 在linux中安裝或更新一個(gè)共享庫的時(shí)候需要運(yùn)行l(wèi)dconfig命令,它會(huì)自動(dòng)將共享庫目錄中的軟連接指向最新的共享庫,對(duì)于新建的共享庫則會(huì)新建軟鏈接。
  • 總結(jié)

    以上是生活随笔為你收集整理的程序员的自我修养 - 读书笔记文字版的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    免费黄色一区 | av综合av | 国产午夜精品一区二区三区欧美 | 欧美色精品天天在线观看视频 | 精品国产一区二区三区在线观看 | 成人app在线播放 | 91九色蝌蚪视频网站 | 色综合久久五月天 | 日韩精品欧美专区 | 中文字幕av免费观看 | 美女精品国产 | 婷色在线 | 激情丁香久久 | 久久人人爽人人爽人人片av软件 | 美女精品国产 | 久久久999| 日韩乱码在线 | 久久国产精品99久久久久 | 天天狠狠干| 久草在线久 | 91九色免费视频 | 青青久草在线视频 | 成年人免费观看在线视频 | 园产精品久久久久久久7电影 | 久草视频视频在线播放 | 久久久精品一区二区三区 | 玖操| 久久精品欧美日韩精品 | 天天色.com| 久久久精品国产免费观看一区二区 | 国内精品视频久久 | 久久九九久久精品 | 天天色天天 | 蜜臀久久99精品久久久酒店新书 | 成人久久久久久久久 | 日日夜夜亚洲 | 99综合影院在线 | 亚洲情感电影大片 | 香蕉视频在线视频 | 精品av在线播放 | 国产精品久久久久9999吃药 | 精品国产自在精品国产精野外直播 | 亚洲综合欧美激情 | 免费又黄又爽视频 | www视频在线免费观看 | 精品1区二区 | 久久久久www | 97超碰人人 | 国产成人99久久亚洲综合精品 | 国产精品久久在线观看 | 亚洲欧美精品一区二区 | www.99在线观看 | 99在线免费视频 | 国产视频1区2区3区 久久夜视频 | 最新国产在线观看 | 成人综合婷婷国产精品久久免费 | 91在线免费观看网站 | 欧美天天射 | 免费在线| 看黄色91| 五月婷婷在线观看 | 中文字幕网站 | 高清在线一区 | 欧美日韩xxxxx | 在线观看亚洲专区 | 中文字幕中文中文字幕 | 五月婷丁香网 | 欧美成人xxx | 911国产| 天天射天天干天天 | 亚洲精品免费观看 | 天天摸天天干天天操天天射 | av资源免费看 | 91福利视频免费观看 | 久久婷婷色综合 | 久久久久亚洲精品中文字幕 | 久久精品99北条麻妃 | 91成人午夜 | 日韩网站在线播放 | 人交video另类hd | 国产综合久久 | 久久久精品 | 日日夜夜人人天天 | 久久人人爽av | 大荫蒂欧美视频另类xxxx | 精品免费久久久久久 | 久久国产精品免费一区 | 亚洲成人黄色在线 | 超碰在线最新 | bbw av| 亚洲三级黄 | 国产一级片免费视频 | 国产成人三级 | 黄色av在| 91精品影视 | 婷婷激情综合五月天 | 五月天最新网址 | 麻豆成人在线观看 | 免费国产在线视频 | 亚州黄色一级 | 国产原创av在线 | 久草视频在线资源 | 久久草视频 | 特级黄录像视频 | 最近中文字幕在线 | 日韩理论片 | 91精品国产九九九久久久亚洲 | 亚洲成a人片77777kkkk1在线观看 | 亚洲少妇xxxx | 久久综合99| 中日韩三级视频 | 三级性生活视频 | 在线亚洲激情 | 亚洲五月六月 | 国产精品剧情 | 国产精品情侣视频 | 色婷五月| 嫩草av在线| 成 人 黄 色视频免费播放 | 亚洲精品影视在线观看 | 在线观看一区 | 99草在线视频 | 高清av中文字幕 | 精品国产亚洲日本 | 9在线观看免费高清完整版在线观看明 | 在线日本看片免费人成视久网 | 国产97视频在线 | 午夜电影av | 久久久久国产精品一区 | 99视频在线免费观看 | 天天干天天射天天操 | 夜夜躁狠狠躁 | 综合av在线| 亚洲精品国偷拍自产在线观看蜜桃 | 91精品1区2区 | 久久免费黄色大片 | 日韩视频区 | 黄色avwww | ,久久福利影视 | 一区二区三区免费在线播放 | www.com黄 | 视频三区在线 | 韩国精品福利一区二区三区 | av电影在线观看完整版一区二区 | 亚洲欧美国产精品久久久久 | 91pony九色丨交换 | 在线观看免费视频 | 国产日韩精品一区二区三区在线 | 国产成人一区二区三区 | 日韩免费一区二区在线观看 | 日韩欧美精品在线观看视频 | 麻豆国产视频 | 国产精品成人国产乱一区 | 久久久久久在线观看 | 国产精品999久久久 久产久精国产品 | 久一网站| 国产精品v欧美精品 | 一本一本久久a久久精品牛牛影视 | 欧美巨大 | 午夜av电影院 | 国产精品一区二区中文字幕 | 国产成人精品综合久久久久99 | 久在线观看 | 成人97视频一区二区 | 久久99日韩 | 日韩精品专区在线影院重磅 | 91精品国产麻豆国产自产影视 | www亚洲一区 | 欧美激情精品一区 | 亚洲人成免费 | 成人一区二区三区中文字幕 | 免费在线播放视频 | 激情视频免费观看 | 天堂中文在线视频 | 久久成人免费电影 | 97热在线观看 | 国产精品久久久久影院日本 | 99视频99 | 狠狠躁日日躁狂躁夜夜躁av | 国产精品一区免费在线观看 | 毛片网站在线观看 | 激情久久影院 | 欧美福利在线播放 | 亚洲 欧美 综合 在线 精品 | 天天爽人人爽 | 日韩在线电影观看 | 久久韩国免费视频 | 亚洲精品成人在线 | 最新日韩电影 | а天堂中文最新一区二区三区 | 久久激情视频免费观看 | 在线观看免费视频 | 五月天丁香视频 | 亚洲精品456在线播放 | 很黄很污的视频网站 | 亚洲黄色免费网站 | 免费久久99精品国产婷婷六月 | 亚州国产视频 | 国产精品剧情在线亚洲 | 免费观看久久 | 91亚洲综合 | 久久国产精品色婷婷 | 精品久久久久久亚洲综合网 | 又黄又爽又湿又无遮挡的在线视频 | 国产无遮挡又黄又爽馒头漫画 | 欧美一级欧美一级 | 99视频偷窥在线精品国自产拍 | 成人免费看电影 | 波多野结衣视频一区二区三区 | 亚洲 成人 欧美 | 久久综合中文色婷婷 | 欧美日韩不卡在线视频 | 深爱激情五月网 | 91亚色视频| 激情丁香久久 | 国产成人黄色 | 伊人天堂网| 久久桃花网 | 美女久久久久久久久久 | 黄色亚洲大片免费在线观看 | 四虎5151久久欧美毛片 | 91亚洲精品国产 | 蜜臀av网址 | 午夜色婷婷 | 亚洲精品成人av在线 | 超级碰视频 | 99在线高清视频在线播放 | 亚洲人成免费网站 | 97视频亚洲| 亚洲午夜久久久综合37日本 | 在线免费观看黄色 | 国产剧情在线一区 | 在线黄频 | 久久亚洲私人国产精品 | 999在线观看视频 | 久久精品久久久久 | 在线看毛片网站 | 91伊人久久大香线蕉蜜芽人口 | 久久成人国产精品 | 日韩精品久久一区二区 | 日本在线观看黄色 | 91九色成人蝌蚪首页 | 四虎成人精品永久免费av | 丁香花在线观看视频在线 | 成人av中文字幕 | 色吧久久 | 日韩午夜一级片 | 日韩成人在线免费观看 | 色综合久久88色综合天天6 | 韩日视频在线 | 国产色在线,com | 蜜臀av夜夜澡人人爽人人桃色 | 午夜.dj高清免费观看视频 | av在线免费在线观看 | 三级免费黄 | 久热久草 | www.人人干 | 亚洲区另类春色综合小说校园片 | 亚洲精品乱码久久久久久按摩 | 国产精品一区二区三区99 | 99精品国产一区二区三区不卡 | 久久久在线免费观看 | 久久毛片高清国产 | 亚洲视频大全 | 91爱爱网址 | 九九色在线观看 | 成人小电影在线看 | 国产在线观看午夜 | 午夜久久福利影院 | 夜夜夜夜操 | 欧美激情精品久久久久久免费印度 | 久久久这里有精品 | av中文字幕网 | 狠狠88综合久久久久综合网 | 97狠狠干| 欧洲精品码一区二区三区免费看 | 探花在线观看 | 亚洲精品一区二区网址 | 激情六月婷婷久久 | 国产毛片久久久 | 日日爽 | 久久久国产毛片 | 久久久久久久电影 | 一区二区三区四区五区六区 | 国产1区2区| 久久成人福利 | 久99久中文字幕在线 | 亚洲女同videos | 成人免费看片98欧美 | 亚洲精品高清在线 | 毛片在线播放网址 | 久久99久久久久久 | 成年人电影免费看 | 色www免费视频 | 欧美日韩亚洲在线 | 九九热视频在线免费观看 | 在线观看91网站 | 国产精品伦一区二区三区视频 | 日韩免费看的电影 | 欧美大荫蒂xxx | 日韩av免费网站 | 特级毛片爽www免费版 | 99re在线视频观看 | 国产精品日韩在线观看 | 日韩久久一区 | 91麻豆精品 | 狠狠色丁香婷婷综合 | 成年人在线免费看视频 | 国产精品久久久久久久久久了 | 国产v在线播放 | 中文字幕精品三级久久久 | 久草综合视频 | 亚洲 欧洲av | 亚洲综合成人专区片 | 在线国产中文字幕 | 久久免费精品视频 | 狠狠狠狠狠操 | 国产精品99久久久久久有的能看 | 久久夜色电影 | 奇米影视在线99精品 | 毛片网站在线看 | 麻豆 91 在线 | 中文在线中文资源 | 亚洲黄色免费 | 久久a v电影 | 国产资源免费 | 午夜国产一区二区 | 右手影院亚洲欧美 | 国产成人免费精品 | 99爱在线观看 | 日韩欧美综合视频 | 国产女教师精品久久av | 丁香六月婷婷综合 | 在线视频久 | 成人av免费播放 | 97自拍超碰 | 国产日韩欧美在线免费观看 | 欧美日韩伦理一区 | 一级免费av | 国产日韩欧美在线观看 | 91精品国产91久久久久久三级 | 国产精品嫩草影院9 | 国产亚洲精品久久久久久久久久 | 狠狠干狠狠久久 | 国产美女在线免费观看 | 久久经典国产视频 | 国产精品国产三级国产aⅴ9色 | 国产尤物一区二区三区 | 国产一级h | 久久精品视频在线看 | 欧美一级小视频 | 成人av中文字幕在线观看 | 国产成人一区二区三区在线观看 | 992tv在线| 亚洲综合婷婷 | 日韩av偷拍 | 青青河边草手机免费 | 久久久久久久久久久精 | 韩日精品视频 | 亚洲少妇激情 | 美女黄色网在线播放 | 日本久久精品 | 国产精品私人影院 | 久久久麻豆精品一区二区 | 色吧av色av| www.在线观看av | 亚洲精品 在线视频 | 欧美一级片在线播放 | 在线91视频 | 伊人黄 | 五月天网页 | 久草网视频 | 亚洲人久久久 | 99中文字幕视频 | 日韩av免费一区二区 | 国产视频在| 丁香五月缴情综合网 | 婷婷播播网 | 91av影视| 在线日韩中文字幕 | 亚洲在线激情 | 91av电影 | 久艹视频免费观看 | 国产精品免费观看在线 | 中文日韩在线视频 | 性色av香蕉一区二区 | 成人av在线观 | 五月天最新网址 | 欧美极品一区二区三区 | 精品在线视频观看 | av成人免费网站 | 九九99| 国产精品99久久久久人中文网介绍 | 91在线入口 | 99九九热只有国产精品 | 91香蕉视频好色先生 | 成人黄色中文字幕 | 黄色在线视频网址 | 色综合久久88 | 99精品视频免费在线观看 | 精品视频专区 | 色综合久久久久久久久五月 | 色姑娘综合天天 | 国产男女无遮挡猛进猛出在线观看 | 国产一级二级三级在线观看 | 国产 一区二区三区 在线 | 久久精品成人欧美大片古装 | 久久精品—区二区三区 | 久久99精品国产99久久 | 国产淫片| 国产成人精品a | 免费观看全黄做爰大片国产 | 中文国产字幕在线观看 | 成人精品一区二区三区电影免费 | 九九视频在线播放 | 亚洲免费在线视频 | 成年人视频免费在线 | 国产成人一区二区三区在线观看 | 国产中文 | 久久久久久久久国产 | 香蕉在线视频播放网站 | 精品国产亚洲一区二区麻豆 | www.国产高清| 一区二区视频在线免费观看 | 日韩高清毛片 | 久久免费公开视频 | 丁香网五月天 | 91av中文字幕 | 日韩在线观看网址 | 97电影手机版 | 91av视频在线观看 | 波多野结衣电影一区二区 | 丁香婷婷自拍 | 国产日本亚洲 | 91桃色视频 | 国产高清av免费在线观看 | 成人影视免费 | 四虎免费在线观看 | 99久久精品日本一区二区免费 | 久草免费在线 | 天天操夜操视频 | 成年人黄色免费视频 | 在线 成人 | 永久免费视频国产 | 午夜影院一级片 | 免费观看国产精品 | 国产精品视频资源 | 91综合视频在线观看 | 欧美另类交在线观看 | 在线观看午夜 | 午夜精品一区二区三区在线视频 | 天天综合入口 | 91色国产| 欧美一区二区精品在线 | 超碰97国产在线 | 最近日本韩国中文字幕 | 久久精品国产免费观看 | 精品国产乱码一区二 | 国产精品18久久久久久首页狼 | 麻豆传媒电影在线观看 | 国产日韩欧美在线看 | 四虎8848免费高清在线观看 | 亚洲精品av中文字幕在线在线 | 久久精品久久精品久久 | 又黄又爽的视频在线观看网站 | 亚洲专区欧美 | 亚洲资源 | 国产黄色观看 | 五月婷婷激情综合 | 91亚洲国产 | 99热这里只有精品1 av中文字幕日韩 | 在线免费观看国产视频 | 国产精品网站 | 天天干天天做天天操 | 成人久久网 | 欧美精品乱码久久久久久 | 黄色片软件网站 | 国产福利91精品 | 日韩区在线观看 | 成人在线超碰 | 日韩中文字幕视频在线观看 | 免费在线播放视频 | 国产精品一码二码三码在线 | 国产在线视频导航 | 在线观看完整版免费 | 国产日韩欧美视频 | 日韩成人av在线 | 在线免费观看羞羞视频 | 五月婷婷激情网 | 日韩欧美电影网 | 中文字幕视频 | 成人在线视频网 | 国产精品1区2区3区 久久免费视频7 | 国产99久久久国产精品免费看 | 午夜精品久久久久久久久久久久久久 | 色婷婷狠狠18 | 激情久久小说 | 五月天久久综合 | 中文在线字幕免费观看 | 久久久久久久久久久久久久电影 | 在线视频一二区 | 色99中文字幕 | 亚洲狠狠| 久草视频在线免费播放 | 久草视频在线资源站 | 精品一区精品二区高清 | 中文字幕永久在线 | 日韩精品你懂的 | 天天操天天爽天天干 | 久久精品欧美一 | 美女福利视频网 | 成人a级黄色片 | 91精品在线看 | 黄色软件在线观看视频 | 精品av在线播放 | 美女黄频在线观看 | 亚洲色图激情文学 | 国产麻豆成人传媒免费观看 | 黄av资源 | 欧美另类视频 | 欧美精品久久久久性色 | 欧美一二三四在线 | 国产精品美女在线 | 欧美激情精品久久久久久变态 | 国产精品无av码在线观看 | 丁香五月网久久综合 | 91av蜜桃| 美女黄频在线观看 | 成年人黄色大片在线 | 亚洲资源片| 免费h视频| 亚洲成人中文在线 | 91精品啪在线观看国产81旧版 | 91在线一区| 久久精品国产免费观看 | 日韩av电影手机在线观看 | 三上悠亚一区二区在线观看 | 亚洲天堂首页 | 久久一精品 | 中文字幕在线免费观看 | 五月婷婷开心中文字幕 | 99国产精品 | 韩日精品中文字幕 | 久草在线资源视频 | 国产精品视频线看 | 国产一区二区三区四区在线 | www色com | 91福利专区| 91激情| 久久综合九色综合久99 | 99视频在线观看免费 | 久久无码精品一区二区三区 | av千婊在线免费观看 | 免费男女羞羞的视频网站中文字幕 | 日日碰狠狠躁久久躁综合网 | 天天操天天色天天射 | 亚洲综合五月天 | 99精品国产aⅴ | 天天干天天操天天操 | 美女视频永久黄网站免费观看国产 | 久久视频在线观看免费 | www.av免费 | 国产精品女人久久久 | 成人小视频在线播放 | 国产精品视频在线看 | 81精品国产乱码久久久久久 | 一区二区三区韩国免费中文网站 | 国产美女无遮挡永久免费 | 国产福利91精品一区二区三区 | 日韩免费在线观看视频 | 日韩高清国产精品 | 国产日女人| 国产一区二区久久精品 | 天天干天天干天天干天天干天天干天天干 | 99精品在线免费 | 日韩激情视频 | 国产大尺度视频 | 久久在线观看视频 | 一区二区三区在线观看免费视频 | 国产精品国产亚洲精品看不卡15 | 五月综合激情网 | 国产成人在线综合 | 国产精品欧美久久久久天天影视 | 国产免费久久av | 午夜精品一区二区三区可下载 | 亚洲aⅴ在线 | 天堂av在线7 | 狠狠狠色丁香婷婷综合久久五月 | 超碰成人av | 一区二区三区在线观看免费 | 国产精品第一 | 精品视频 | 国产一级黄 | 欧美日韩国产精品久久 | 欧美色操 | 成人av免费在线 | 国产午夜视频在线观看 | 国产精品女同一区二区三区久久夜 | 欧美国产大片 | 欧美a免费 | 亚洲第一区在线播放 | 久草在线资源观看 | 99国产一区二区三精品乱码 | 国内少妇自拍视频一区 | 国产精品99久久99久久久二8 | 国产在线观看xxx | 久久久男人的天堂 | 成年人黄色大全 | 香蕉久久久久久久 | 精品久久久久久久久久久久 | 成人免费观看电影 | 在线 欧美 日韩 | 免费观看国产精品视频 | 可以免费看av | japanesexxxxfreehd乱熟 | 91麻豆精品国产91久久久无限制版 | 亚洲日韩中文字幕 | 精品伦理一区二区三区 | 亚洲午夜久久久综合37日本 | 91视频免费播放 | 久久草精品 | 人人爽人人香蕉 | 天天操天天爱天天干 | 亚洲精品国产精品国自产观看 | 麻豆国产网站 | 伊人资源站 | 国产精品自产拍在线观看桃花 | 国产黄色av影视 | 国产呻吟在线 | 久久精品国产精品亚洲精品 | 亚洲综合激情小说 | 久久99国产精品久久 | www色网站 | 欧美日韩精品在线一区二区 | 免费在线观看黄网站 | 六月丁香婷| 免费黄在线观看 | 亚洲作爱视频 | 久久精品久久久久久久 | 天天操夜夜爱 | 精品国产精品一区二区夜夜嗨 | 国产xxxx做受性欧美88 | 日韩r级在线 | 亚洲 欧美日韩 国产 中文 | 四虎影视国产精品免费久久 | 亚洲人成在| 国产精品男女 | 成年人网站免费在线观看 | 日本精品视频在线观看 | av电影中文 | 久久少妇免费视频 | 黄色免费网站大全 | 婷婷开心久久网 | 亚洲国产精品电影在线观看 | 美女视频黄免费 | 国产成人一区二区精品非洲 | 在线不卡中文字幕播放 | 99爱视频| www.久久婷婷| 91亚洲国产成人久久精品网站 | 精品久久九九 | 久草在线观看资源 | 久久电影色 | 国产日韩欧美精品在线观看 | 日韩精品久久中文字幕 | 在线观看中文字幕视频 | 99国产精品 | 婷婷综合国产 | 91cn国产在线 | 国产精品一区二区三区久久久 | 欧美另类网站 | 国产一区视频在线 | 成人网444ppp | 日韩三级视频在线观看 | 美女黄频 | 亚洲 欧美日韩 国产 中文 | 三上悠亚一区二区在线观看 | 福利网址在线观看 | 四虎影视久久久 | 国产精品一区二区你懂的 | 日韩影视在线观看 | 亚洲精品国产精品国 | 婷婷在线精品视频 | 天操夜夜操 | 精品视频免费 | 国产日韩欧美精品在线观看 | 欧美一级日韩三级 | 亚洲成人av片 | 热久久国产 | av大全在线 | 五月综合在线观看 | 网站你懂的 | 国产精品免费看久久久8精臀av | 国产一区二区三区视频在线 | 亚洲精品免费在线观看 | 国产小视频国产精品 | 日韩欧美精品在线 | 欧美午夜性 | 欧洲精品久久久久毛片完整版 | 国产女人40精品一区毛片视频 | 欧美做受xxx | 久草在线最新视频 | 丁香五月亚洲综合在线 | 日日干天夜夜 | 天天亚洲综合 | 91影视成人 | 久久精品国产99国产 | 国产一区二区电影在线观看 | 69av国产 | 久久精品视频在线播放 | 亚洲精品国产精品国自产观看浪潮 | 国产最新在线视频 | 久草久草久草久草 | 99久久婷婷国产精品综合 | 99视频在线观看一区三区 | 国产一级黄色免费看 | 成人毛片网 | 日韩最新理论电影 | 狠狠躁日日躁夜夜躁av | 伊人久久一区 | www.日日日.com | 五月婷久久 | 国产精品免费高清 | 九月婷婷色 | 激情婷婷 | 亚洲激情在线观看 | 欧美日韩国产精品一区二区亚洲 | 天天射夜夜爽 | 中文字幕在线日 | 日韩久久精品一区二区三区下载 | 精品久久久久久亚洲综合网 | 成人国产精品一区二区 | 国产最新91 | 亚洲成a人片综合在线 | 九九久久久 | 狠狠狠色丁香综合久久天下网 | 欧美成天堂网地址 | 国产精品一区二区三区在线播放 | 一级久久久 | 日韩中文字幕免费在线播放 | 欧美成人精品欧美一级乱 | 欧美色插 | 亚洲精品黄色在线观看 | 成人一级影视 | 九九亚洲精品 | 天天操天天干天天爽 | 日韩在线免费观看视频 | 五月精品| 天天鲁天天干天天射 | 中文字幕 成人 | 婷婷新五月 | 色婷婷在线视频 | 亚洲天堂视频在线 | 婷婷亚洲综合 | 国产成人av电影在线 | 国产网红在线观看 | 亚洲国内精品在线 | 精品福利在线视频 | 国产人成免费视频 | 色婷婷精品大在线视频 | 99成人精品 | 国产一二三四在线观看视频 | 777久久久| 亚洲片在线资源 | 免费亚洲精品视频 | 中文字幕永久在线 | 日韩理论片在线观看 | 久久久久亚洲国产精品 | 午夜精品婷婷 | 日日夜夜人人天天 | 一区二区三区免费看 | av中文字幕亚洲 | 97视频在线免费观看 | 91在线一区| 在线三级中文 | 狠狠干.com | 激情婷婷欧美 | 日韩av专区| 国产在线精 | 天堂入口网站 | 在线观看小视频 | 欧美性精品 | 在线免费观看涩涩 | 午夜av片 | 乱男乱女www7788 | 国产一区二区午夜 | 美女视频永久黄网站免费观看国产 | 亚洲一二区精品 | 中文字幕中文字幕在线中文字幕三区 | 美女网站色在线观看 | 国产精品久久久精品 | 少妇av网 | 在线中文字幕电影 | 午夜久久久久久久久久影院 | 日韩精品一区电影 | 久久精品91久久久久久再现 | 国产色综合天天综合网 | 97视频免费在线观看 | 黄色www| 欧美在线观看视频一区二区三区 | 亚洲va欧洲va国产va不卡 | 91久久久久久国产精品 | 337p日本大胆噜噜噜噜 | 中文字幕av在线免费 | 亚洲女在线| 91亚洲精品视频 | 国内精品亚洲 | 色综合天天做天天爱 | 在线视频亚洲 | 精品国产伦一区二区三区观看方式 | bbbbb女女女女女bbbbb国产 | 99久久爱 | 五月婷婷久草 | 日韩精品中文字幕在线播放 | 9999精品免费视频 | 欧美视频www | 激情网站 | 天天插日日插 | 中文字幕二区在线观看 | 欧美一级爽 | 美女网站在线 | 不卡的av电影在线观看 | 欧美日韩中文另类 | 国产91精品看黄网站在线观看动漫 | 亚洲国内精品在线 | 日韩在线一区二区免费 | 成人丝袜 | 亚洲免费国产 | 亚洲精品电影在线 | 欧洲一区二区三区精品 | 高清久久久 | 日韩在线一区二区免费 | 天天想夜夜操 | av在线播放中文字幕 | 最近高清中文字幕 | 黄色毛片观看 | 免费福利视频网 | 97超碰中文字幕 | 国内丰满少妇猛烈精品播放 | 久久九九视频 | 日韩一级电影在线观看 | 日韩黄色免费 | 久久草| 久久久久免费电影 | 国产亚洲在线观看 | 午夜丰满寂寞少妇精品 | 欧美色久 | 国产一级特黄毛片在线毛片 | 久久久国际精品 | 日本精品二区 | 国产一级免费av | 国内精品在线看 | 在线色亚洲 | 亚洲综合色激情五月 | 国产一区二区在线观看视频 | 亚洲精品久久激情国产片 | 91久久黄色 | 超碰在线最新 | 午夜av在线电影 | 国产精品 中文字幕 亚洲 欧美 | 91福利视频免费观看 | 日韩高清一区二区 | 久久成人精品电影 | 国产精品一区二区中文字幕 | 国产人成精品一区二区三 | 中文字幕第一页在线 | 五月天电影免费在线观看一区 | 天堂网中文在线 | 免费成人看片 | 99福利影院 | 日日射天天射 | 99这里只有 | 在线日韩av| 国产激情电影综合在线看 | 中文字幕在线观看视频一区二区三区 | 五月开心婷婷 | 欧美日韩在线观看一区二区三区 | 欧美日韩视频在线 | 2019中文最近的2019中文在线 | 久草视频观看 | 精品一区二区三区久久久 | 国产在线精品福利 | 欧美一级电影 | 日本成人中文字幕在线观看 | 视频99爱| 久久好看免费视频 | 亚洲视频专区在线 | 欧美日韩超碰 | 99精品国产在热久久 | 一区二区理论片 | 国内精品毛片 | 久久免费av电影 | 这里只有精品视频在线观看 | 蜜桃av人人夜夜澡人人爽 | 欧美一级黄色网 | av日韩av | 91资源在线视频 | 久久视频这里有精品 | 久久免费视频国产 | 国产精品一区在线 | 免费看高清毛片 | 国产精品v a免费视频 | 狠狠狠操| aaa毛片视频| 天天色天天操综合网 | 欧美日韩国产高清视频 | 日韩网站在线播放 | 少妇性xxx | 成人毛片在线观看视频 | 狠狠操.com | 午夜国产在线观看 | 人人澡人人爱 | 午夜av一区二区三区 | av成人动漫 | 国产精品黄网站在线观看 | 99久久精品国产观看 | 在线 视频 亚洲 | 最新久久免费视频 | 成人性生交大片免费看中文网站 | 国产精品第一视频 | 国产精品第 | 日日夜夜人人精品 | 亚洲精品午夜aaa久久久 | 91九色视频导航 | 色七七亚洲影院 | 国产精品乱码高清在线看 | 日韩av播放在线 | 久久高清免费 | 在线99视频| 国产精品成人免费精品自在线观看 | 丁香花中文字幕 | 久久在线| 天天色天天色 | 97精品国产97久久久久久春色 | 九九热只有这里有精品 | 久久久av电影 | 亚洲va欧美va人人爽 | 成年人在线免费看片 | 日韩黄色在线观看 | 天天色天| 亚洲国产精品传媒在线观看 | 国产亚洲久一区二区 | 免费在线观看黄 | 中文字幕一区二区三区四区在线视频 | 中文字幕av在线不卡 | 亚洲最大成人网4388xx | 国产1区2区3区精品美女 | www黄色 | 国产成人亚洲在线电影 | 久久天天躁夜夜躁狠狠躁2022 | 久久区二区 | 国产a精品 | 亚洲欧美国产精品久久久久 | 色婷婷综合久久久久中文字幕1 | 亚洲第一区在线播放 | 久久久久国产精品www | 免费看av在线 | 麻豆视频在线免费观看 | 天堂av在线7 | a级国产乱理论片在线观看 伊人宗合网 | 日韩国产欧美在线播放 | 中文字幕av全部资源www中文字幕在线观看 | 国产精品欧美久久久久三级 | 成年人黄色在线观看 | 久草在线观看 | 国产一区二区高清视频 | 99久久精品免费视频 | 国产精品乱码高清在线看 | 看黄色91 | 亚洲日本欧美 | 久久精品国产成人 | 成人免费在线观看电影 | 欧洲亚洲国产视频 | 欧美一级久久 | av免费观看网站 | 三级动态视频在线观看 | 国内精品免费久久影院 | 日日爽日日操 | 9999在线 | 国产免费久久精品 | 在线视频 你懂得 | 99热最新| 欧美日韩精品在线免费观看 | 三三级黄色片之日韩 | 嫩草伊人久久精品少妇av | 狠狠干夜夜爱 | 亚洲精品在线视频 | 精品国产一区二区三区久久影院 | 中文国产字幕 | 大片网站久久 | av免费观看在线 | 色多视频在线观看 | 91麻豆精品国产午夜天堂 | 在线观看中文字幕 | 久久永久免费视频 | 精品国产成人 | 精品毛片在线 | 久草网视频在线观看 |