亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

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

__align(4)在嵌入式C開(kāi)發(fā)中的作用:內(nèi)存對(duì)齊、結(jié)構(gòu)體對(duì)齊與實(shí)戰(zhàn)避坑

__align(4)在嵌入式C開(kāi)發(fā)中的作用:內(nèi)存對(duì)齊、結(jié)構(gòu)體對(duì)齊與實(shí)戰(zhàn)避坑 說(shuō)一個(gè)很多搞嵌入式和底層開(kāi)發(fā)的朋友都遇到過(guò)的場(chǎng)景程序跑著跑著突然在訪問(wèn)某個(gè)結(jié)構(gòu)體成員時(shí)觸發(fā)硬件異常查看寄存器發(fā)現(xiàn)是總線錯(cuò)誤。查了一圈變量名沒(méi)錯(cuò)、邏輯沒(méi)錯(cuò)、時(shí)序也沒(méi)錯(cuò)最后把地址打出來(lái)一看是個(gè)奇數(shù)地址。這時(shí)候老手往往會(huì)問(wèn)一句你的變量有沒(méi)有聲明 __align(4)本期就來(lái)徹底講清楚這個(gè)編譯器擴(kuò)展指令到底在干什么為什么它能讓程序從偶爾崩潰變成穩(wěn)定運(yùn)行。簡(jiǎn)單理解__align(4) 的作用就是讓編譯器在分配變量或數(shù)據(jù)結(jié)構(gòu)時(shí)保證它的起始地址是 4 的倍數(shù)。這個(gè)指令一般出現(xiàn)在嵌入式開(kāi)發(fā)環(huán)境比如 ARM 系列處理器對(duì)應(yīng)的編譯工具鏈中是 C 語(yǔ)言標(biāo)準(zhǔn)之外的“擴(kuò)展語(yǔ)法”不同廠商的寫法略有差異比如 GCC 環(huán)境下寫成__attribute__((aligned(4)))而 Keil/ARMCC 環(huán)境下則常用__align(4)。這篇文章主要圍繞__align(4)的用法、背后的硬件原理、實(shí)際踩坑經(jīng)歷這三塊來(lái)寫。1. 為什么一個(gè)變量地址會(huì)牽動(dòng)整條程序運(yùn)行的穩(wěn)定性1.1 從一次奇怪崩潰說(shuō)起之前做某個(gè)通信模塊的數(shù)據(jù)采集程序時(shí)A同學(xué)在調(diào)試中發(fā)現(xiàn)一個(gè)非常詭異的現(xiàn)象程序剛上電運(yùn)行沒(méi)問(wèn)題但只要數(shù)據(jù)量一大偶爾就會(huì)跳進(jìn) HardFault 異常中斷。當(dāng)時(shí)第一反應(yīng)是內(nèi)存越界或者堆棧溢出但查了緩沖區(qū)下標(biāo)、鏈表節(jié)點(diǎn)連接、DMA 描述符都沒(méi)發(fā)現(xiàn)明顯問(wèn)題。最后實(shí)在沒(méi)轍把崩潰現(xiàn)場(chǎng)的 PC 指針和目標(biāo)地址打出來(lái)才發(fā)現(xiàn)訪問(wèn)的地址是0x20000005這種“5對(duì)齊”的地址而訪問(wèn)的是一個(gè) 4 字節(jié)的uint32_t變量。這就是典型的“不對(duì)齊訪問(wèn)”。在這種場(chǎng)景下硬件本身對(duì)地址有對(duì)齊要求編譯器也默認(rèn)做對(duì)齊分配但如果你通過(guò)強(qiáng)制類型轉(zhuǎn)換、指針偏移或者手工拼接的方式制造了一個(gè)不對(duì)齊的地址而且代碼里訪問(wèn)的還是多字節(jié)數(shù)據(jù)那么輕則效率暴跌重則直接觸發(fā)異常。1.2 CPU 讀寫內(nèi)存的對(duì)齊約束為什么地址必須對(duì)齊這得從 CPU 和內(nèi)存之間的數(shù)據(jù)通道說(shuō)起。以常見(jiàn)的 32 位 ARM 處理器為例它從內(nèi)存讀取數(shù)據(jù)時(shí)一次讀 4 個(gè)字節(jié)是效率最高的方式。硬件設(shè)計(jì)上地址總線往往會(huì)把低 2 位用于內(nèi)部字節(jié)選擇而不是參與地址尋址邏輯這意味著 CPU 天然適合訪問(wèn) 4 字節(jié)對(duì)齊的 32 位數(shù)據(jù)。打個(gè)比方內(nèi)存就像一排標(biāo)好號(hào)的儲(chǔ)物柜CPU 是一個(gè)每次只能整排整排開(kāi)門取物的管理員。如果柜子按 4 個(gè)一組捆成一捆那么管理員每次打開(kāi)第 0 捆里的 4 個(gè)柜子、或者第 1 捆里的 4 個(gè)柜子都很順。但如果你告訴他去把第 2 捆的第 3 個(gè)柜子和第 3 捆的第 0-2 個(gè)柜子一起打開(kāi)湊成 4 個(gè)字節(jié)給我。管理員就得多做一套“拆門”操作先打開(kāi)第 2 捆取 1 個(gè)字節(jié)再打開(kāi)第 3 捆取 3 個(gè)字節(jié)最后拼起來(lái)才能給你。這就是不對(duì)齊訪問(wèn)的本質(zhì)原本一次完成的操作變成了多次訪問(wèn)內(nèi)存、再做數(shù)據(jù)拼接。有些 CPU 能自動(dòng)完成這種行為代價(jià)是性能下降有些 CPU比如部分 ARM 內(nèi)核的硬件配置不支持這種“跨邊界拼接”會(huì)直接產(chǎn)生異常。1.3 不對(duì)齊地址的直接后果具體后果分為幾種等級(jí)第一種硬件不支持不對(duì)齊訪問(wèn)直接觸發(fā)異常。很多 Cortex-M 系列內(nèi)核默認(rèn)對(duì)某些指令不支持非對(duì)齊訪問(wèn)或者即使硬件允許配置上也關(guān)閉了相關(guān)支持表現(xiàn)就是程序跳進(jìn)異常中斷。第二種硬件支持但性能猛降。訪問(wèn)一個(gè) 4 字節(jié)變量本來(lái)一次總線事務(wù)就能完成不對(duì)齊時(shí)可能要兩次甚至三次事務(wù)還要額外做移位和拼接實(shí)時(shí)性敏感的場(chǎng)景下這種損耗不可接受。第三種更隱蔽的問(wèn)題原子性和并發(fā)安全被破壞。如果變量跨地址邊界那么在多線程或中斷環(huán)境中對(duì)這個(gè)變量的訪問(wèn)可能被拆成多個(gè)原子操作另一個(gè)執(zhí)行流在中間穿插進(jìn)來(lái)讀到的是“半個(gè)新值半個(gè)舊值”的混合狀態(tài)這種 bug 最難復(fù)現(xiàn)也最難查。所以__align(4)這個(gè)指令看起來(lái)只是加了一個(gè)“地址按 4 對(duì)齊”的約束實(shí)際上是在把底層的爆雷點(diǎn)提前拆掉。2. __align(4) 的實(shí)際語(yǔ)法與作用范圍2.1 __align 關(guān)鍵字是編譯器擴(kuò)展不是標(biāo)準(zhǔn) C 語(yǔ)法很多 C 語(yǔ)言教材不會(huì)講__align(4)因?yàn)闃?biāo)準(zhǔn) C 里面并沒(méi)有這個(gè)關(guān)鍵字。它是編譯器的“私貨”。在 ARMCCKeil MDK 自帶編譯器中常見(jiàn)寫法就是__align(4)在 GCC 中則寫作__attribute__((aligned(4)))。兩種寫法作用類似但語(yǔ)法位置和細(xì)節(jié)上有差異。關(guān)鍵點(diǎn)是既然是非標(biāo)準(zhǔn)擴(kuò)展就意味著移植性要自己來(lái)維護(hù)。一個(gè)項(xiàng)目如果在多個(gè)編譯器之間切換建議在公共頭文件里統(tǒng)一做宏封裝方便后期適配。比如#if defined(__CC_ARM) || defined(__ARMCC_VERSION) #define ALIGN_4 __align(4) #elif defined(__GNUC__) #define ALIGN_4 __attribute__((aligned(4))) #else #define ALIGN_4 #endif這樣業(yè)務(wù)代碼里就只需要寫ALIGN_4換編譯器時(shí)不用到處去改。2.2 __align(4) 能修飾什么變量、結(jié)構(gòu)體、數(shù)組、指針__align(4)可以放在變量聲明的前面或者后面根據(jù)編譯器略有差異。它能修飾的對(duì)象包括普通變量、結(jié)構(gòu)體、數(shù)組、指針變量等。舉幾個(gè)實(shí)際的例子// 普通變量確保這個(gè)變量起始地址是 4 的倍數(shù) __align(4) uint32_t shared_counter; // 結(jié)構(gòu)體確保結(jié)構(gòu)體整體起始地址按 4 對(duì)齊 struct __align(4) mailbox_msg { uint8_t type; uint32_t payload; uint16_t crc; }; // 數(shù)組確保數(shù)組首元素地址對(duì)齊 __align(4) uint8_t rx_buffer[1024]; // 指針變量修飾的是指針本身而不是它指向的數(shù)據(jù) __align(4) uint8_t *ptr;這里特別提醒一點(diǎn)修飾指針變量時(shí)對(duì)齊的是指針變量自身的地址與它指向的數(shù)據(jù)無(wú)關(guān)。有些朋友以為_(kāi)_align(4) uint8_t *ptr會(huì)讓ptr指向的地址也變成 4 對(duì)齊這是誤解。2.3 容易混淆的概念對(duì)齊 vs 補(bǔ)齊__align(4)強(qiáng)調(diào)的是“起始地址”對(duì)齊而結(jié)構(gòu)體尾部的“補(bǔ)齊”是另一個(gè)概念。編譯器為了讓結(jié)構(gòu)體數(shù)組的每一項(xiàng)都滿足對(duì)齊要求會(huì)自動(dòng)在末尾填充字節(jié)讓結(jié)構(gòu)體的大小成為對(duì)齊值的整數(shù)倍。比如struct __align(4) s_example { uint8_t a; uint32_t b; };這個(gè)結(jié)構(gòu)體只有 5 個(gè)字節(jié)的有效成員但因?yàn)閎要求 4 字節(jié)對(duì)齊a后面會(huì)填充 3 個(gè)字節(jié)整個(gè)結(jié)構(gòu)體大小變成 8。再考慮數(shù)組struct s_example arr[2]第一個(gè)元素從對(duì)齊地址開(kāi)始第二個(gè)元素從 8 開(kāi)始仍然滿足 4 對(duì)齊。很多人在手動(dòng)計(jì)算結(jié)構(gòu)體偏移時(shí)只看成員定義忘了編譯器會(huì)自動(dòng)插入填充字節(jié)結(jié)果做序列化、協(xié)議打包時(shí)算錯(cuò)偏移量。這是另一個(gè)高頻坑后面詳細(xì)說(shuō)。3. 結(jié)構(gòu)體里的對(duì)齊這里才是真正的重災(zāi)區(qū)3.1 結(jié)構(gòu)體成員順序決定內(nèi)存布局如果說(shuō)單個(gè)變量的不對(duì)齊是“偶發(fā)爆炸”結(jié)構(gòu)體的不對(duì)齊就是“日常連環(huán)坑”。因?yàn)榻Y(jié)構(gòu)體里通常有多個(gè)成員、不同類型編譯器為了使每個(gè)成員都能按其自身對(duì)齊要求放置會(huì)在成員之間自動(dòng)插入填充字節(jié)。看下面這個(gè)結(jié)構(gòu)體struct mixed_data { uint8_t id; uint32_t value; uint16_t flag; };在默認(rèn)對(duì)齊規(guī)則下value不能緊跟在id后面因?yàn)樗枰?4 字節(jié)對(duì)齊所以id之后會(huì)填充 3 個(gè)字節(jié)。flag是 2 字節(jié)類型可以對(duì)齊到偶數(shù)地址后面再按結(jié)構(gòu)體整體對(duì)齊要求在末尾填充 2 個(gè)字節(jié)。最終這個(gè)結(jié)構(gòu)體的大小不是 7而是 12。實(shí)際項(xiàng)目里經(jīng)常用printf(%d %d %d, sizeof(struct mixed_data), offsetof(struct mixed_data, value), offsetof(struct mixed_data, flag))去驗(yàn)證。輸出結(jié)果一般是 12、4、8。這是編譯器的合法行為因?yàn)樗谐蓡T都滿足了對(duì)齊要求且整體大小是最大對(duì)齊值的倍數(shù)。3.2 用 __align(4) 調(diào)整結(jié)構(gòu)體時(shí)要注意什么如果你在結(jié)構(gòu)體前面加__align(4)本質(zhì)上只是把這個(gè)結(jié)構(gòu)體的“起始地址”要求提高到 4 對(duì)齊。它不會(huì)改變成員內(nèi)部的默認(rèn)對(duì)齊規(guī)則也不會(huì)讓結(jié)構(gòu)體大小變小更不會(huì)把成員重新打包排緊。那它什么時(shí)候有用最典型的是 DMA直接內(nèi)存訪問(wèn)相關(guān)場(chǎng)景。DMA 外設(shè)通常要求緩沖區(qū)地址按 4 字節(jié)對(duì)齊否則某些配置下會(huì)出現(xiàn)傳輸數(shù)據(jù)錯(cuò)位問(wèn)題。這時(shí)候給收發(fā)緩沖區(qū)加__align(4)就能保證首地址滿足要求。結(jié)構(gòu)體內(nèi)部成員的對(duì)齊則要另外用#pragma pack或__packed來(lái)調(diào)整。注意這會(huì)把成員的緊密度提升使結(jié)構(gòu)體大小變小但也可能造成內(nèi)部成員不對(duì)齊訪問(wèn)需要慎重權(quán)衡。一個(gè)典型錯(cuò)誤是以為_(kāi)_align(4)能讓結(jié)構(gòu)體內(nèi)所有成員都嚴(yán)格按 4 字節(jié)對(duì)齊排列于是拿它去砸協(xié)議幀結(jié)構(gòu)、去算成員偏移。實(shí)際上這個(gè)指令管不到成員布局。3.3 結(jié)構(gòu)體對(duì)齊與 sizeof 的關(guān)系在通信協(xié)議中結(jié)構(gòu)體大小往往直接決定幀長(zhǎng)度計(jì)算。如果結(jié)構(gòu)體里既有uint8_t又有uint32_t而協(xié)議設(shè)計(jì)時(shí)要求成員之間不能有空洞填充那么比較穩(wěn)妥的做法是顯式定義好每個(gè)字段的字節(jié)數(shù)用uint8_t數(shù)組拼接或者使用#pragma pack(push, 1)做緊湊排列。不過(guò)緊湊排列也有代價(jià)#pragma pack(1)后結(jié)構(gòu)體里訪問(wèn)uint32_t成員時(shí)地址很可能不再按 4 對(duì)齊此時(shí)對(duì)這個(gè)成員的讀寫可能變成非對(duì)齊訪問(wèn)進(jìn)而導(dǎo)致異?;蛐阅芟陆怠K詤f(xié)議對(duì)“緊湊”的需求和硬件對(duì)“對(duì)齊”的需求往往是矛盾的。解決辦法有兩種路線路線一協(xié)議在內(nèi)存里緊湊存放需要訪問(wèn)多字節(jié)成員時(shí)使用memcpy或?qū)iT的字節(jié)取函數(shù)逐字節(jié)拼裝絕不用指針強(qiáng)轉(zhuǎn)直接訪問(wèn)。路線二結(jié)構(gòu)體天然設(shè)計(jì)成 4 的倍數(shù)大小并且成員盡量按 4/2/1 字節(jié)從大到小排列中間少留空洞這樣既保持對(duì)齊也兼顧緊湊。很多有經(jīng)驗(yàn)的工程團(tuán)隊(duì)會(huì)優(yōu)先選擇路線二因?yàn)樾阅芎?、代碼簡(jiǎn)單而且不容易產(chǎn)生隱蔽 bug。4. 實(shí)戰(zhàn)從錯(cuò)誤使用到正確使用4.1 一個(gè)真實(shí)復(fù)現(xiàn)的錯(cuò)誤寫法假設(shè)你要用一個(gè)緩沖區(qū)接收串口數(shù)據(jù)然后把它當(dāng)作結(jié)構(gòu)體來(lái)解析。代碼如下struct frame { uint8_t head; uint32_t len; uint8_t data[64]; }; uint8_t raw_buffer[128]; struct frame *p_frame; p_frame (struct frame *)raw_buffer;這段代碼是典型的隱患寫法。raw_buffer的首地址對(duì)齊情況取決于編譯器如何分配局部變量或全局變量。如果沒(méi)有顯式加對(duì)齊它可能是任意對(duì)齊未必是 4 的倍數(shù)。一旦raw_buffer的起始地址不是 4 的倍數(shù)p_frame-len的訪問(wèn)就可能變成非對(duì)齊訪問(wèn)觸發(fā)硬件異?;驍?shù)據(jù)錯(cuò)位。復(fù)現(xiàn)場(chǎng)景局部緩沖區(qū)在棧上分配棧頂?shù)刂吠ǔJ?4 對(duì)齊的但編譯器為了讓多個(gè)局部變量共享?xiàng)?臻g可能把raw_buffer分配在偏移 1 或 2 的位置這就可能破壞對(duì)齊。4.2 正確的寫法與驗(yàn)證方法改正方式很簡(jiǎn)單定義緩沖區(qū)時(shí)加上對(duì)齊約束。__align(4) uint8_t raw_buffer[128]; struct frame *p_frame (struct frame *)raw_buffer;這樣至少保證raw_buffer首地址滿足 4 對(duì)齊再?gòu)?qiáng)轉(zhuǎn)為結(jié)構(gòu)體指針后head地址對(duì)齊、len地址對(duì)齊整個(gè)結(jié)構(gòu)體內(nèi)部的訪問(wèn)都符合硬件約束。驗(yàn)證對(duì)齊是否生效可以直接打印地址printf(raw_buffer addr: 0x%08X\n, (unsigned int)raw_buffer); printf(len offset: %d, addr: 0x%08X\n, offsetof(struct frame, len), (unsigned int)p_frame-len);打印結(jié)果應(yīng)該能看到地址的低兩位為 0len的實(shí)際地址是 4 的倍數(shù)。4.3 什么時(shí)候該用 __align什么時(shí)候不該亂用我的建議是訪問(wèn)地址可能來(lái)自網(wǎng)絡(luò)緩沖區(qū)、串口接收緩沖區(qū)、文件映射區(qū)域、或者裸指針強(qiáng)轉(zhuǎn)時(shí)一定要顯式對(duì)齊數(shù)據(jù)結(jié)構(gòu)只在內(nèi)部使用、不存在跨模塊強(qiáng)轉(zhuǎn)時(shí)依賴編譯器默認(rèn)行為即可沒(méi)必要到處加。頻繁把uint8_t*強(qiáng)轉(zhuǎn)為uint32_t*或自定義結(jié)構(gòu)體指針時(shí)尤其要警惕。這種情況下編譯器不會(huì)幫你檢查目標(biāo)地址是否對(duì)齊所有對(duì)錯(cuò)都要自己負(fù)責(zé)。與其事后查崩潰不如在代碼里做好防御性檢查if ((uint32_t)ptr % 4 ! 0) { // 打印錯(cuò)誤日志跳過(guò)或復(fù)制到對(duì)齊緩沖區(qū)再解析 }這段代碼不會(huì)影響正常路徑性能但能大幅降低排查難度。5. 與 #pragma pack、attribute((packed)) 的區(qū)別和混用5.1 三個(gè)指令各自解決什么問(wèn)題__align(4)只負(fù)責(zé)“地址對(duì)齊”讓編譯器把對(duì)象安放到對(duì)齊地址上。#pragma pack(push, 1)只負(fù)責(zé)“緊湊布局”強(qiáng)制成員之間不按默認(rèn)規(guī)則填充讓結(jié)構(gòu)體以 1 字節(jié)精度排列。__attribute__((packed))GCC 下的緊湊布局寫法功能與#pragma pack(1)類似。三者并非對(duì)立關(guān)系而是作用于不同的層次__align(4)管“放哪”pack管“怎么排”。不過(guò)混用時(shí)必須想清楚優(yōu)先級(jí)否則很容易出現(xiàn)“對(duì)齊之后又打包打包之后又對(duì)齊”的矛盾。在實(shí)際測(cè)試中我發(fā)現(xiàn)當(dāng)結(jié)構(gòu)體既用__attribute__((packed))又用__attribute__((aligned(4)))時(shí)GCC 的處理結(jié)果和編譯器版本、目標(biāo)架構(gòu)都有關(guān)系。某些情況下兩者結(jié)合會(huì)讓結(jié)構(gòu)體大小既滿足緊湊又滿足總長(zhǎng)是 4 的倍數(shù)某些情況下則可能顧此失彼。5.2 一個(gè)既有緊湊又有對(duì)齊需求的例子比如一個(gè)協(xié)議幀struct __attribute__((packed)) protocol_frame { uint8_t magic; uint16_t length; uint32_t crc; uint8_t payload[16]; };如果只是單片機(jī)內(nèi)部使用并且你希望crc的訪問(wèn)是高效的單純使用packed會(huì)讓crc出現(xiàn)在 3 字節(jié)偏移處訪問(wèn)開(kāi)銷變大。更合理的做法是struct __attribute__((aligned(4))) protocol_frame { uint8_t magic; uint16_t length; uint32_t crc; uint8_t payload[16]; };magic放在偏移 0、length放在偏移 22 字節(jié)對(duì)齊、crc放在偏移 44 字節(jié)對(duì)齊這樣既沒(méi)有多余填充也保證了所有多字節(jié)成員的對(duì)齊。這種布局在協(xié)議設(shè)計(jì)和硬件訪問(wèn)之間取得了平衡。5.3 混用時(shí)最容易踩的坑最容易踩的坑是“先 packed 再?gòu)?qiáng)轉(zhuǎn)多字節(jié)指針”??催@段#pragma pack(1) typedef struct { uint8_t a; uint32_t b; } unpacked_t; #pragma pack(pop) uint8_t payload[] {1, 2, 3, 4, 5}; unpacked_t *p (unpacked_t *)payload; uint32_t value p-b;這里p-b的地址是payload 1也就是奇數(shù)地址。uint32_t的讀取發(fā)生非對(duì)齊訪問(wèn)輕則效率降低重則進(jìn)異常。這類代碼經(jīng)常隱藏很久直到某個(gè)平臺(tái)或某個(gè)優(yōu)化級(jí)別才暴露。正確做法要么是復(fù)制到__align(4)的臨時(shí)結(jié)構(gòu)體里再訪問(wèn)要么直接逐個(gè)字節(jié)讀取并自己拼裝uint32_tuint32_t value (uint32_t)payload[1] | ((uint32_t)payload[2] 8) | ((uint32_t)payload[3] 16) | ((uint32_t)payload[4] 24);這一步不虧性能多少但絕對(duì)安全。6. 非對(duì)齊訪問(wèn)在 Cortex-M 平臺(tái)上的實(shí)際表現(xiàn)6.1 硬件細(xì)節(jié)與編譯器默認(rèn)行為很多人有一個(gè)誤區(qū)認(rèn)為 ARM Cortex-M 系列處理器全部支持非對(duì)齊訪問(wèn)。實(shí)際上Cortex-M0/M0 內(nèi)核不支持LDR/STR對(duì)非對(duì)齊地址的訪問(wèn)一旦發(fā)生結(jié)果可能是總線錯(cuò)誤或默默丟棄數(shù)據(jù)。Cortex-M3/M4/M7 雖然支持部分非對(duì)齊訪問(wèn)指令但前提是CCR寄存器的UNALIGN_TRP位沒(méi)有置位而且并非所有指令都支持非對(duì)齊。我在 Cortex-M4 平臺(tái)上測(cè)試過(guò)一個(gè)有意思的現(xiàn)象用普通uint32_t指針去訪問(wèn)一個(gè)奇數(shù)地址編譯器開(kāi)了-O0時(shí)沒(méi)問(wèn)題開(kāi)了-O2后就偶爾出錯(cuò)。原因是在不同優(yōu)化級(jí)別下編譯器生成的具體指令不同某些指令組合遇到非對(duì)齊地址時(shí)會(huì)異常。這種“優(yōu)化等級(jí)影響結(jié)果”的 bug 是最難查的類型。6.2 如何確認(rèn)編譯器對(duì) __align(4) 的處理結(jié)果看編譯產(chǎn)物最直接。假設(shè)代碼里聲明__align(4) uint8_t buffer[128];在 ARMCC 中編譯后查看 map 文件可以看到這個(gè)變量被分配在類似0x20000010這樣的地址上。而如果去掉__align(4)它可能被分配到0x2000002D這種非對(duì)齊地址。差別一目了然。GCC 環(huán)境下的檢查方式略有不同。__attribute__((aligned(4)))修飾數(shù)組后可以使用buffer打印地址驗(yàn)證也可以直接查看.data段和.bss段的符號(hào)表輸出。另外有一點(diǎn)要注意全局變量在鏈接腳本中的段對(duì)齊設(shè)置也會(huì)影響最終地址。即便你在 C 代碼里寫了__align(4)如果鏈接腳本把.bss段的輸出對(duì)齊設(shè)置成了 1那么實(shí)際分配結(jié)果可能并不能保證每個(gè)變量的聲明對(duì)齊都得到滿足。這種場(chǎng)景下最穩(wěn)妥的辦法是檢查鏈接腳本里相關(guān)段的對(duì)齊值。6.3 中斷與 DMA 場(chǎng)景下的額外風(fēng)險(xiǎn)中斷處理和 DMA 緩沖區(qū)的對(duì)齊要求更高。DMA 控制器通常有獨(dú)立的對(duì)齊要求比如某些外設(shè)要求緩沖區(qū)地址按 4 字節(jié)對(duì)齊且長(zhǎng)度必須是傳輸單元大小的整數(shù)倍。如果緩沖區(qū)指針來(lái)自一個(gè)非對(duì)齊分配的內(nèi)存池DMA 傳輸會(huì)出現(xiàn)“數(shù)據(jù)錯(cuò)位”的現(xiàn)象也就是接收數(shù)據(jù)前后錯(cuò)位但不報(bào)錯(cuò)。中斷共享變量也有類似問(wèn)題。比如一個(gè) 32 位變量主循環(huán)里做累加、中斷里做讀取。如果變量不對(duì)齊編譯器可能會(huì)把讀取拆成兩次 16 位操作中斷在兩次操作之間觸發(fā)主程序就會(huì)讀到一個(gè)“上半新舊混合”的垃圾值。給變量加上__align(4)并使用正確的數(shù)據(jù)類型后編譯器通常能生成單條讀/寫指令不需要考慮原子性問(wèn)題某些平臺(tái)上還需配合 volatile 和編譯器屏障。7. 最后的幾點(diǎn)實(shí)戰(zhàn)心得實(shí)際項(xiàng)目里用過(guò)__align(4)之后幾個(gè)比較深的體會(huì)第一不要只在緩沖區(qū)定義時(shí)加__align(4)還要留意結(jié)構(gòu)體指針的來(lái)歷。手動(dòng)強(qiáng)轉(zhuǎn)是風(fēng)險(xiǎn)重災(zāi)區(qū)最好在入口處做一個(gè)統(tǒng)一的對(duì)齊檢查。哪怕只是打印一條警告日志也能在后續(xù)調(diào)試時(shí)省下大量時(shí)間。第二__align(4)解決的是“起始地址”問(wèn)題不是“成員緊湊”問(wèn)題更不是“大小計(jì)算”問(wèn)題。動(dòng)手前要想清楚當(dāng)前目標(biāo)是哪個(gè)是讓緩沖區(qū)首地址對(duì)齊還是讓小結(jié)構(gòu)體的總大小變成 4 的倍數(shù)還是讓協(xié)議幀內(nèi)部零填充。目標(biāo)不同用的工具完全不同。第三如果一個(gè)項(xiàng)目有多線程或中斷共享數(shù)據(jù)依賴__align(4)能提升可靠性但不要因此忽略原子操作保護(hù)。對(duì)齊只是讓訪問(wèn)盡量是單次總線事務(wù)在某些平臺(tái)和某些指令下仍存在中斷打斷指令流的情況。真正要求嚴(yán)格的共享數(shù)據(jù)還是需要臨界區(qū)或原子指令。第四編譯器文檔和 map 文件比任何“經(jīng)驗(yàn)口訣”都靠譜。每次遇到對(duì)齊相關(guān)報(bào)錯(cuò)先編譯生成 map 文件然后查關(guān)鍵變量實(shí)際地址確認(rèn)它是幾字節(jié)對(duì)齊的。這個(gè)動(dòng)作做熟了比在網(wǎng)上搜技術(shù)帖子來(lái)得快得多。最后分享一個(gè)小技巧在驗(yàn)證結(jié)構(gòu)體布局時(shí)可以在代碼里寫static_assert或者運(yùn)行時(shí)斷言強(qiáng)制檢查關(guān)鍵偏移量。比如要求offsetof(struct frame, len) 4、sizeof(struct frame) 84等。一旦有同事無(wú)意間改了成員順序編譯階段就能報(bào)警不用等到聯(lián)調(diào)現(xiàn)場(chǎng)再翻車。這種防御式寫法和__align(4)搭配起來(lái)才能真正把對(duì)齊問(wèn)題攔在編碼階段。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
国产久久久久久| 五月色综合| 色久综合| 国产一线二线三线av| 欧美日产国产在线成人第一区| 日韩欧美经典在线观看| 亚洲情色综合网| 亚洲日韩在线a不卡99精品| 2024人人操人人摸| 四虎免费视频| 操逼操逼视频操逼| 级品肉射| 一起草欧美| 日韩精品9区| 国产粉嫩蜜臀av一区二区三区 | 四虎视频在线观看| 久久丁香久草综合网| 人妻天堂综合网| 日韩精品资源| 凹凸视频特色日本特黄| 人人干人人操人人..com| 午夜久久一区二区无码中出| 日本操逼视频免费| 久久伊人青青草| 亚洲激情在线观看一区| 亚洲男人的天堂在线看| 26uuu国产日韩综合在线观看| 韩国女主播青草在线| 天天看天天干| 9999亚洲电影| 最近的最新的中文字幕视频| 大香蕉99re| 免费看日本操逼视频| 91成人亚洲色图| 97在线精品| 九热中文字幕| 夜夜国产一区| 国产区性爱在线视频秋霞豆| 97在线免费公开视频| 色色色色网站| 黄色操人| 一区二区三区一亚洲中文字幕、综合区灬 | 亚洲美欧999| 蜜乳AV.COM| 91少妇香蕉久久精品| 在线观看岛国有码| 中文字幕熟女人妻丝袜丝| 国产亚洲国产超碰| 婷婷伊人| 玖玖资源视频一区二区三区| 殴美牲| 伊人丁香五月婷婷| 亚洲欧美伦综合| 欧美超碰9798| 亚洲中文sv| 亚洲色图欧美色图在线播放| 亚洲啪啪性视频| 蜜臀99久久精品久久久久| 中文字幕在线观看第二页| 国产精品福利资源在线尤物| 国桃视频产巨乳精品一区二区在线| 在线观看综合精品亚洲| 国产精品人妻免费精品| 99热导航| 污啪啪啪视频| 色婷五月| 国产成人精品必看| 极品色综合| 欧美激情久| 96AV精品| 日日干日日| 欧美精品日韩久久久九| 极品白嫩美少妇在地板上位骑射淫水泛滥| 嗯嗯啊啊啊啊轻点视频| 色噜噜国产在线| 97人人射| 色色福利| 日本激情免费大片| 国产高清精品一区二区三区毛片 | av资源在线观看少妇| 欧美色欧美| 欧美亚洲激情一二三| 天天影视网综合少妇| 岛国黄| 亚洲色图图片| 久草这里只有精品| 蜜桃臀AV在线| 亚码人妻| 91/欧美| 中文字幕精品丝袜| 天堂蜜桃无码视频一区二区| 99久久9| 另类 日韩 熟女| 欧美日韩性爱电影在线| 久久精品一区二区三区四区五区| 久久国产乱子伦精品免费女,网站| 99RE在线视频精品,这里只有精品| 五月花婷婷| 8050无码八戒| 久热香蕉精品在线视频| 熟女精品va中文字幕| 五月天伊人| 国产麻豆福利av在线播放| 人妻偷拍一区二区三区| 97av在线视频| 7777欧美成是人在线观看| 色哟哟 日韩精品| 97视频在线看| 国产精品黑人一区二区三区| 中国人高清www色视频免费| 好一吊区二区| 欧洲视频在线| 狠狠干91| 黑人免费福利视频| 国产树林里野战在线看| 中国大陆国产高清AⅤ毛片| 亚洲国产成人精品女人久久久| 久久这里只精品| 人妻激情视频| 精品999一区二区| 欧美偷| 91欧美少妇| 亚洲日精品| 有码专区最新中文字幕有码| 天堂性色| 国产91亚洲精品一区二区三区| 97爱爱| 欧美成熟性爱精品| 高清无码网址| 2017大香蕉国产精品久久| 91丝袜激情在线| 性性欧美| 亚洲美腿丝袜香蕉影视欧美成人| 尤物网站91| 色操逼网| 欧美一区二区亚洲天堂| 美女9118禁| 色牛牛AV| 亚洲国产精品久久久久婷婷青年| 无码一区二区三区四区五区六区七区八区九区十区视频 | 色哟哟的毛片| 中文字幕加勒比海高清无码免费视频| 免费看污网址| 亚洲精品熟妇1区2区3区。| 女色综合| 强奸乱伦大香蕉| 蜜乳性色无码专日粉嫩骚逼AV| 簧片免费看视频| 另类小说五月天| 天天肏美女| 屌妞视频久久久久久久| 天天干人妻视频| 97视频在线播放| 亚洲天堂一区二区久久| 欧美综合站| 亚洲Av噜噜一区二区三区妖精| 91少妇通奸网站| 91少妇人妻| 可以在线观看的黄色网址| www.99在线| 成 人 影视 一区 二区 三区 四区| 日本一区二区亚洲综合| www.91久久| 熟妇人妻一区二区三区| 少妇久久久免费| 日韩欧美亚洲一区二区三区影院| www.av在线观看| 亚洲色偷偷色噜噜狠狠99网| 麻豆色99999| 久久国产成人精品国产成人亚洲 | 亚洲五码一区二区三区| 天天综合网91入口| 欧美综合1性辶| 国产日韩欧美操逼视频| 香蕉在线一区二区三区| 欧美一级二级三级| 欧美一级黄色18片免费看| 天天摸夜夜摸| 2020中文字幕在线观看| 丁香婷婷久久| 伊人性在线视频| 久久久久久久久久久免费精品| 99热99色| 久久国产精品视频| 91快色色色色色| 亚洲中文字幕妇伦久久| 日韩97P| 国产强奸超碰AV| 久久做97| 一个人免费视频观看在线WWW| 久久99网站| 日韩电影天堂视频一区二区| 中文字幕 av v| 欧美碰碰综合色| 91丨熟女丨丰满熟女| 精品网站99999| 中文字幕在线观看网址| 97超碰jingpin| julia国产在线| 日本护士高潮| 亚洲蜜臀精品视频久久| 在免费jIzzjIzz在线视频| 99精品伊人| 中文字幕av亚洲精品| 狠狠 91| 啊啊啊啊好疼| 日本九九久久99播| 老熟女乱伦片| 欧美猛交黑寡妇中文字幕| 国产三级在线现体验区| 97AV爱| 999综合色| 亚洲风情在线观看| 婷婷大香蕉| 青青草吊丝| 国产精品乱码久久久、久久| 一级片在线观看高清无码| 亚洲国产第一页综合视频| 国产精品97超碰| 看大黄色大片原件| 蜜臀久久在线视频| 9久精品| 熟女露脸激情自拍视频| 九九热精品| 欧美天天射| 九九久久首页| 欧美在线永久天堂| 欧美一区二区三区蜜桃| 日韩中文9| 国产一区二区三区影片| 在线中文字幕视频| 欧美亚洲国产日本在线,久久精品国产| av绯色| 欧美后入式| 亚洲激情综合| 三男一女不戴套的A片| 丝袜美腿校园春色| 成人熟女视频一区二区三区| 4tube欧美女厕所| 欧美很很操视频| 国产久9| 欧美日韩中文亚洲v在线综合| 欧美色图 人妻| 波多野结衣被操50分钟免费视频| 国产五码丝袜屁眼| 中文字幕一区二区三区高清| 国产诱惑| 98色网| 人人妻人人澡人人爽久久av| 嗯嗯嗯不要不要免费视频| 中文字幕欧美日韩三级| 岛国人妻少妇av在线观看| av天堂精品久久| 日本性爱网址| 成人性交免费视屏| 超碰中文字幕人妻草一区| 99日精品欧美国产| 91精品微拍福利| 丰满熟妇大乳做爰| 日日干夜夜操视频h| 自拍偷拍2025在线观看| 国产极品美女高潮无套在线观看| 91欧美大片| 福利伊人玖玖国产| 呦呦一区| 美女91AV| 九九九九九九免费视频| 久久久久久久久久久久黄色| 玖玖视频在线资源一区二区三区| 嫩草 人人网精品| 亚洲午夜未满十八勿入网站日本又色又爽又黄| 天操天操夜操夜月操月年年操| 亚洲国产精品成人综合| 97超碰中文字幕| 欧美精品精品一区二区| 色五月天AV| 亚洲欧综合另类无码一区| 亚洲美腿丝袜香蕉影视欧美成人| 欧美专利1区2区3区4区5区免费| 操逼无码操逼| 日本道人妻久久久在线不卡色视频| 欧美成人都市人妻| 三级AV入口| 亚洲人妻久久久| 曰韩欧美国产传媒麻豆第一区| 日本人妻中文字幕 | 亚洲猛交| 97国产色图| 亚洲人人操| 三级AV入口| 中国91AV| 国产乱人妻精品入口| 午夜一区| 日韩欧美成人性爱在线| 啪啪啪精品视频| 麻豆成人AV| 中国亚洲呦女专区| 国产在线视视频有精品| 欧美性爱视频免费一区一A| 天天操狠狠日夜夜干超碰撸com视频在线观看 | 国产乱码久久| 超碰在线人妻| 天天日天天射天天干| 99色网| 中文字幕午夜精品久久久| 日韩在线女优天天干| 在线一道啪| 三上悠亚在线毛片91| 亚洲欧洲小说图片视频| 久久久久人妻二区精品叶可怜| 91综合无码| 欧美一级专区免费大片| 好属操| 欧美色道啊| 伊人伊人LD| 日本免费不卡二区| 思思热在线视频精品| 老熟女乱子伦中文字幕一区二区| 秋霞一级鲁丝片A片| 九久精品| 999精品女人| 久草热制服丝袜在线观看| 欧美性爱无码一区二区三区| 涩涩涩综合| 福利操逼| 国产免费永久精品无码| 人人天天欧洲| 歐美一級亂黃99在綫精品| 亚洲不卡不卡中文字幕不卡 | 色色色色网站| 精精夜夜| 亚洲素人网| 日韩精品资源| 色吧5亚洲| 久久受www免费人成| 精品区国产区一区二区三区| A V少妇特黄三级| 亚洲综合在线高清| 亚洲人精品午夜不卡| 人人澡人人干| 中文字幕91页| 国产伦精品一区二区三区视频女| 粉嫩少妇自慰在线| 美女十八禁| 人妻少妇久久中文字幕一区二区 麻豆| 为用户提供免费看黄网址在线观看| 国产精品操| 五月激情在线| 999综合色| 久肏视频字幕| 亚洲欧洲av影音| 亚欧性爱ab| 久久伊人在线五区| 亚洲欧洲综合| 免费观看国产不卡av| 色婷婷亚洲婷婷| 日本精品性生活久久久| 97超碰久久| 强奸乱伦Av网| 裸模AV女优| 综合五月天| 国产操逼视频在线观看| 91熟女熟妇视频网站| 欧美亚洲高清不卡| yaouchengrenav| 91狠狠色丁香婷婷综合久久精品| 不卡中文字幕aⅴ在线| 欧亚免费视频| 青草伊人久久| 中文字幕成人理论在线| 超碰久久网| 九九视频黄色片| 色香色香欲天天天影视综合网| 丝袜亚洲91| 亚洲欧洲日本精品中文a∨| 色狠狠色| 久久九九精品一区二区| 少妇无码av专区线| 亚洲熟女一区| 福利伊人玖玖国产| 蜜臀久久99'精品久久久| 人人干黄色| 91亚洲黑人| www.91视频网| 丁香五月成人| 精品久久97| 色官网在线| 中文字幕免费看| 亚洲一区二区久久久久| 极品粉嫩少妇视频| 无遮挡一级毛片视频免费的| 欧洲中文字幕| 欧美亚洲自拍另类人妻| 精品免费一区二区三区在线亚洲人成| 狠狠超| 人妻啊啊人妻啊| 欧美日韩亚洲天堂| 亚州宗合另类| 超碰午夜| 九X超碰| 自拍偷拍草一草| 久久久久久久人妻| 天天影视综合网欧美精品| 9999九九九久久久| 欧美激情激情xxxx欧美专区| 亚洲第一无码播放立川理惠| 中文字幕91综合| 熟妇高潮二区三区| 久久久久亚洲AV无码专区少妇| 999热日韩精品| 国产成人一级av88| 青娱乐 青青青操 日逼| 91oumei| 裸体女人草逼视频播放一区,二区,三区,四区,五区| 蜜臀AV午夜精品久| 精品一区二区三区蜜桃| 欧美日本国产日韩激情视频| 国产精品伦理| 好湿好紧好爽 视频| 欧美 色 亚洲| 色综合潮| dy888午夜老子影视达达兔| 96精品在线| 午夜操一操| 男人干美女| 日本在线视频导航| 欧美一区二区三区大综合| 久久久亚洲熟妇资源| 亚洲欧洲综合av在线| 黄污污污污| 成人无码专区精品视频| 一区二区三区一亚洲中文字幕、综合区灬| www.yeyecao| 亚洲涩涩| 太久视频| 日韩在线电影| 亚洲欧洲色情高清| 天天干少妇| 超碰97人妻免费在线| 天美传媒AV国产在线| 操屄不卡视频| 人妻另类 专区 欧美 制服| 亚洲综合99999| 久99热| 国产女同在线观看视频| 91美女視頻| 婷婷九月| 免费一级精品啪啪视频| 亚洲色棕合| 亚洲天堂女优在线| 欧美日韩性爱精品| 国产午夜精品理论片一二三区区| 97精品国产精品免费观看| 亚洲综合小说另类图欧美视频激情小说色五月天| 超碰欧美| 手机看片1024你懂的国产| 青青草久草| 蜜桃视频一区二区三区| 丁香五月AV| 久热在线精品免费观看| 亚欧美综合| 青青草日本无码| 91在线丝袜| 色香91| 亚洲人成色9999精品久久 | 亚洲AV无码国产精品久久久久| 国产精品一区二区三区免费视频| 亚洲男人的天堂在线看| 久久极品一区二区| www.久久久久| 无码操逼网| 最新无码国产| 亚洲综合电影| 黄页av| 职场同事知名国产国产精品久久欧美日韩 | 国产青青综合伊人| 欧美精品 - 91爱爱| 久久久久久久一级黄色打同平台| 岛国片在线观看视频亚洲| 久久五十路熟女人妻| 青娱乐国产剧情av一区| 另类图片综合| 欧美一区二区| 国产熟妇 码视频户外直播 | 91蜜臀熟女| 91性高潮久久久久久久久| 成人激情无码在线视频| 中国zzijzzijzzwww精品| 熟妇综合一区二区三区| 综合久久少妇中文字幕| 无码国产精品96久久久久孕妇| 色5月婷婷| 国产尤物AV尤物在线观看不卡| 欧州一区二区三区四区| 9久9久| 日本精品久久久久久久| 爱爱动态120秒| 久久久久久国产精品| 丰满人妻av一区二区三区 | 日韩字幕一区| 免费精品国偷自产在线在线| 国产兽交视频在线播放| 亚洲第一页第二页激情| 熟女激情综合网| 欧美Ⅴ性爱| 日韩性爱一级片| 亚洲91网| 又粗又长又大国产不卡| 欧美91精品国产自产| 日韩熟女无码| 都市久久精品激情亚洲| 操逼免费视频无码国产| 日韩AV无码中文一区二区| 91艹B视频| 亚洲无码?第一页| 国产又操| 久久黄黄| 久久色一区| 在线免费试看60秒| 国产丁香精品露脸视频| 亚洲综合网91| 懂色中文一区二区三区| 久久久久久日韩| 亚洲黄片免费在线播放| 无码日韩人妻av一| 床上啊啊啊一区二区三区| 97人人模人人爽人人| 天天色综合图片| 亚洲另类久操网| aaa淫乱视频| 久久久少妇诱惑精品视频| 久久青娱乐| 人妻欧美| 国产一区二区av综合| 免费久久精品麻豆一区二区av| 伊人影院综合是一个与深夜成人在线| 婷婷性爱| 狠狠躁天天躁日日躁| 91成人久久| 色九九久九九| 人人玩人人添人人澡免费| 91在线无码精品秘 软件| 超碰人人妻| 黄色操人| 日本东京热加勒比久久| 国产色呦呦| 花野真衣| 欧美高潮| 亚洲欧美日韩制服另类| 欧美中出1| AV天堂电影网| 素人伊尹大香蕉免费下载视频| 成人精品无码| 五月丁香婷婷啪啪| 丁香五月激情啪啪| 夜夜爽爽夜夜精品视频| 又大又大又大又粗爽高潮观看| 欧美少妇性爱网站| 嗯嗯嗯嗯啊啊啊好紧好大| 国产精品国产| 人人操人人操人人人操| 婷色五月天| 欧美久久人妻少妇一区二区| 韩国一级做a久久久久| 人人操人人操草草| 91精品人妻一区二区-全集完整版免费正片国语-B02AV | 加勒比海人人操超碰在线| 99e久久国产精品| 五月天精品| 青青草久久在线| 九月激情婷婷| 久久人妻四季| 亚洲天堂2020| 婷婷亚洲天堂| 色天天野狼综合社区| av一区二区三区不卡| 操少妇很爽av| 亚洲 欧美 色图| 91足交| 97日视频| 亚洲精品国产熟女| 亚洲国成人情色好看电影| 少妇熟女视频一区二区三区| 欧美亚洲日本视频久久久| 久久精品视频28| 久久这里只精品免费福利| 国产 日韩 欧美 人妻 熟女 中文| 道久久五香丁月婷婷激情综合| 99国产在线 精品 视频| 又摸又舔在线观看网站| 成年人黄色视频免费| 强奸少妇AV导航网| 国产自制av蜜乳| oumeisetu综合| 高清国产精品福利网站| 日本久久久久久久久| 伊人 俄罗斯 a v| 亚洲无码免费看| 92人人操人人| 麻豆激情综合| 男女猛烈无遮掩视频免费软件| 日本精品88888888| 天天影视色香欲综合网小说| 久妇网| a片久久久久久久久久久久| 精品无码一区二区| 成人五级久久| 欧亚揄拍偷拍精品视频 | 男女激情中文字幕| 日韩久久.一级黄色片| 97精品97久久| 成人性爱电影一区二区| 大香蕉狠狠爱| 欧美 亚洲 制服 精品| 97超级久久| 熟女少妇视频| 欧美热图99| 欧美日韩性爱精品| 17c嫩草51久久91嫩草| 久久亚洲骚逼综合| 欧美特大AA级黄片| 天天干1区2区在线| 任你艹| 久久久蜜桃臀无码视频| 免费的av网| 日韩中文字幕精品一区在线| 精品久久久久成人码免| 国产这里只有精品| 欧美精品二区视频在线| 青青青草伊人精品| 东京热男人的天堂网| 欧美少妇色图| 成人黄页| 嗯啊不要在线| 亚洲制服aⅴ中文字幕| 久久大香蕉97| 亚洲最大的黄色电影网站。| 欧美劲爆视频一区二区| 91中出| 日韩无码服务区| 欧美色棕合| 亚洲午夜福利在线影院| 在线午夜成人无码视频| 欧美天堂超碰97| 日日夜夜狠狠| 国产亚洲精品无码三区| 97久久久久久久久久| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 午夜αv| 97超级欧美| 日本午夜久久电影| 国产女人和拘做爰视频 | 国产超碰在线一区| aaa一级黄片| 无码人妻一区二区三区四区老鸭窝| av操操不卡| 日韩久久激情精品| 伊人精品久久网站| 欧美裸体美女日麻屄| 99精品综合久久久久五月天| baiduhicn.com。| 九九九九九九九精品视频| 波多野结衣被操50分钟免费视频 | 欧美日日夜夜| 五月丁香成人网| 久久夜嗨| 五月丁香色情| 黄片视频,下载| 欧美激情内射| 亚洲综合夜色| 中文久久一区| 9久综合网| 婷婷伊人綜合中文字幕小说| 大香蕉一区二区在线观看.| 亚洲色图亚洲| 欧美亚洲手机在线| 國產尤物AV尤物在線觀看| 欧美日韩插逼视频| 91狠狠综合久久| 日韩毛片9| 二对二中文字幕。| 麻豆成人影音在线| 亚州伊人色综台| 搡老女人911熟妇老熟女| 怡红院一区二区熟女人妻| 欧美经典一区二区三区| 亚洲有薄码区日本系列中文字幕| dy888午夜老子影视达达兔 | 日逼视频日本| 91影库| 26uuu性| 天天激情干| 国产久久久久久| 日韩亚洲欧美中文字幕| 亚洲天堂男人天堂网| 日日夜夜免费| 亚洲蜜臀懂色| 人人色人人操在线| 久久精品店| 日韩一级免费性爱| 操婷婷逼| 俺去俺来也在线www| 亚欧高清v| 欧美很很操视频| 狂操嫩妻视频一区二区三区| 伊人天堂在线| 丁香六月啪啪| 嗯嗯嗯不要不要免费视频| 成人老鸭窝人人在线视频| 亚洲限制级| 久久AV色| 俞拍久久国应视频| 亚洲无992tv| 久久精品国产亚洲AV清纯| 在线看的av| 狠狠色噜噜狠狠狠狠狠色综合久久 | 91狠| 精品美女在线视频| 久久精品91| 亚洲AV无码乱码| 色婷网| 天天做天天爱| 伊人久久婷婷| 宅男91视频在线播放| 九热大香蕉| 无卡一区=区| 日产精品久久久一区二区| 亚洲国产成人精品女人久久久| 一级一性爱免费视频| 国产精品一区二区亚洲人成毛片 | 日韩亚洲国产视频| 超碰人人超在线观看| 私色综合网| 91久久久视| 国产91丝袜 在线播放| 另类图片欧美激情综合| 啪啪免费| 蜜臀国产AV中文字幕| 亚洲综合113页| 青青草原香蕉日本Ap| 欧美激情激情xxxx欧美专区| 97人人夜夜精品视频| 五月天激情四射| 九九久久一区二区三区| 欧美亚洲韩国视频十五区| 久久一二三四五六七八九区区区 | 69XX一中文字幕人妻91| 国产 三级自拍| 天堂日本亚洲欧美| 九九九国产| 激情五月天插| 国产剧情一区在线观看| 安微少妇操BBB| 超碰97人人cao| 天天插天天干| 日韩av电影网站| 天天激情综合站| 日韩另类色图| 日日玩天天干| 人人看欧美性爱| 久久久影院| 色色九区| 国产麻豆一级精品视频| 久久啊啊啊视频| 九月伊人中文字幕| 久久一区二区三区入口| 欧美影音在线| 黑人免费福利视频| 97精品综合| 欧美色老汉| 超97在线精品视频| 欧美精品三区| 香伊人在线| 五月色综合| 97 国产精品| 欧美日日操| 秋霞午夜视频一区二区| 亚洲精品国语在线播放| 青青青操| 中文字幕97| 91在线|亚| 精品一级| 中文字幕日韩综合| 好涩综合| 久色网| 1024香蕉视频| 青青草在线视频播放器| 国产农村一一级特黄毛片| 91视频综合在线| 无码精品蜜桃一区二区三区ww| 神马久久网| 久久大香蕉97| 加勒比在线观看一区二区| 久久久9品一区二区三区| 一区二区高清视频| 亚洲图片欧美91N| 国产老太乱伦一区| 中文伊人大香蕉视频| 超碰在线一区二区| 精品人妻夜夜草| 欧美精品精品一区二区| 五月天久久婷婷亚洲 | 操淫穴亚洲五月丁香 | 99精品九九九九九九| 国产毛片精品一区二区色欲黄A片| 97精彩视频网站| 91成人精品| 亚码激情| 欧美片第一页| 丝袜翘臀后入欧美校园亚洲自拍另类小说一区中文字幕少妇诱惑 | 久久激情综合| 亚洲色图A| 天天欧美色| 成人a级高清视频在线观看| 99只有精品| 国产精品熟女乱伦| 亚洲成成熟女人综合一区二区| 蜜桃成人1区2区3区| 91处女在线观看| 91天天爱| 影音先锋国产精品| 玖玖综合视频| 狠狠爱夜夜干| 国产成人无码高清| 免费视频观看60秒| 这里是精品| 操逼天美3区| www.一本大99| 欧美成人黄网色网站| 999国产精品999久久久久久| 亚洲中文制服诱惑| 在线看的av| 国产精品欧美在线观看| 亚洲乱色视频一区、二区在线| 多毛小伙内射老太婆| 亚洲日本大香蕉1| 这里是精品| av在线一区二区三区| 黄页| 亚州久久9| 看日韩操逼| 久久精品一区二区一8| 毛片麻豆91糖心精品毛情片| 国产伦精品一区二区三区视频女| 乱伦熟女专区| 国产97色在线| 亚洲中文字幕日产无码久久| 久久丁香| 亚洲精品毛片在线观看| 久久啊啊| 国产诱惑| 天天综合欧美综合| 日本在线不卡一二区| 诱惑网综合| 久久中文字幕女同性恋一区| 久久这里都是精品| 国产精品一区二区黄片| 日韩激情毛片一级久久久| 国产aⅴ无码片毛片一级网站| 国产免费小视频| 亚洲第91页| 丝袜美腿诱惑亚洲欧美视频在线观看 | 91人妻尻屄视频| 一级人妻性爱视频| 97这里有精品| 无卡一区=区| 青苹果影院男人的天堂| AV 少妇 人妻 偷拍| 极品尤物女神在线观看| 日本三级A片网站com| 一区二区三区四区理论片| 色网1| 国产性感在线观看| 在线看片国产精品每日更新| 欧美日韩另类在线播放| 综合97| 搡老女人老91二区| 伊人久久亚洲色欲综合网站 | 久久久月天| 97欧美日韩中文| 蜜桃久久久久久久| 91碰碰碰| 婷婷五月天激情网| 亚洲无码国产探花在线观看| 日韩欧美性吧婷婷乱伦大香蕉| JuliaAnnXXX888| 人妻激情视频| 久操| 亚洲精品久久久久久| 99热这里只有是精品10| 亚洲青色欧美| 加勒比综合九九99视频在线播放| 国产性感在线观看| 岛国小电影| 91色爽欧美| 欧美日韩理论一区| 97 国产一区| 台湾肥佬网一区二区三区| 日本97久久久精品| 日韩精品高清资源在线| 午夜天堂网| 午夜性| 都市激情人妻一区二区青青操视频 | 亚洲色天堂日韩中| 激情综合久久| 亚洲午夜av| 日本一区二区成人在线| 亚洲五码一区二区三区| 亚洲欧洲av影音| 狠狠色伊人亚洲综合网站色| 8x福利精品第一福利视频导航 | 国产后入式在线观看| 国产黑白丝在线| 国产精品夜夜| 999综合网| 国产真乱mangent| 欧美日韩黄片精品在线| 日韩av一级黄片| 久久久久久AⅤ无码免费肉站| 综合网色| 亚洲色天堂日韩中| 97色诱| 天天操天天看| JuliaAnnXXX888| V A在线| 成人无码在线超碰网| 日韩丝袜二区| 激情四射五月天| 91+欧美| 久久国产精品熟女人妻| 久久久久人| 国产97av| 91人妻最真实刺激绿帽| 91人妻素女| 五月天婷婷激情| 殴美综合色88| 另类av天堂| 久久精品成人一区二区三区蜜臀| 九九热av| 久久精品 六十路 熟女 欧美| 再深点灬舒服灬太大了添视频| 少妇干B| 精品国产乱码久久久久久影片| 亚洲综合性感在线| 成人资源中文字幕在线观看| 啊啊啊啊啊好多水| 思思热在线cao| 激情五月综合| 啊啊啊在线观看免费视频| 欧美成人国产精品| 999久久芭蕾| 精品欧美老熟女一二区| 国产欧美日韩精品中文| 婷婷五月天基地| 亚洲成人妻日韩在线| 欧美熟女丝袜| 操熟女91| 99亚洲精品| 99无码视频| 久操在97| 欧美亚洲综合高清在线| a片 xxxx受爽视频| 国产美女高潮叫床视频| 91女网站| 亚洲精品蜜桃久久久| 操人人| 一起草av| 日本熟妇精品九九| 97精品免费视频网站| 免费A V在线播放| 国产怡红院| 欧美色另类| 黑人无码一区二区| 久久综合日韩亚洲欧美| 亚洲熟女偷拍在线观看| 欧美乱伦专区| 色综合网1| 欧美成人色| 欧在线一二区| 国产啊v在线免费播放| 天天欧美欧美亚洲网| 全国男人天堂网| 日日操免费视频| 精品视频久久久久九九九九9999| 日韩欧美天堂| 大香蕉黄色一级片免费看| 中文字幕啊啊啊在线观看视频| av 模特一区了| 人妻 丝袜美腿 中文字幕| 清清一区二区三区四区不卡视频| 综合亚洲欧美| 翔田千里一区二区三区奶水| 久久久艹艹艹| 欧美色图欧美| 亚洲天堂人妻熟妇视频| 最新AVzaixian| 97超碰日韩| 九九热超碰| 伊人网在线点播| av资源在线观看少妇| 青青草日韩免费观看高清在线| αⅴ天堂| 啊啊啊啊二区好大| 国产福利视频精品视频| 欧美色偷拍| 性91| 欧美亚洲日韩人妻在线观看| 狠日欧美| 密桃99999| 日韩9区| 久久人妻视频网| 精品78| 欧美美女啪啪视频| 婷婷色色五月天福利| 啊啊啊啊啊操我视频| 久久伊人最新网址视频| 神马视频久久久久久| 欧美牲| 精品人妻1237| 亚洲最新Av| 精品国产三级av韩国在线| 91久青| 一级性爱视频免费观看| 78久久久| 天天草夜夜草高潮片| 超碰免费欧美7| 丁香五月综合| 91欧美性| 国产91乱伦| 精品二区久久| 熟女人妻一区二区三区| 人妻丰满熟妇av无码区蜜桃| 亚洲人妻一区二区三区| 嗯嗯啊啊好爽| 中文字幕片| 国产精品999aaa| 精品一区二区三区四区外站| 国产精品一级特黄aaa大片在线观看| 亚洲凸凹超碰成人| 激情五月天视频| 国产9l 大屁股| 日韩在线97| 黄视频免费| 后入式999| 日韩三级久久久| 欧美日韩性爱电影在线| 狠狠躁日日躁夜夜躁A| 综合欧美日本三级| 天天色图| 午夜久久一区二区无码中出| 粉嫩av久久一区二区三区| av2014 日韩在线中文字幕| 97天天摸天天碰| 亚欧成人综合影院| 亚洲 欧美 综合 91| 全球成人中文在线| 亚洲一区二区在线观看91| 超碰在线97国产| 激情五月综合网| 久久国产在线一区二区| 夜夜做夜夜爽精品视频| 久久手机视直播| 亚洲最新中文字幕免费| 欧美人妻少妇| 97在线青| 亚洲天堂综合AV| 色色毛片| 黑人黄片在线免费观看| 黄污污污污| 大香蕉碰碰| 色欧美天天| 嗯嗯嗯啊啊啊在线免费观看| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 久久东京热久久| 亚洲色图欧美色图综合| 伊人大香蕉在线| 麻豆精品三区视频| 天堂性色| 另类亚洲一区二区三区| 亚洲成人精品在线一区| 久久手机好看网站| 97 国产精品| 蜜臀久久99精品久久久久久-DVD原版全| 亚洲97成人在线观看| 国内毛片婷婷六月色| 啊啊啊不要啊啊受不了了视频在线 | 日日狠狠久久偷偷色综合免费| 亚洲一区二区三区不卡国产欧美| 78m啪啪啪| 97丝袜亚洲在线播放| 欧美在线官网| 免费毛片在线播放| 国产精品免费1区2区视频| 亚洲日韩久久精品一区| 欧美第一页性| 青娱乐999| 最新制服中文第一页| 超碰日韩美妻| 色女99一级片在线观看| 大香蕉520| 国产视频不卡在线观看| 三级精品三级在线观看| 日日操夜夜操天天操免费观看麻豆| 无码人妻精品一区二区三区九九| 男人天堂站| 久久一级无码精品毛片6| 欧美性生活男人的天堂| 女人精品内射国产99| 在线看污网站| 欧美体内射精| 久久鲁夜| 色噜噜国产在线| 91美腿丝袜在线观看| 综合熟女| 91 手机在线播放 绯色| 蜜臀av在线播放一区二区三区| 日韩成人大片一区二区| 色欲日韩欧美在线一区| 四虎国产精品永久地址入口| 日韩成人无码| 亚洲男人天堂网| 欧美超碰在线| 国产精品不卡高清在线观看| 亚洲全色网| 大香蕉淫人网| 大香蕉欧美| 91爱| 婷婷爽人人婷婷爽视频| 天天做日日做天天欢。| 日韩在线视频1234| 午夜男女爽爽爽在线视频| 都市久久精品激情亚洲| 一级AV性爱| 国产真乱mangent| 免费黄色片。| 日本高清视频xxxx| 久久国产熟女影院| 国产精品一区午夜福利| 免费一级黄色录像影片| 日韩精品在线观看观看| 韩国午夜理伦三级好看| 无码国产精品久久久久| 欧美性爱免费短视频| 一道α片欧美| 亚洲欧洲综合av在线| 天天做日日爱夜夜爽| 中字乱伦AV| caopeng97| 欧美色图 人妻| 大香蕉综合网| 私人尤物在线精品不卡| 国产性爱在线视频一区二区| 涩涩涩综合| 蜜臀少妇一区二区| 操逼视频免费日韩无码| 在线只有精品| 美女啊啊啊啊啊啊啊| 中文字幕78| 欧美日综合| 综合网亚洲|