色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合av,久久激情五月丁香伊人

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

DJGPP 2.04:DOS下32位C/C++編譯器套件搭建與使用指南

DJGPP 2.04:DOS下32位C/C++編譯器套件搭建與使用指南 簡(jiǎn)介DJGPP 2.04 是一套面向 DOS 環(huán)境的開(kāi)源 C/C 開(kāi)發(fā)工具鏈主要解決在老式 PC、虛擬機(jī)或嵌入式場(chǎng)景中源碼編譯與程序構(gòu)建的問(wèn)題適合復(fù)古計(jì)算愛(ài)好者、系統(tǒng)原理學(xué)習(xí)者以及需要在 DOS 下開(kāi)發(fā)游戲或系統(tǒng)級(jí)軟件的開(kāi)發(fā)者。該版本由 GNU 工具移植而來(lái)整合了 GCC 編譯器、匯編器、鏈接器、GNU Make、調(diào)試器 GDB、庫(kù)管理器及大量標(biāo)準(zhǔn)頭文件和庫(kù)文件可在沒(méi)有現(xiàn)代操作系統(tǒng)的條件下完成從編輯、編譯到鏈接的完整開(kāi)發(fā)流程。整套壓縮包共 372 個(gè)文件以 h 頭文件、exe 可執(zhí)行程序、info 說(shuō)明文檔以及 djl、lib、bat 等輔助文件為主壓縮后約 6.95MB體積緊湊便于在早期硬件環(huán)境部署。資源與《Linux0.01內(nèi)核分析與操作系統(tǒng)設(shè)計(jì)配書(shū)光盤(pán)》教學(xué)場(chǎng)景緊密相關(guān)同時(shí)附帶 man 手冊(cè)頁(yè)與示例代碼幫助讀者理解早期操作系統(tǒng)內(nèi)核、底層啟動(dòng)流程及 DOS 平臺(tái)編程方式。目前已有 405 人學(xué)習(xí)下載對(duì)研究編譯工具發(fā)展史和操作系統(tǒng)教學(xué)均有獨(dú)特價(jià)值。1. DJGPP 2.04 是什么一個(gè)讓 32 位 C/C 在 DOS 里跑起來(lái)的編譯器套件DJGPP 2.04 這個(gè)名字在今天的開(kāi)發(fā)者眼里很陌生但只要你碰 DOS 下的復(fù)古游戲、老式工業(yè)電腦或者想用現(xiàn)代 C 標(biāo)準(zhǔn)給老系統(tǒng)寫(xiě)點(diǎn)正經(jīng)工具它就繞不開(kāi)。它做的事是把 GCC、make、gdb 和 binutils 整個(gè)搬進(jìn) DOS 環(huán)境讓你在命令行下敲一條 gcc 命令就編譯出能在純 DOS 里運(yùn)行的 32 位保護(hù)模式程序而不是 Turbo C 那種只能摸 640KB 內(nèi)存的 16 位產(chǎn)物。DJGPP 2.04 是這一系列的最后一個(gè)主流發(fā)布解決了一批老內(nèi)核的兼容性問(wèn)題補(bǔ)齊了 C 標(biāo)準(zhǔn)庫(kù)在 DOS 下的可用度。適合它的場(chǎng)景很明確老硬件上的實(shí)用工具、DOS 演示和游戲開(kāi)發(fā)、操作系統(tǒng)的教學(xué)實(shí)驗(yàn)。它的目標(biāo)用戶不是要做現(xiàn)代 GUI 的人而是需要讓代碼在舊環(huán)境下可靠運(yùn)行的人。2. 搭建 DJGPP 2.04 開(kāi)發(fā)環(huán)境解壓、環(huán)境變量與第一個(gè)可執(zhí)行文件DJGPP 2.04 的安裝不是雙擊一個(gè) exe 就完事它更像一套綠色軟件官方把整套工具鏈打散成一批 zip 包下載回歸 DOS 目錄結(jié)構(gòu)后解壓、設(shè)兩個(gè)環(huán)境變量就能用。這個(gè)流程二十多年沒(méi)變過(guò)反而成了它的優(yōu)點(diǎn)——不寫(xiě)注冊(cè)表不留服務(wù)刪掉整個(gè)目錄就是卸載換機(jī)器遷移也只需要拷走整個(gè)目錄。2.1 下載與目錄規(guī)劃為什么堅(jiān)持干凈的根目錄我一般會(huì)把所有 zip 包解壓到同一個(gè)根目錄比如 C:\DJGPP。這里的第一個(gè)坑是路徑里不能有空格DJGPP 自身的腳本和 GNU make 在解析帶空格的路徑時(shí)會(huì)切錯(cuò)參數(shù)頭文件路徑拼接失敗報(bào)錯(cuò)卻指向 stdio.h排查起來(lái)很繞。第二個(gè)坑是解壓時(shí)必須保留 zip 內(nèi)自帶的目錄層次很多人習(xí)慣右鍵“解壓到當(dāng)前文件夾”一下子把 bin、include、lib 全攤平在一個(gè)目錄里gcc 找不到標(biāo)準(zhǔn)庫(kù)各種 No such file 跟著來(lái)。解壓完成后檢查五個(gè)位置bin\gcc.exe、bin\g.exe、bin\make.exe、lib\libc.a、include\stdio.h。這五個(gè)在主體就算齊了。C 用戶還要確認(rèn) lib\libstdcxx.a 存在DJGPP 2.04 的 C 運(yùn)行庫(kù)拆成 libstdcxx 和 libsupcxx 兩個(gè)包漏了其中一個(gè)鏈接階段會(huì)報(bào)一堆 undefined reference 到 operator new看不出是庫(kù)缺失還是代碼問(wèn)題。提示不要圖省事下載別人精簡(jiǎn)過(guò)的“綠色版 / 一鍵版”。DJGPP 工具鏈整體耦合編譯器、binutils、libc 之間對(duì)目標(biāo)文件格式的版本非常敏感混用精簡(jiǎn)包會(huì)踩到 4.5 節(jié)的鏈接錯(cuò)誤。2.2 配置 DJGPP 與 PATH兩個(gè)環(huán)境變量決定編譯器的認(rèn)知DJGPP 2.04 靠?jī)蓚€(gè)環(huán)境變量定位整個(gè)工具鏈一個(gè)是 DJGPP指向 djgpp.env 文件一個(gè)是 PATH指向 bin 目錄。Windows cmd 里的最小配置如下。set DJGPPC:\DJGPP\DJGPP.ENV set PATHC:\DJGPP\BIN;%PATH%第一行的邏輯是gcc、gdb、make 啟動(dòng)后會(huì)讀取 DJGPP 變量指向的 djgpp.env這個(gè) env 文件里寫(xiě)好了默認(rèn) CPU 類型、默認(rèn)編譯選項(xiàng)、庫(kù)搜索路徑和頭文件搜索路徑。變量沒(méi)設(shè)DJGPP 工具就不知道自己該按哪個(gè)平臺(tái)工作等價(jià)于一個(gè)不知道自己目標(biāo)的編譯器。第二行把 bin 塞進(jìn) PATH讓你在任何目錄下敲 gcc 都能被找到。最容易被忽略的是 DJGPP 這個(gè)名字必須全大寫(xiě)工具鏈內(nèi)部按大寫(xiě)變量名精確匹配cmd 的 set 不區(qū)分大小寫(xiě)但傳給子進(jìn)程時(shí)變量名是小寫(xiě)就真的讀不到。我一般會(huì)直接把這兩個(gè)變量寫(xiě)進(jìn) Windows 系統(tǒng)環(huán)境變量而不是每次開(kāi) cmd 重新 set。因?yàn)榫幾g老代碼時(shí)經(jīng)常同時(shí)開(kāi)好幾個(gè)終端一個(gè)跑 make一個(gè)跑 gdb一個(gè)盯匯編輸出只在一個(gè)窗口 set 會(huì)漏掉另外兩個(gè)報(bào)錯(cuò)時(shí)還以為編譯器壞了。寫(xiě)完系統(tǒng)變量要記得重啟終端讓新進(jìn)程重新加載環(huán)境當(dāng)前窗口里的舊 PATH 不會(huì)自動(dòng)更新這是很多人配完環(huán)境變量發(fā)現(xiàn)不生效的第一個(gè)原因。2.3 最小編譯命令從 hello.c 到 hello.exe 的完整流程環(huán)境變量就緒后在工作目錄新建一個(gè) hello.c。#include stdio.h int main(void) { printf(hello from DJGPP 2.04\n); return 0; }在命令行執(zhí)行編譯cd C:\DJGPP\WORK gcc -O2 -stdgnu99 -o hello.exe hello.c選項(xiàng)拆開(kāi)看-O2 是常用的優(yōu)化級(jí)別對(duì) DOS 目標(biāo)最穩(wěn)妥-stdgnu99 把 C 標(biāo)準(zhǔn)定到 C99 加 GNU 擴(kuò)展DJGPP 的 stdio.h 對(duì) C99 的覆蓋比 C11 完整老代碼也熟悉這套-o hello.exe 指定輸出名不寫(xiě)的話默認(rèn)生成 a.out在 DOS 下還得改名才能運(yùn)行容易漏。編譯成功會(huì)多出 hello.exe。我跑生成的 exe 時(shí)被 Windows 彈過(guò)一次“不是有效的 Win32 應(yīng)用程序”這是正?,F(xiàn)象它是 MZ 頭的 DOS 可執(zhí)行程序頭部綁了一小段 DOS 擴(kuò)展器 stubWindows 的 DOS 虛擬機(jī)不支持 32 位 DPMI 程序所以雙擊報(bào)錯(cuò)不等于編譯失敗。想確認(rèn)產(chǎn)物身份用 16 進(jìn)制編輯器看前幾個(gè)字節(jié)MZ 頭后面不是 PE 頭而是 DOS 擴(kuò)展器的實(shí)模式代碼。2.4 運(yùn)行的秘密CWSDPMI 與 DOS 擴(kuò)展器怎么把 32 位程序送進(jìn)實(shí)模式系統(tǒng)要理解 hello.exe 為什么能跑在 DOS 里先得厘清運(yùn)行模型。DOS 內(nèi)核只認(rèn)識(shí) 16 位實(shí)模式程序CPU 被限制在 1MB 地址空間內(nèi)而 DJGPP 2.04 編譯出來(lái)的是 32 位保護(hù)模式代碼兩者之間隔著一層轉(zhuǎn)換這層就是 DOS 擴(kuò)展器。DJGPP 使用的擴(kuò)展器是 CWSDPMI一個(gè) DPMI 服務(wù)程序。它的執(zhí)行順序是在 DOS 下敲 hello.exeDOS 按 MZ 格式把程序裝入內(nèi)存程序入口處是一小段實(shí)模式 stubstub 會(huì)在當(dāng)前目錄或 PATH 里找 CWSDPMI.EXE加載它再把 CPU 從實(shí)模式切到保護(hù)模式建立 DPMI 服務(wù)完成切換后才跳轉(zhuǎn)到真正的 32 位 C 運(yùn)行時(shí)入口最后執(zhí)行 main。所以 hello.exe 不是一個(gè)獨(dú)立自足的文件發(fā)布時(shí)務(wù)必把 CWSDPMI.EXE 一起帶上否則換一臺(tái)沒(méi)有它的機(jī)器程序會(huì)在加載階段就退出界面都不給你一個(gè)。如果不想讓用戶帶外部文件可以用 bin 下的 stubedit.exe 把 CWSDPMI 靜態(tài)嵌進(jìn)可執(zhí)行文件。stubedit hello.exe這個(gè)命令會(huì)打開(kāi)一個(gè)底層的 stub 編輯界面在界面上把 cwsdpmi 的 stub 綁定到當(dāng)前 exe。綁定后文件會(huì)增大 10KB 左右但啟動(dòng)時(shí)不依賴外部 CWSDPMI。常見(jiàn)做法是開(kāi)發(fā)期用外部 CWSDPMI發(fā)布期靜態(tài)綁入兩邊都避免運(yùn)行時(shí)缺文件。我自己的習(xí)慣是開(kāi)發(fā)期也靜態(tài)綁定這樣每次在 DOSBox 里同步文件只拷一個(gè) exe少一個(gè)遺漏點(diǎn)。2.5 用 DOSBox 做運(yùn)行測(cè)試驗(yàn)收編譯產(chǎn)物前的最后一步只有真正在 DOS 環(huán)境里跑一次才算驗(yàn)收工具鏈。常見(jiàn)做法是裝一個(gè) DOSBox把 C:\DJGPP 整個(gè)目錄掛載為 DOS 的 C 盤(pán)然后在虛擬機(jī)里執(zhí)行mount c c:\djgpp c: cd work hello.exe運(yùn)行結(jié)果應(yīng)當(dāng)是打印出 hello from DJGPP 2.04然后正常回到 DOS 提示符。如果程序沒(méi)有輸出就直接退出先看當(dāng)前目錄有沒(méi)有 CWSDPMI.EXE如果打印輸出后系統(tǒng)卡死多半是 DOSBox 的 CPU 核心與保護(hù)模式切換沖突把 dosbox.conf 里的 coredynamic 改成 corenormal 再試。這一章的終點(diǎn)是把代碼、編譯、運(yùn)行三條鏈穿起來(lái)。鏈通了下一章聊工具鏈的高級(jí)用法才有依托。3. 用好 DJGPP 2.04 的完整工具鏈編譯選項(xiàng)、Makefile 與調(diào)試DJGPP 2.04 不只是 gcc 一家獨(dú)大它還帶了一套完整的 binutils 和調(diào)試器。學(xué)會(huì)把它們組合起來(lái)老平臺(tái)開(kāi)發(fā)效率才追得上現(xiàn)代環(huán)境而不是每次重編一遍全項(xiàng)目。3.1 gcc 常用編譯選項(xiàng)-O2、-std 和 -march 在 DOS 目標(biāo)下怎么選DJGPP 2.04 的 gcc 是針對(duì) i586 目標(biāo)構(gòu)建的默認(rèn)指令集基線在 Pentium 一代附近。如果你把編譯產(chǎn)物拿到更老的 386/486 上跑默認(rèn)選項(xiàng)生成的指令會(huì)讓老 CPU 直接非法指令異常。所以第一個(gè)要明確的是目標(biāo)硬件。只在 DOSBox 里跑用默認(rèn)或 -marchi586 都行要兼顧 486 機(jī)器就加 -marchi486。一個(gè)常見(jiàn)編譯命令模板gcc -O2 -marchi486 -stdgnu99 -Wall -c video.c gcc -O2 -marchi486 -stdgnu99 -o game.exe main.o video.o input.o參數(shù)說(shuō)明-O2 是性能與體積的平衡點(diǎn)-Os 在空間緊張時(shí)換體積-march 限制生成的指令集決定了產(chǎn)物能跑在什么檔次的 CPU 上-Wall 打開(kāi)編譯警告老代碼遷移時(shí)靠它抓未聲明函數(shù)。需要留意 DJGPP 2.04 里 -stdgnu99 與 -stdc99 的差別不大但涉及內(nèi)聯(lián)匯編和 asm 關(guān)鍵字時(shí)gnu99 更省事老 C 代碼里的asm不會(huì)被嚴(yán)格模式攔下。還有一個(gè)經(jīng)常被忽略的選項(xiàng)組合是 -ffunction-sections 和 -fdata-sections。它把每個(gè)函數(shù)、數(shù)據(jù)段拆成獨(dú)立小節(jié)配合鏈接器的 --gc-sections 可以把沒(méi)用到的部分整體丟棄。對(duì) DOS 下體積敏感的工具很實(shí)用尤其從老倉(cāng)庫(kù)拉來(lái)的代碼經(jīng)常整個(gè)目錄都被編譯進(jìn)去實(shí)際只用到其中一小部分函數(shù)。gcc -O2 -ffunction-sections -fdata-sections -c *.c gcc -o tool.exe *.o -Wl,--gc-sections第一行編譯時(shí)按函數(shù)和數(shù)據(jù)切分段落第二行鏈接時(shí)丟棄沒(méi)人引用的段。效果在控制臺(tái)工具上通常能省 20% 到 30% 體積代價(jià)是調(diào)試時(shí)符號(hào)表變大行號(hào)定位偶爾不準(zhǔn)。所以這個(gè)選項(xiàng)組我一般只用在發(fā)布前的最終構(gòu)建調(diào)試階段關(guān)掉。3.2 多文件項(xiàng)目一個(gè)可以直接抄的 Makefile 模板DJGPP 自帶 GNU make可以在 DOS 命令行下直接跑 make 命令。寫(xiě)多文件工程時(shí)我通常從 min 依賴規(guī)則的 Makefile 開(kāi)始。CC gcc CFLAGS -O2 -stdgnu99 -Wall -marchi486 TARGET game.exe OBJS main.o video.o input.o $(TARGET): $(OBJS) $(CC) -o $(TARGET) $(OBJS) main.o: main.c video.h input.h $(CC) $(CFLAGS) -c main.c video.o: video.c video.h $(CC) $(CFLAGS) -c video.c input.o: input.c input.h $(CC) $(CFLAGS) -c input.c clean: del $(OBJS) $(TARGET)這套規(guī)則講了兩件事顯式依賴和隱式命令。每條“目標(biāo): 依賴列表”后面帶 Tab 縮進(jìn)的行是生成目標(biāo)的命令GNU make 執(zhí)行時(shí)先比較目標(biāo)和依賴的時(shí)間戳依賴比目標(biāo)新才重建目標(biāo)。clean 用的是 del 而不是 rm因?yàn)?DJGPP 的命令行環(huán)境沒(méi)有 rmWindows cmd 下 del 同樣有效。這里最經(jīng)典的翻車(chē)點(diǎn)是縮進(jìn)用了空格而不是 Tabmake 會(huì)報(bào) missing separator 然后直接停止我在這上面丟過(guò)不少時(shí)間。如果源碼文件很多可以考慮模式規(guī)則和自動(dòng)推導(dǎo)但不建議新手一上來(lái)就用。DJGPP 2.04 在 DOS 下跑的 make 版本較老通配符和二次展開(kāi)的行為細(xì)節(jié)跟新版不一樣踩到會(huì)很難查。先用寫(xiě)全依賴的笨辦法項(xiàng)目穩(wěn)定后再優(yōu)化省下來(lái)的時(shí)間比省下的幾行字符值錢(qián)。3.3 用 gdb 調(diào)試 DJGPP 程序從黑匣子到斷點(diǎn)DJGPP 2.04 的 gdb 是 DOS 原生程序意味著你可以直接在 DOSBox 里啟動(dòng)它調(diào)試另一個(gè) DOS 程序。編譯時(shí)打開(kāi)調(diào)試符號(hào)并關(guān)閉優(yōu)化gcc -g -O0 -o hello.exe hello.c gdb hello.exe進(jìn)入 gdb 命令行后常用流程是(gdb) break main (gdb) run (gdb) next (gdb) print i (gdb) quitbreak main 在函數(shù)入口設(shè)斷點(diǎn)run 啟動(dòng)程序在斷點(diǎn)停下后 next 是單步執(zhí)行print 打印變量當(dāng)前值quit 退出。對(duì) DOS 程序來(lái)說(shuō)最實(shí)用的是拿它查段錯(cuò)誤run 之后如果看到 SIGSEGV用 backtrace 看?;厮莼灸芏ㄎ坏绞悄膫€(gè)函數(shù)寫(xiě)穿了數(shù)組。注意 gdb 在 DOSBox 里運(yùn)行也需要 CWSDPMI.EXE而且調(diào)試器本身要占內(nèi)存DOSBox 默認(rèn)的 XMS 設(shè)置太低時(shí)先把 DOSBox 配置里的 memsize 調(diào)到 16 或 32 再跑。遇到難纏的內(nèi)存問(wèn)題gdb 有一種現(xiàn)代環(huán)境里不常見(jiàn)的玩法直接在保護(hù)模式下訪問(wèn)顯存和端口。你在 gdb 里用 x/wx 0xB8000 可以直接查看 VGA 文本緩沖區(qū)的內(nèi)容在調(diào)試圖形驅(qū)動(dòng)時(shí)不需要額外打日志函數(shù)比插入一堆調(diào)試代碼干凈得多。3.4 用 binutils 做產(chǎn)物瘦身與檢查strip、objcopy 的實(shí)際場(chǎng)景DJGPP 2.04 自帶的 binutils 里日常最常用的三條是 strip、objcopy 和 strings。strip 去掉符號(hào)表把可執(zhí)行文件體型減下來(lái)strip -s game.exe對(duì)發(fā)布版本做這一步是基本禮儀一個(gè)帶完整調(diào)試符號(hào)的 DOS 程序體積能差一倍以上。-s 表示 strip all連重定位信息一起去掉副作用是 gdb 無(wú)法再對(duì)這個(gè) exe 下斷點(diǎn)所以 strip 要放在最后階段調(diào)試期間不要碰。objcopy 在自制操作系統(tǒng)和引導(dǎo)程序場(chǎng)景出場(chǎng)。DJGPP 的鏈接器默認(rèn)產(chǎn)出帶 DOS 擴(kuò)展器的可執(zhí)行格式但你的內(nèi)核最終要交給引導(dǎo)器加載到固定內(nèi)存地址需要的是一段沒(méi)有文件頭、沒(méi)有重定位的純二進(jìn)制。命令objcopy -O binary kernel.exe kernel.bin-O binary 把 COFF 段按內(nèi)存布局原樣導(dǎo)出生成 flat binary。這個(gè)文件沒(méi)有了 MZ 頭和保護(hù)模式 stub必須由引導(dǎo)代碼按約定地址加載并自行切換保護(hù)模式。用這個(gè)命令前建議先在鏈接腳本里把內(nèi)核段布局排好常見(jiàn)做法是讓 .text 起始地址等于期望的加載地址否則出來(lái)的 bin 會(huì)在開(kāi)頭帶一坨填充數(shù)據(jù)加載時(shí)錯(cuò)位。strings 是個(gè)被低估的檢查工具strings game.exe | grep -i error\|fail它把所有可打印字符串撈出來(lái)配合 grep 看程序內(nèi)置的錯(cuò)誤提示不用運(yùn)行就能排查資源文件路徑、配置文件格式這類問(wèn)題。我在處理老游戲漢化時(shí)經(jīng)常用它確認(rèn)文本是 ASCII 還是 GBK比盲改二進(jìn)制穩(wěn)得多。4. DJGPP 2.04 避坑指南環(huán)境變量、路徑分隔符與內(nèi)存模型的典型翻車(chē)現(xiàn)場(chǎng)DJGPP 2.04 的報(bào)錯(cuò)信息往往不像現(xiàn)代編譯器那么友好很多問(wèn)題表現(xiàn)為“編譯不過(guò)”或“運(yùn)行崩潰”實(shí)際根源卻藏在環(huán)境配置和內(nèi)存模型里。下面按我踩過(guò)的順序列出 5 個(gè)高頻坑每條按現(xiàn)象、原因、解決的順序說(shuō)清楚。4.1 stdio.h not found環(huán)境變量 DJGPP 丟失的癥狀與修復(fù)現(xiàn)象gcc 一編譯任何 .c 文件立刻報(bào)stdio.h: No such file or directory但 include\stdio.h 明明存在。原因DJGPP 環(huán)境變量沒(méi)設(shè)置或設(shè)置了但指向的 djgpp.env 路徑不對(duì)。gcc 知道自己是 DJGPP 工具鏈但沒(méi)被告知去哪找標(biāo)準(zhǔn)頭文件。另一個(gè)隱蔽點(diǎn)是你把 djgpp.env 的名字寫(xiě)錯(cuò)比如 Windows 默認(rèn)隱藏?cái)U(kuò)展名文件名真實(shí)是 DJGPP.ENV.txt指針就斷了。解決先用 echo %DJGPP% 確認(rèn)變量存在且路徑正確再看文件管理器里有沒(méi)有被系統(tǒng)吞掉擴(kuò)展名。我在 Windows 上習(xí)慣在 cmd 里執(zhí)行 dir C:\DJGPP\DJGPP.E* 看真實(shí)文件名比肉眼省心。配好這兩個(gè)變量后gcc -v 打印的 search 路徑里能看到 include 目錄一眼就能驗(yàn)證工具鏈認(rèn)知是否到位。4.2 Makefile 里文件路徑被反斜杠截?cái)嗦窂椒指舴目蝇F(xiàn)象Makefile 里寫(xiě) C:\DJGPP\LIB\libc.amake 報(bào)錯(cuò)說(shuō)找不到文件或把路徑截?cái)喑?C: 加一串亂碼。原因GNU make 把反斜杠當(dāng)作轉(zhuǎn)義字符處理DOS 風(fēng)格路徑里的 \D、\L 會(huì)被吃掉一層。這個(gè)問(wèn)題在 DJGPP 2.04 自帶的舊版 make 里尤其明顯。解決Makefile 內(nèi)部統(tǒng)一用正斜杠寫(xiě)路徑比如 C:/DJGPP/LIB/libc.aWindows 和 DOS 的文件系統(tǒng)層都能識(shí)別正斜杠。需要傳給編譯器參數(shù)時(shí)也盡量用正斜杠只在用戶交互的命令行里保留反斜杠習(xí)慣?,F(xiàn)在寫(xiě)任何 DOS 項(xiàng)目 Makefile我第一件事就是全局替換反斜杠省得后面的坑連成串。4.3 長(zhǎng)文件名支持LFN 開(kāi)關(guān)與 8.3 短文件名的取舍現(xiàn)象程序在 DOSBox 里 fopen(config.dat, r) 正常放到純凈 DOS 6.22 上 fopen 返回 NULL或者文件讀到一半數(shù)據(jù)錯(cuò)亂。原因DJGPP 2.04 通過(guò) LFN 接口訪問(wèn)長(zhǎng)文件名DOS 默認(rèn)沒(méi)開(kāi)啟該接口時(shí)需要驅(qū)動(dòng)程序支持。純凈 DOS 只有 8.3 短文件名而你的源代碼和資源文件在 Windows 下解壓時(shí)名字已經(jīng)拉長(zhǎng)程序按長(zhǎng)名字去找自然找不到。解決兩條路。一是給 DOS 加載 LFN 驅(qū)動(dòng)但老機(jī)器環(huán)境不好說(shuō)二是把涉及運(yùn)行期資源訪問(wèn)的文件名全部壓成 8.3 格式配置叫 config.cfg存檔叫 save.dat。我在移植老游戲時(shí)默認(rèn)按短文件名規(guī)劃資源省掉一長(zhǎng)串兼容性報(bào)告。4.4 C 異常或大數(shù)組段錯(cuò)誤DPMI 內(nèi)存不夠時(shí)的現(xiàn)象與處理現(xiàn)象C 程序里 throw 一個(gè)異常程序直接崩潰或者 main 里聲明一個(gè) 10MB 的局部數(shù)組運(yùn)行到函數(shù)入口就段錯(cuò)誤。原因DJGPP 2.04 的 C 異常依賴 DPMI 提供的內(nèi)存管理CWSDPMI 分配給程序的堆大小默認(rèn)從系統(tǒng)配置讀取DOSBox 默認(rèn)內(nèi)存不足時(shí)異常處理?xiàng):痛蟮臈I蠑?shù)組都放不下。局部數(shù)組超過(guò)幾 MB 時(shí)往往超出內(nèi)核對(duì)堆棧段的預(yù)留運(yùn)行時(shí)報(bào)段錯(cuò)誤。解決給 CWSDPMI 配置更大的內(nèi)存上限。常見(jiàn)做法是改 dosbox.conf 的 memsize 到 64或者在發(fā)布前用 stubedit 設(shè)置程序需要的 DPMI 內(nèi)存池大數(shù)組改用 malloc 放堆不要放棧。我給老平臺(tái)移植代碼定的規(guī)矩是單塊棧數(shù)組不超過(guò) 64KB超過(guò)一律堆分配這條規(guī)矩救了不少次。4.5 undefined reference to __main工具鏈版本混用的典型癥狀現(xiàn)象鏈接時(shí)報(bào) undefined reference to __main代碼里根本沒(méi)寫(xiě)過(guò)這個(gè)符號(hào)。原因這是 DJGPP 特有的 C 運(yùn)行時(shí)初始化符號(hào)。GCC 在 C 程序啟動(dòng)時(shí)通過(guò)調(diào)用 __main 完成全局構(gòu)造器流程該符號(hào)由 libc.a 提供。問(wèn)題是 binutils、libc 和 gcc 三者版本混搭時(shí)GCC 認(rèn)為自己需要 __main而鏈接器鏈接的庫(kù)卻改了符號(hào)名或沒(méi)有導(dǎo)出目標(biāo)文件格式對(duì)不上最終鏈接失敗。解決嚴(yán)格按照同一套發(fā)布的 DJGPP 2.04 包安裝不要混用不同分支的 gcc 和 libc。檢查方法是用 nm 在 libc.a 里搜索符號(hào)nm libc.a | grep main確認(rèn)存在后再查 gcc 的 specs 文件里的 crt 相關(guān)路徑是否指到同版本目錄。這個(gè)問(wèn)題沒(méi)有快速補(bǔ)丁把環(huán)境清理干凈重裝全套是最省時(shí)間的做法比對(duì)著 ld 腳本折騰半天下班。5. 進(jìn)階用法驗(yàn)證編譯產(chǎn)物與移植老代碼的兩個(gè)實(shí)用習(xí)慣工具鏈跑順之后有兩件事值得固定成習(xí)慣拿到陌生 exe 先驗(yàn)證遷移老代碼只動(dòng)封裝層。這兩件事能幫你把“運(yùn)氣好能過(guò)”變成“每次都能過(guò)”。5.1 驗(yàn)證產(chǎn)物三種快速檢查手段我不太相信“剛才編譯過(guò)了”這句話。拿到一個(gè) DJGPP 產(chǎn)物至少做三道檢查。第一道是 file 確認(rèn)格式file game.exe輸出出現(xiàn) 32 位、DOS 可執(zhí)行、保護(hù)模式這些關(guān)鍵詞說(shuō)明工具鏈目標(biāo)正確如果顯示 16 位 COM 或 EXE多半是環(huán)境里混入了其他 DOS 工具。第二道是 strings 掃內(nèi)嵌路徑strings game.exe | grep -i config\\如果在輸出里看到反斜杠形式的路徑程序在 DOS 下解析路徑時(shí)會(huì)出問(wèn)題趁發(fā)布前改掉。第三道是完整啟動(dòng)模擬發(fā)布前把 exe、CWSDPMI.EXE 和資源文件放進(jìn)同一個(gè)目錄在 DOSBox 里從干凈機(jī)器模擬一次完整啟動(dòng)。這步不能省我數(shù)不清多少次在開(kāi)發(fā)機(jī)上有 CWSDPMI 所以沒(méi)暴露換目錄后程序直接神秘消失。5.2 把老 Turbo C 代碼遷到 DJGPP只動(dòng)封裝層不動(dòng)業(yè)務(wù)邏輯從 Turbo C 遷到 DJGPP 2.0490% 的工作集中在頭文件和平臺(tái) API 替換。我給自己定的規(guī)則是造一個(gè) target-config.h把平臺(tái)差異全壓進(jìn)去。#ifndef TARGET_CONFIG_H #define TARGET_CONFIG_H /* Turbo C 的遠(yuǎn)指針在 DJGPP 平坦內(nèi)存里不需要 */ #if defined(__DJGPP__) #include stdlib.h #define _fmalloc malloc #define _ffree free #else #include alloc.h #endif #endif這個(gè)頭文件的作用是業(yè)務(wù)代碼繼續(xù)調(diào)用 _fmalloc底層在 DJGPP 下被替換成 malloc。32 位保護(hù)模式的平坦內(nèi)存里所有指針都?jí)蜻h(yuǎn)遠(yuǎn)指針概念本來(lái)就該廢棄用宏映射一下業(yè)務(wù)代碼不用改。移植時(shí)我會(huì)先把編譯錯(cuò)誤全部排干凈再逐個(gè)替換圖形和中斷部分最后跑回歸。圖形模式是另一個(gè)深水區(qū)保護(hù)模式訪問(wèn)顯存需要映射gdb 設(shè)斷點(diǎn)查 VGA 緩沖比 printf 調(diào)試高效。這套流程走完一個(gè)項(xiàng)目基本就有了自己的移植模板。我現(xiàn)在拿到任何老代碼第一反應(yīng)是先找它的平臺(tái)依賴集中在哪幾個(gè)頭文件而不是急著編譯。這個(gè)習(xí)慣讓后來(lái)的移植工作順手不少希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
久久精品人妻一区二区三区| yaouchengrenav| 国产一区96在线| www.av家庭乱伦| 色综合1991| 嗯……啊…嗯嗯…啊…好舒服| 十八禁成人网站在线观看| 超碰人人干天天射| 欧美亚洲se91| 欧美色图 人妻| 五月天婷婷影院| 国产女人和拘做爰视频| 亚州男人天堂| 欧美人妻一区二区| 激情啪啪视频| 激情综合av| 日韩偷拍色图| 精品欧美乱码久| 久久久九精品| 色综合1991| 国产在线综合福利网站| 国产精品高潮久久久无码| 一本一道久久综合久久| 老鸭窝成人| 亚洲清纯唯美| 久久久久96| 天堂射| 久久国产精品一级二级三级| 国产剧情AV不卡在线观看| 2025年A片视频精品| 爱逼综合| 97精品熟女少妇一区| 国产成年女黄特黄| 欧美翘臀视频网站一区二区三区| 超碰在97| 精品少妇一区二区| 精品一区二区三区蜜桃| 无码人妻一区二区三区色欲aⅴ| 亚洲精品九九九| 91东北熟女| 91综合中文字幕| 中欧人妻丝袜中文字幕| 日本一区二区中文字幕久久| 欧美综合自拍| 亚洲制服欧美另类内射| 天天色悠悠激情| av在线浏览| 久久免费看高潮毛片韩国| 日本不卡三级网在线播放| 免費人妻夜夜爽天天爽爽一区| 69精品少妇一区二区三区蜜桃| 激情综合亚洲| 成人性爱av| 五月丁香拍拍激情综合三级| 婷婷五月天福利| 天天流夜夜操| 超碰碰97| 密臀在线一区尤物| 天天操人人操狠狠插| 亚洲1区2区三区高清中文字幕| 在线观看AV片| 欧美第一页性| 久久熟女久| 少妇九九九九| 日本性爰一道本| 熟妇操花| 96AV久久久| 久久国产精品熟女人妻| 国产精品国产精品国产| 日本国产高清色www视频在线| 在线看免费无码AV天堂的| 色五月婷婷麻豆在| 污电影在线观看| 午夜经典| 精品中文字幕一区二区| 久久精品国产99国产精品亚洲| 91成人久久| 日骚逼视频| 久久透逼视频| 欧美亚州手机在线| 人人澡人人干| 国产精品一区二区 尿失禁| 人妻少妇一区二区| 国产AV中文| 亚洲天堂中文字| 五月激情在线| 黄色片大香蕉| 亚洲 se图 欧美电影| 性生活性生大爱77AV国产| 岛国1区2区3区在线观看| 久久久97| 夜夜免费视频| 成人乱人伦一区二区| 裸体美女国产免费久久久网站| 欧美在线55555| 亚洲日韩精品一区二区| 久久99网站| 男人精品天堂一区| 亚洲日本激情| 91殴美大片| 亚洲欧美91| 精品一区二区成人| 欧美一区二区成人一卡| 欧美成年人性爱视频免费观看| 国内精品伊人久久久久影院会| laoshunv91| 四虎国产精品永久在线囯在线 | 私色综合网| 97操碰| 操逼片国产| 一区,二区,三区视频| 亚洲图片欧美色| 日韩精品中文字幕二区| 亚洲人妻久久久| 激情综合二| 黄色高清久久无码依人| 久久久久亚洲熟妇熟女| 九九九九88| 日本精品五区| 天堂网 主播 亚洲| Blackedraw视频一区二区| 亚洲综合影视| 欧美综合在线91| 中文字幕av亚洲精品| 真实高潮91| 波多野结衣之双飞调教在线播放| 亚洲情色91| 亚洲美女精品九九视频| 第45页一区二区| 校园春色 欧美| 久超碰在| 国产高清精品一区二区三区毛片 | 四虎在线观看网站| 国产精品探花视频| 97狠狠| AV天天在线观看| 中文字幕av亚洲精品| 69精品人人人人| 欧美日韩一区二区三区四区蜜桃| 91高清欧美| 97超碰69| 久久综合国产精品国产| 日韩欧美天堂| 18精品一区| 一本精品日本在线视频精品| 日韩特一级久久| 亚洲无码色| 蜜臀99久久精品久久久懂爱| 鸥美极品| 按摩中文字幕| 国产亚洲色婷婷久久99精品91葵花宝典 | 日韩三级网址| 欧美黄色片在线播放| 色九九综合AV| 99久久九九| 秋霞一集毛片观看| 91在线国产后入风骚翘臀美女素人| 精品久久久亚洲AV成人网站| 张柏芝国产一区在线观看| 9超碰免费| 婷婷色中文字幕| 另类图片欧美激情综合| 亚洲资源吧| 久久夜嗨| 天天欧美欧美亚洲网| 国产9 9在线 | 亚洲| 久久久三区二区一区| 91麻豆天美国产欧美日| 色狠狠色| 久草免费福利在线播放| 中文字幕精品探花视频| 一区二区三| 九九九九97| 天天综合网一91网| 99久久9| 狠日操| 少妇一区二区三区| 美女91网| 久草线上视频免费看| 啊啊啊com| 舔人妻中文免费视频| 99青青草国产视频| 国产av青草| 九九aV| 中文字幕亚洲永久精品| 强奸乱伦AV网址| 大香蕉狠狠爱| 天天久久久久久| 久久一二三四不卡| 狼人综合婷婷激情四射 | 人人么人人操| 四虎在线观看视频| 中国少妇啪啪视频| 男人的天堂VA| 日日干日日摸| 亚洲欧美洲综合| 久9综合在线| 60秒免费视频| 欧美亚洲厕所精品偷拍91| 内射日韩大臀美女| 国产精品白虎| 日本精品88888888| 欧美少妇第一页| www.狠狠干.coom| 九月丁香婷婷| 久久午夜伦| 狼人久草| 亚洲中文字幕有码视频一区二区三区| 男人的天堂2018东京热啪啪啪| 色五月婷婷久久| 抽插无码高清一区| 乱伦熟女区| 午夜丁香| 婷婷伊人一区| 黄呦呦在线| 国产精品网站免费| 天天干1区2区在线| 亚洲天堂2020| 少妇厨房愉情理伦片bd在线观看| 日韩精品在线视频在线观看| 久久国产免费激情视频| 欧美性爱三区二区| 不卡超碰护士AV在线免费播放| 美女黄页| 东北老熟女| 国产精品农村妇女| 久久成人国产精品| 久久一区二区高清免费| 91超碰人人操| 久久只有精品一区二区三区| 日韩特一级久久| 亚91网| 国产精品黑人一区二区三区| 成人性爱av.com| 久久精品性| 黄页大片在线观看| www.高清无码诱惑一区.com| 久久青娱乐| 在线中文字幕视频| 一区操逼日比视频| 97色五月天完| 日韩天天本| 日日夜夜骑| 精品少妇999| 在线国产福利网址导航| 五月婷婷丁香六月| 亚洲免费97免费| 精品二区久久| 黑人美精品 A片| 欧美九9 9 9| 最新av在线| 99热线麻豆| 91视频精品| 超碰成人国产| 成人精品视频一区二区| 啪啪啪综合| 国产精品成人久久一区二区三区| 99热最新| 亚州图片第一页| 四虎精品永久在线播放| 97天天爽| 大香蕉日韩| 无码精品久久| 欧美色色色| 亚洲drav色图| 无码一区二区精品视频久久久春药| 国产熟女乱论| 亚洲第一色页夜| 欧美色图电影| 殴美大黄片| 97人人爱人人做人人乐| 欧州91高潮| 欧美综合区| 天美传媒av在线| 日韩日本欧美在线观看| 人妻少妇一区二区| 97超级久久| 在线强奷到舒服的无码视频 | 美女91网| 丁香五月偷拍| 国内毛片四区| 全球成人中文在线| 91N综合网在线| 6080YYY午夜理论片在线观看| 女同在线视频一区| 麻豆国产精品午夜视频| 国产精品电影推荐| av在线观看不卡网站| 日本伦理一区二区| 成人a v在线播放免费| 天天干天天拍| 久久男人的天堂| 夜夜爽爽爽| 99热在线播放| 久久综合18p| 精品日韩| 97 超碰 人人做 人人爱| 97超碰欧美| 蜜桃精品一区二区三区ww| 欧美日韩在线小说 | 情色五月天网| 99久久e免费热视| 99精品人人爽| 欧美 亚洲 偷拍自拍| 久久久少妇诱惑精品视频| 国产午夜激片Av毛片不卡| 97超碰总站| 蜜桃无码AV一区二区| 人妻少妇精品无码专区二区密桃| 97色干| 久久春色| 欧美白嫩女HD| JIZZJIZZ国产精品喷水| 中文字幕第2页| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 中文字幕成人| 欧美综合1性辶| 97国产超湿| 国产精品探花色| 我中文字幕6区| 色综合九九| 欧美少妇色图| 五月天加勒比啪| 97最新在线播放视频| 一本久道久久综合狠狠爱一密臀精| 青草视频在线看看看看看看看看看| 欧美激情综合| 欧美激色| 国产欧美一区二区| 日本国产欧美高清在线| 精品久| 99蜜桃臀久久久欧美精品网站| 五月丁香社区婷婷日韩欧美精品影院| 亚洲男人天堂网| 啊啊啊啊啊啊啊啊啊啊在线观看| 久碰视频| 人人操人人操人人人操| 精品天堂| 啊啊啊不要嗯嗯在线观看| 99性视频| 国产精品自拍欧美在线| 日韩免费簧片| 无马一区二区| 少妇第一页| 91暧暧| 人妻-91porn| 欧美高清18A片| 久久精品无码一区二区三区| 五月天亚洲网| 91美女视频在线| 国产亚洲色婷婷久久99精品91| 亚洲国产美女久久久久| 国产精品97视频| 欧美91精彩| 国产丝袜美女诱惑| 五月丁香激情综合网| 在线观看免费视频国产| 91视频伊人| 成年人黄色| 极品少妇久久久久| 久久久久极品| 60秒免费视频| 九九热精彩视频| 欧美人妻精品| 污到发麻的视频 国产| 色色五月天激情| 久久av成人无码免费| 成人一道本免费视频| 午夜毛片亚洲精品片国产久久久| 色噜噜人妻av中文字幕| 精品人妻视频一区二区在线播放| 久久久精品中文字幕麻豆| oumeisetupian| 99青草| 91熟女熟妇视频网站 | 四方色播| 91性情| 成人青青草原伊人| 日韩大香蕉AV影片| 九九九九精品精| 亚洲高清欧美总合| 欧美日韩另类激情图片| 啊啊啊啊好疼| 超碰人妻久久| 久久久久久九九九| 98久久| 碰碰97| 色激情综合网站| 亚洲 91 在线| 亚洲久草AV色图| 亚洲91综合| 99色在线观看| 色欲天天综合网| 全球成人中文在线| 激情久久久| 秋霞曰韩R级| 中文自拍欧美影视| 美日韩成人| 九九久久九九久久| 真实高潮91| 日韩不卡码| 99在线啪| 久久尹人大香焦视| 精品无码久久久久久久杏吧| 日韩中文字幕人妻视频| 亚洲欧洲网站免费观看| 九久久九精品视频| 久久国产999| 日本道人妻久久久在线不卡色视频| 成年在线视频日本亚洲在线视频区精品江靖宇公司 | 少妇一区二区三区| 精品久久久av无码免费| 欧美不卡二区| 岛国精品视频在线观看| 女人天堂AV五区在线| 欧美色图亚州激情| 久久视频,这里只有精品| 久久国产精品视频| 色综合V| 人人操人人操草草| 天天操女人| 日噜夜夜夜夜夜夜夜夜夜夜爽爽爽爽爽爽爽爽爽爽爽爽 | 日语五十路和六十路亚洲国产精品| 91老女人| 白嫩国模丰满一二三区| 亚洲熟女综合| 日1区2区3区2020| 亚欧高清| 校园春色 男人天堂| 亚洲欧美setu| 超碰色老头| 欧美日韩激情无码专区| 久久婷婷国产一区二区色| 校园春色综合香蕉| 三上悠亚在线毛片91| 自拍偷拍 日韩无码| 亚洲人成色9999精品久久| 精国久久一区二区三区98| 啊啊啊啊网站| 色色色色电影网| 操b网站亚洲无码| 亚洲丝袜诱惑| 亚洲成人免费电影| 四季av一区二区凹凸精品小说| 丁香五六月啪啪| 在线 制服丝袜中出 人妻| 欧美亚洲宗合色性图| 国产精品诱惑| 另类视频在线| 日韩欧美麻豆 | 欧美精品日韩一区二区| 人妻人妻天天碰| 操b在线观看| 麻豆久久久一区二区| 2003天天干夜夜操| 青青草天天亲夜夜操网| 蜜桃视频啊啊啊啊| 人人操人人摸人人看人人干| 国产精品乱码久久久久久久久久久久| 91精品国产一区三一| 日本三级R| 青操影院| 不卡免费av在线播放| 欧美 亚洲 综合 制服 另类| 国产成人综合在线播放| 97碰碰日本乱偷人妻中文的| 自怕偷自怕亚洲精品| 99www.bibizy香蕉资源国产一区二区三区高清| 精品一区二区三区免费古装毛片香港三级日本三级人妇 | 中文?日韩?免费?精品| 91爽啪| 美女啊啊啊啊啊啊| 国产丝袜美女诱惑| 9999久久久| 女同在线视频一区| 日韩熟女操逼| 后入式视频国产自| 偷窥自拍A片| 亚洲区小说| 色色色99| 国产 日韩,欧美 自拍| 四虎影视在线| 婷婷在线视频在线观看| 日本九九久久99| 韩国午夜理伦三级好看| 日韩三级av片| 天堂日本亚洲欧美| 手机在线视频国内精品| 亚洲欧美综合网 | 殴美色网| 特级大荫道BBwBBwBBW| 免费a级毛片av无码久久精品中文字幕| 91精品人妻一区二区-全集完整版免费正片国语-B02AV | 欧美人人曰人人操人人射射| 69久久久久久久久久久久久| 国产超碰| 热思思免费视频| 亚洲AV无码久久精品蜜桃小说| 亚洲va有码在线天堂| 男人天堂最新手机版在线青青草| 蜜桃色色网站视频三区| 国产成人一级av88| 国产日韩怡红院| 亚洲AO在线| 日韩一性一交一A片俄罗斯| 人妻蜜桃臀| 午夜福利久久久噜久噜久久综合 | 美女AV一区二区| 久久美女福利是上海美女| 天久久久噜噜噜久久国产精品爽爽 | 久久啊哟| 国产欧美日韩精品中文| 日本精品五区| 久久精品无码不卡| 久插综合| 亚州少妇| 五月婷婷AV| 另类小说综合网| 超碰97日韩| 精品国产国产AV| 色噜噜综合在线| 人人操人人操人人人操| 伊人操| 亚洲在钱| 色娱乐色呦呦夜夜夜夜av| 91校园春色长篇| 99精品视频在线观看免费| 一起草在线视频| 欧洲自拍第一页| 99精品伊人| 国产一区二区三区中文字幕| 欧美刺激色黄片免费看| 在线无码视频| 久96热在线观看视频| 91在线观看,天天综合| 欧美一区二区三区黄色影视| 色婷婷综合久久久久中文一区二区| 久久99视频| 中国乱伦一区二区| 日韩中文字幕视频| 国产中出内射一区二区| 色97干| 9久9久| 果冻传媒A片一二三区| 91高跟美女在线播放| 丁香五月天婷婷姐| 亚洲精品久| 美女刺激久久国产欧美| 九月丁香婷婷| 五月天综合在线| 大香蕉啪啪啪| 婷婷五月在线视频| 中文字幕第页| 欧插网站| 免費人妻夜夜爽天天爽爽一区| 九九视品黄色| 国产性感骚丝袜在线| 久久久精品日本一道| 亚码激情| 久久av色| 男人天堂综合| 天天天操天天天爱| 久久精品操| 91天堂| 麻豆久久一区二区三区| 亚洲中文字幕精品一区| 欧美性爱免费短视频| 影视综合无码少妇| 亚洲黄网在哪免费看| 第一高清av中文字幕| 91丨九色丨东北熟女| 大香樵伊人网| 熟女天天干| 亚洲精品不卡一二三区| 久久风骚城市人| 日韩熟女精一区二区三区不卡| 久草在线| 尤物黄色在线观看网站| 岛国黄色大片网站| 欧美九9 9 9| 国产人伦精品一区二区三区| 嫩草影院永久在线制服丝袜| av影院十区| 亚洲色图91| 国产一区二区三区免费视频在性观看| 人人插人人摸人人| 99成人| 91久久午夜无码鲁丝片久久人妻| 久久久国产精品亚洲精品| 一区二区播放| 污色区网站| 亚洲国产成人精品无码专区| 亚洲影视综合网| 欧美白嫩女HD| 神马麻豆福利院| 久久久久久亚洲Av无码| 高清国产av无码| 岛国小电影| 中字一区| 中文字幕av亚洲精品| 国产女乱淫真高清免费视频| 看日韩美女二区三区免费操逼视频 | 密臀在线免费观看| 校园春色美腿丝袜 | 豆花视频操逼网址| 欧美激情综合| 内射中国少妇高清视频免费视频 | 日本操BAV| 欧美内射少妇| 91精品国产91熟女| 一区二区影院| 成人网欧美风情| 亚洲一区中文字幕| 一类无码操逼视频| 欧美日韩资源在线| 天堂综合网| 色成人Www精品永久观看| 日本精品人妻少妇一区二区| 中文字幕1区2区| 国产在线激情视频| 99精品丰满人妻无| 天天爱天天操| 欧洲熟妇xxXx欧美老妇裸体| 99re99视频在线免费观看| 精品久| 99热91| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 这里只有精品久久| 91精品操美女| 欧美性爱视频免费一区一A| 内射中出日韩在线观看视频| 精品一级| 俺去也婷婷| 日本一二三免费久久| 蜜乳AV一区二区三区四| 欧美综合网1| 国产精品亚洲天堂网址| 狠综合网| 久久久亚洲高清不打码| 欧美 熟女 日韩| 熟女这里只有精品6| 久久这里精品国产99丫e6| 亚洲欲色| 国产亚洲 中文欧美久久| 一区二区三区不卡视频| 亚洲有薄码区日本系列中文字幕| 欧美 亚洲 第一页 | 伊人网高清| 青草青青久久久久久国产| 男人的天堂一区| 天天色粽合合合合合合合| 亚洲欧美在线丝袜| 亚洲 欧美 中文 日韩超碰| 色欧美综合| 黄色成品网站| 成人a级高清视频在线观看| 99www.bibizy香蕉资源国产一区二区三区高清 | 欧美懂色综合网| 理论久久婷婷网 8| 亚洲无码 国产无码| 人妻出轨一区二区三区| 三级AV入口| 学生妹天天看| 国产成人+综合亚洲+天堂| 亚洲se91| 精品国产72| 丰满高潮18xxxx| 久久爱97| 国产性刺激| 强奸国产在线| 天天欧美| 欧美午夜色妇色鬼| 乱伦av.com| 中文字幕一区二区无码成人 | 久久精品人妻一区| 人人超碰在线观看黄| 把腿张开老子CAO烂你| 肥臀熟女一区二区三区视频| 久久9久9久99久9久9| 国产成人午夜视频网址| 91操熟女视频| 青青操少妇| 中文字幕精品资源在线| 秋霞 色色| 嗯嗯啊啊日韩精品| renqi久久久久久久久久久久| 夜夜草天天| 亚洲97资源| 亚洲综合113页| 探花激情视频| 国产亚洲精品一区二区三区| 无码九九| 欲色影视综合吧| 午夜天堂啪啪| 免费αⅴ在线观看| 亚洲av青草久久一区二区| 学生妹天天看| 99啪啪视频| 99热啪啪| 乱伦Av网| 人妻偷拍一区二区三区| 久久精品无码专区| 长久操视频| 午夜性| 大香蕉免费中文| 另类 日韩 熟女| 日本精品中文字幕视频| 欲色综合| 日日AAvv| 中出后入| 999综合色| 九一亚洲国产免费| 久久人妻办公室视频| 九月丁香综合网| 欧美一区二区三区四区综合| 国产精品乱码久久久久| av天堂加勒比| 搡老熟女国产1000部| 日韩精品人妻中文字幕久久久| 久久黄黄| 中文字幕一区av| 婷婷五月综合在线| 懂色AV蜜臀无码精品APP| 精品久久久久久中文字幕三区| 99999精品| 大香蕉狠狠爱| 极品色综合| 美女天天干| 超碰欧美97资源| 久久偷偷色综合蜜桃| 亚洲美女 晚间男人天堂| 日日日啊啊啊| 综合久欧洲| 国产夜夜艹| 按摩中文字幕| 2025亚洲男人天堂| 国产日韩精品一区二区三区| 91亚洲精品青草| 国产一区96在线| 天天综合日韩网| 国产欧美第五页| 97天天摸天天碰| 大香蕉色十月| 国产精品久久发布| 佐山爱中文字幕| 久久久中文版| 老司机午夜福利视频一区二区| 天天日天天屌天天操| 1024手机看片欧美日韩| 激情婷婷丁香| 国产嫩草精品A88AV| 欧美日韩制服| 天美传媒AV在线播放| 97啪啪| 在线中文字幕| 日日操丁香五月天| 日本女人操逼| 久久香蕉国产传媒一区剧情天美| 国产丝袜美女诱惑| 中 文字幕一区二区三四 五 区日 日 骚| 在线97在线| 精品视频久久区| 抽插一区二区视频| 久久久蜜桃臀无码视频| ji熟女.com| 玖玖爱免费观看视频| 国产激情久久久| 日本一二区免费| 操逼精品视频| 久久后入制服| 亚洲天堂久久久久久粉红视频| 欧美成熟性爱精品| 天天日天天干天天整| 婷婷在线播放| 欧美aⅴ99久久黑人专区| 亚洲第一男人天堂| 精品国产Av无码久久久伦古装| 欧美的性爱网站免费| 全球成人中文在线| 91蜜臀在线久久久久| 国产精品久久久九九九| 干B网| 在线观看无码三级少妇| 黄色av一区二区在线| 欧美成人精品一区二区三区| 大屁股国产在线视频| 97超碰欧美精品| 韩日性爱av| 中文字幕老熟妇黄色视频| 国产熟妇一区二区| 亚洲天堂资源网| 亚洲欧洲精品视频发布| 爱爱60秒免费视频| 土豪酒店各种姿势玩弄极品幼稚| 日日爱99| 偷看洗澡一二三区美女| 有码色中文字幕在线观看| 国产9熟妇视频网站| 天天谢天天干| 懂色AV一区二区三区| 激情婷婷丁香| 成人精品久久久午夜福利| 五月丁香成人网| 色网综合网| 精品美女久久久久| 韩日精品四区| 色噜噜人妻av中文字幕| 91深夜夜| 不卡码视频| 国产视频第二页| 亚欧成人中文字幕一区| 欧美日韩免费专区在线| 色逼综合| 天天爽夜夜操| 欧美色图99| 韩国午夜理伦三级好看| 91热情品| 日韩一级久久毛片| 老鸭窝亚洲毛片| 欧美综合色,www| 男人的天堂一区三区| 久久婷婷欧美| 天天懆天天日| 欧美五区| 国产精品日本无码A片| 日韩人妻资源网| 欧美se综合| 色播丁香| 国内一级精品| 99久久久| 女生91网站| 920日本午夜免费| 啊v在线观看视频| 激情小说五月天| 黄页| 亚洲综合春色| 91这里只有精品| 欧美三级一级| 2023天天操夜夜操| 美女淫穴| 香蕉热人人精品| 日韩丝袜高跟制服在线观看| 日韩无码a片| 天天草AV| 成年女人18级毛片毛片免费观看| 高清无码学生妹高潮| 人妻AV在线| 97碰久久| 欧美日韩免费专区在线| 亚欧性爱无码| 亚洲精品人伦一区二区| 亚洲精品人妻吞精av| 久肏视频字幕| 国内91熟女人妻丝袜天天精品视频在线 | 久久婷婷色综合一区二区三区| 一本一道久久综合久久| 99在线精品观看99| 伊人操| 青青草视频在线观看一区二区| 九九视频黄色片| 中文一区在线日| 国产精品久久久鸭无码的功能| 亚洲精品黄码久久久久| 蜜臀久久久久久999| 牛牛AV人人夜夜澡人人爽| 粉嫩小泬久久久一区二区| 唐山老熟妇露脸啪啪叫| 不卡视频一区蜜桃视频| 91 丝袜在线| 欧美性生活内射| 色色色天美视频| 精品人妻av区天天看片| 97人人爱人人做人人乐| 久久久亚洲欧美综合| 91中出视频| 国产农村妇女精品一二区| 青娱乐久久艹| 少妇久久久久久| 人妻黑丝袜电影| 久久婷婷五月天| 九色精品视频导航1| 清纯唯美综合| 久久999久| 激情av| 无码操逼视频一下| 亚洲综合在线91| 久久久不卡区一区二区三区久久久| 99久久网站| 日本成人A片网站| 啊啊啊草死我| 2019亚洲男人天堂| 欧美图片色综合| 国产伦精品一区二区三区在线观 | 五月天激情网站| www.99中文字幕| 97综合网| 91蜜臀人妻中文字幕在线| 久久111| 亚洲高潮少妇| 五月天黄色激情视频| 女欧美一区二三区| 狠狠爱大香蕉| 亚洲天天自拍| 东北操逼| 麻豆精品A片免费观看| 欧日韩不卡视.频| 国产在线视视频有精品| 国产探花精品在线| 一级AV性爱| 国产强奸乱伦无码视频| 99re视频这里只有精品| 青青欧美| 欧美大香蕉97| 嗯嗯啊啊操死我| 99re9在线| 色婷婷电影网| 青青草天天亲夜夜操网| 大香蕉乱级| 秋霞怕怕片| 久久久96| 超碰97亚洲| 超碰人妻久久| 男人的天堂免费| 欧美色图20P| 大茄子熟女AV导航| 亚州五月| 久久大香蕉97| 理论久久婷婷网8| 清纯唯美综合亚洲| 另类图片五月天| 亚洲情色 自拍| 四虎影视国产精品| 亚洲欧美综合网| 超碰97久| 97在线视频网站| 精品国产AV一区天美传媒| 超碰99在线| 九九九九精品视频| 日日不卡av| 超碰九区| 欧美性爱第1 页| 国内毛片欧美香蕉精品| 啪啪性爱免费视频| 久久久久久久伊人精品| 国产对白刺激视频| 国产精品宅男免费| 国产综合操逼高清| 一本道综合色图| 免费视频在线观看啊啊啊啊啊| 操人妻丝袜高跟| 成人综合网 欧美| 日日夜夜模| 超碰久草| 午夜精品久久久久久久99蜜桃一| 91成人无码| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 国产丰满熟夫69mpp| 密臀AV在线| 很狠操| 91老司机在线| 囯戸精品高潮呻吟旡码| 欧美性生活免费网| 天堂8在线新版官网| 久久久久久午夜男人的天堂| 欧美三级一级| 欧美日韩青操| 欧美96在线|欧| 亚洲国产成人精品久久久国产成人一区二区| 国产成人99久久亚洲综合| 久久精品店| 男人亚洲91首页在线| 91在线色| 四虎884| 亚洲日韩在线a不卡99精品 | 亚洲天天精品| 九九热九九| 中文字幕一区二区三区高清| 任你草| 亚洲激情色片| 久久黄人人爽视频| 青娱乐欧美激情一区二区| www.色综合| 青青草色情网站视频| 大香蕉2017| 影音先锋日本乱伦| 久久伊人五月天| 新97国产超碰| 久久区| 久久AV无码网址| 亚洲精品丝袜| 蜜臀99久久精品久久久久久| 亚州色站 日韩电影| 久9爱经典视频| 亚洲欧美一区二区网址| 国产亚洲综合欧美一区| 欧美婷婷久久| 9丨久久九九九| 国产伦乱91| 蜜臀久久99精品| 日本精品五区| 久久久com| 欧美一品道| 精品国产91内射久久| 91无码中出人妻视频| 国产精品3| 天天懆天天日| 青娱乐 成人娱乐在线| 72av视频| 国产亚洲国产超碰| 日本高清加勒比| 国产隔壁老王影院在线| 五月久久HDAV| 人妻天堂三区| 婷婷天堂站| 99re6在线视频精品免费完整版安卓版| 黄色免费网| 日本人妻一区二区| 久久久久久九| 丁香五月激情网| 久久亚洲日韩国产欧| 成年人黄色小视频网站| 久久亚洲不卡一区二区三区| 亚洲色图91| 天天爱天天韩国日本牛牛牛牛| 嗯~啊~轻一点 视频| 黄骗免费| 啊啊啊啊啊好舒服视频| 国产成人欧美一区二区三区的国产| 青青色综合| 韩国免费播放一级毛片| 少妇免费视频| 放黄片放3级黄片没穿衣服| 9久综合网| 蜜臀久久99精品久久久久| 成人五月香网在线| 先锋女优在线观看视频| 九九九九九九九精品视频| 伊香蕉综合久久久久久久噜噜噜 | 久污| 国产情侣自拍在线播放| 亚洲AV色图一区| 亚洲欧洲综合视频在线| 天天综合91入口| 99色在线| 啊啊啊草死我| 97干色天堂| 久久久久久亚洲中文| 精品中文日韩字幕视频| 黄色大香焦1级‘′‘| 色综合 加勒比| 9色在线| 青青草国产欧美非洲黑人| 欧美三级一级| 伊人一区二区在线播放| 久久6热精品99视频| 国产粉嫩出水在线播放| 亚洲成成熟女人综合一区二区| 91久久久久免| 国产精品国产亚洲区艳妇糸列| 九九热这里只有在线精品视 伊人草 成人菠萝蜜视频在线观看 | 中文字幕视频在线观看| 日韩无码嘿咻黑热久| 日本人妻中文字幕 | 性做久久久久久久| 超碰97久| 久久蜜桃综合网| 中文一区在线视频| 少妇激情一区二区三区视频| 欧美有码亚洲中文字幕一区二区三区四区| 性色av大全| 久久久九九| 五月黑AⅤ| 蜜乳AV一区| 伊人超碰97| 伊人久久亚洲中文字幕不卡| 国产成人在线观看综合| 操逼A∨| 色踪合AV| 毛片视频白嫩| 久久久久亚洲Aⅴ无码| 久久综合97| 经典丝袜一区| 亚洲 中文 女同| 无色无码| 国产成人91一区二区三区| 青青草久久在线| 少妇99成人麻豆| 日本欧美亚洲高清在线看| 国产精品com| 男人天堂久久精品不卡| 欧美少妇大量自拍视频在线观看| 日韩卡一卡二卡三在线| 亚洲丝袜诱惑| 少妇久久久免费| 欧美久久毛片基地| 五月天激情四射| 九月丁香婷婷色| 欧亚日韩一区在线| 国产丝袜高跟美女av免费观看| 欧美少妇大量自拍视频在线观看| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 凹凸久久人人| 2024年最新色情网站在线观看| 97超碰精品成| 91麻豆天美国产| 日日夜夜干| 一起草精品人妻| 99国产精品视频尤物| 女人天堂av在线播放| 青草精品视频一日本久久久久网站| 久草在| 91久久午夜无码鲁丝片久久人妻| 性爱综合网| 国产亚洲禁久一区二区 | 人人爽夜夜操| 另类图片五月| 中文字幕成人| 黄片不用下载在线观看| 亚洲第一精品在线视频| 日韩强奸av| 精品国产Av无码久久久伦古装| 少妇贴图| 在线啊啊啊| 天天操狠狠日夜夜干超大胆开放com大香蕉视频在线观看 | 澳门色噜噜色噜噜色噜噜色噜噜色噜噜| 神马福利久草| 亚洲人人操| 欧美日韩99| 91干熟女| 国产一区在线免费播放| 人妻 中文 日韩| 青娱乐欧美激情一区二区| 98人妻精品一区二区色欲| 久久产精品一区二区三区电影| 亚洲97超碰| 久久这里只有精品9| 校园春色五月天| 好爽视频在线观看视频 | 人人喜人人妻| 久久国产精品91| 久久精彩视频9| 熟妇亚洲一区二区三区| 久久9亚洲| 九九久久国产精品| 97视频7| 新精精品久久精品| 亚洲综合贴图91 | 国产强奸乱伦第1页| 最新国产精品| 欧美日韩在线视频网站| 国产精品不卡一区二区三区av| 亚洲一区日韩精品中文字幕| 欧美v亚洲v综合v国产v妖精| 亚洲无码国产探花在线观看| www.亚洲成人一区| 人人操人人插人www| 在线观看黄色电话| 婷婷中文字幕| 九九九综合精品| 精品人妻一区二区乱码一区二区 |