国产成人欧美一区二区三区vr_久久国产精品人人爽人人爽_国产精品永久免费播放_肉欲啪啪a∨无码精品一区二区_国产超短裙jk丝袜在线_亚洲AV片高清资源在线观看_国模无码一区二区三区久久_国产成年人未进视频_中文字幕无码精品夜_一区二区三区在线视频免费看_亚洲成AV人片在线观看网址_日本激情视频高清综合久久_亚洲午夜视频福利_国内大量揄拍人妻精品視_久久国产精品福利二区三区

ARTICLE DETAIL

資訊詳情

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

ARM Cortex-M數(shù)據(jù)處理指令實(shí)戰(zhàn):從算術(shù)邏輯到標(biāo)志位與優(yōu)化

ARM Cortex-M數(shù)據(jù)處理指令實(shí)戰(zhàn):從算術(shù)邏輯到標(biāo)志位與優(yōu)化 1. 從一條指令說(shuō)起為什么數(shù)據(jù)處理是嵌入式的基石如果你寫過幾行嵌入式C代碼大概率用過a b c;這樣的語(yǔ)句。在高級(jí)語(yǔ)言層面這只是一個(gè)簡(jiǎn)單的賦值加法。但在你按下編譯鍵代碼被燒錄進(jìn)那片小小的單片機(jī)或微控制器MCU后這條語(yǔ)句最終會(huì)變成什么它會(huì)被翻譯成一條或多條數(shù)據(jù)處理指令在CPU的寄存器間、在ALU算術(shù)邏輯單元里完成最底層的運(yùn)算。這就是嵌入式開發(fā)的真實(shí)面貌我們寫的每一行邏輯最終都要落地為芯片能直接理解和執(zhí)行的指令。數(shù)據(jù)處理指令就是構(gòu)建這個(gè)邏輯世界的磚瓦。很多人覺得嵌入式開發(fā)就是調(diào)庫(kù)、配寄存器、寫驅(qū)動(dòng)這沒錯(cuò)。但當(dāng)你遇到一個(gè)詭異的計(jì)算結(jié)果或者性能瓶頸需要優(yōu)化時(shí)如果對(duì)底層的數(shù)據(jù)處理指令一無(wú)所知排查和優(yōu)化就會(huì)像在黑暗中摸索。理解這些指令不是為了去手寫匯編雖然有時(shí)很有用而是為了建立一種“機(jī)器思維”。你能預(yù)判編譯器會(huì)把你的C代碼變成什么模樣能看懂反匯編的片段能在資源受限時(shí)做出更優(yōu)的算法和數(shù)據(jù)類型選擇。這就像一位老司機(jī)不僅會(huì)開車還懂點(diǎn)發(fā)動(dòng)機(jī)原理車況異常時(shí)心里不慌。今天我們就拋開枯燥的指令手冊(cè)從一個(gè)嵌入式開發(fā)者的實(shí)戰(zhàn)視角深入聊聊ARM Cortex-M這類主流內(nèi)核中數(shù)據(jù)處理指令的門道。我們會(huì)從最常用的算術(shù)和邏輯指令入手拆解它們?nèi)绾喂ぷ魅缓笊钊氲侥切┲苯佑绊懘a效率和穩(wěn)定性的細(xì)節(jié)條件執(zhí)行、移位操作、以及標(biāo)志位這個(gè)“沉默的裁判”。最后我們會(huì)看看這些知識(shí)如何直接用在你的項(xiàng)目里比如優(yōu)化一個(gè)傳感器濾波算法或者解釋一個(gè)讓你頭疼的硬件異常。目標(biāo)很簡(jiǎn)單讓你下次看到MOVS R0, #0x0A或ADD R1, R1, R2, LSL #2時(shí)不僅能看懂還能品出代碼背后的設(shè)計(jì)意圖。2. 核心武器庫(kù)算術(shù)與邏輯指令的實(shí)戰(zhàn)拆解嵌入式程序干的活兒九成離不開對(duì)數(shù)據(jù)的“計(jì)算”和“判斷”。計(jì)算就是加減乘除判斷就是與或非。對(duì)應(yīng)到指令集就是算術(shù)指令和邏輯指令。我們以ARM的Thumb/Thumb-2指令集為例因?yàn)樗鼜V泛應(yīng)用于Cortex-M系列是嵌入式領(lǐng)域的絕對(duì)主流。2.1 算術(shù)運(yùn)算不只是加減法最基礎(chǔ)的ADD加和SUB減指令大家都很熟悉格式一般是ADD Rd, Rn, Operand2。這里的Operand2可以是另一個(gè)寄存器也可以是一個(gè)立即數(shù)比如#10甚至是一個(gè)帶移位的寄存器后面會(huì)講。但我想先強(qiáng)調(diào)一個(gè)容易被忽略的細(xì)節(jié)運(yùn)算結(jié)果對(duì)標(biāo)志位的影響。在ARM中大多數(shù)算術(shù)和邏輯指令默認(rèn)不更新條件標(biāo)志位N, Z, C, V。如果你想根據(jù)結(jié)果進(jìn)行條件跳轉(zhuǎn)必須在指令后加S后綴。例如ADD R0, R1, R2: 計(jì)算 R1R2結(jié)果存入R0不影響標(biāo)志位。ADDS R0, R1, R2: 同樣計(jì)算但會(huì)根據(jù)結(jié)果更新N負(fù)、Z零、C進(jìn)位、V溢出標(biāo)志。這個(gè)區(qū)別至關(guān)重要。舉個(gè)例子你在寫一個(gè)循環(huán)計(jì)數(shù)器遞減直到零的代碼// C代碼 while (counter--) { // do something }編譯器可能會(huì)生成類似下面的匯編序列簡(jiǎn)化LDR R0, counter ; 加載counter地址到R0 LDR R1, [R0] ; 將counter的值加載到R1 loop: SUBS R1, R1, #1 ; R1 R1 - 1并設(shè)置標(biāo)志位 BLT exit ; 如果R1減1后變?yōu)樨?fù)數(shù)通常不會(huì)這樣跳轉(zhuǎn)跳轉(zhuǎn) ... ; 循環(huán)體 B loop exit:實(shí)際上更常見的優(yōu)化是直接用SUBS的結(jié)果判斷是否為零Z標(biāo)志然后用BNEBranch if Not Equal即Z0時(shí)跳轉(zhuǎn)來(lái)循環(huán)。這里的關(guān)鍵是必須用SUBS而不是SUB否則后續(xù)的BNE判斷將基于陳舊的標(biāo)志位導(dǎo)致邏輯錯(cuò)誤。很多初學(xué)匯編的人在這里栽跟頭寫出的循環(huán)要么死循環(huán)要么一次都不執(zhí)行。注意在Cortex-M的Thumb-2指令集中有些指令格式如16位的ADD Rd, Rd, Rm會(huì)強(qiáng)制更新標(biāo)志位而有些如32位的ADD.W Rd, Rn, Rm則需要顯式加S。查閱芯片的《架構(gòu)參考手冊(cè)》或《指令集摘要》是必須的不要想當(dāng)然。除了加減乘法指令MUL和乘加指令MLA也經(jīng)常用到。這里有一個(gè)重要的性能陷阱在早期的ARM7/9或某些低端Cortex-M0上乘法可能需要多個(gè)時(shí)鐘周期而加/減/移位通常是單周期。因此在性能敏感的循環(huán)中用加法和移位組合替代常數(shù)乘法是經(jīng)典的優(yōu)化手段。例如計(jì)算R0 R1 * 5可以用ADD R0, R1, R1, LSL #2來(lái)實(shí)現(xiàn)因?yàn)? 1 4左移2位等于乘4。這比直接使用MUL指令更快。當(dāng)然在Cortex-M3/M4等帶有硬件單周期乘法器的內(nèi)核上這個(gè)優(yōu)化意義不大但作為一種思維訓(xùn)練很有價(jià)值。2.2 邏輯運(yùn)算與位操作控制硬件的神器如果說(shuō)算術(shù)指令負(fù)責(zé)“算數(shù)”那么邏輯指令就是負(fù)責(zé)“開關(guān)”和“判斷”。AND與、ORR或、EOR異或、BIC位清除和MVN取反傳送是其中的主力。在嵌入式開發(fā)中邏輯指令最典型的應(yīng)用就是寄存器配置。幾乎所有的外設(shè)GPIO、UART、定時(shí)器都通過讀寫內(nèi)存映射的寄存器來(lái)控制。我們經(jīng)常需要“在不影響其他位的情況下設(shè)置或清除某一位或幾位”。假設(shè)我們要設(shè)置一個(gè)GPIO端口輸出數(shù)據(jù)寄存器ODR的第5位為高電平設(shè)為1而其他位保持不變。C代碼可能這么寫GPIOA-ODR | (1 5); // 設(shè)置第5位編譯器會(huì)將其轉(zhuǎn)換為類似如下的匯編LDR R0, GPIOA_ODR_ADDR ; 加載寄存器地址 LDR R1, [R0] ; 讀取當(dāng)前寄存器值到R1 MOVS R2, #0x20 ; 0x20就是 15即第5位為1 ORRS R1, R1, R2 ; R1 R1 | R2設(shè)置第5位 STR R1, [R0] ; 寫回寄存器這里的ORRS指令就是關(guān)鍵。它用“或”操作將特定位置1。同理如果要清除某一位設(shè)為0則會(huì)用到BIC指令。BIC Rd, Rn, Rm的操作是Rd Rn AND NOT(Rm)。對(duì)應(yīng)的C代碼是GPIOA-ODR ~(1 5);。EOR異或指令則常用于位翻轉(zhuǎn)。A ^ 1的效果是如果A是0則得1是1則得0。這在實(shí)現(xiàn)LED閃爍交替亮滅、軟件模擬通信協(xié)議如翻轉(zhuǎn)時(shí)鐘線時(shí)非常有用。實(shí)操心得在查看芯片手冊(cè)配置寄存器時(shí)一定要留意是“寫1置位/清除”還是“寫1有效寫0無(wú)效”。對(duì)于后者ORR和BIC是安全的。但有些寄存器是“寫1觸發(fā)某個(gè)動(dòng)作寫0無(wú)影響”這時(shí)直接STR一個(gè)值可能會(huì)誤觸發(fā)更安全的做法是讀-改-寫Read-Modify-Write三部曲而邏輯指令正是“改”這一步的核心。2.3 數(shù)據(jù)傳送MOV指令的“偽裝者”MOV指令看似簡(jiǎn)單就是把一個(gè)值放到寄存器里。但在ARM指令集中它的能力被大大擴(kuò)展了。MOV可以完成的不僅僅是傳送立即數(shù)或另一個(gè)寄存器的值。一個(gè)強(qiáng)大的特性是MOV指令的源操作數(shù)可以包含移位操作。例如MOV R0, R1, LSL #3就是把R1的值左移3位相當(dāng)于乘8后再存入R0。這本質(zhì)上是一條“移位并傳送”指令在一條指令內(nèi)完成了兩個(gè)操作效率很高。更重要的是ARM提供了一系列“偽指令”或“合成指令”它們看起來(lái)像MOV但編譯器會(huì)根據(jù)情況生成最合適的指令序列。最經(jīng)典的就是加載一個(gè)32位立即數(shù)到寄存器。由于一條ARM指令本身是32位或16位其中能編碼的立即數(shù)大小有限通常是一個(gè)8位數(shù)值循環(huán)右移偶數(shù)位得到。當(dāng)你寫MOV R0, #0x12345678時(shí)編譯器可能會(huì)報(bào)錯(cuò)因?yàn)樗鼰o(wú)法用一條指令表示這個(gè)數(shù)。編譯器實(shí)際會(huì)將其處理為兩條指令可能是一條MOVW移動(dòng)低16位加一條MOVT移動(dòng)高16位或者是從附近的文字池Literal Pool用LDR指令加載。作為開發(fā)者你不需要記住所有規(guī)則但需要知道在嵌入式環(huán)境中頻繁加載大的立即數(shù)常量可能會(huì)增加代碼體積。對(duì)于頻繁使用的常量將其定義為變量或者利用編譯器的常量傳播優(yōu)化是更好的選擇。另一個(gè)“偽裝者”是MVN它執(zhí)行“取反后傳送”。MVN R0, #0的結(jié)果是R0 0xFFFFFFFF這在需要設(shè)置全1掩碼時(shí)非常方便。3. 沉默的裁判條件標(biāo)志位與條件執(zhí)行如果說(shuō)寄存器是CPU的便簽紙那么**條件標(biāo)志位Condition Flags**就是貼在便簽紙角落的“狀態(tài)便利貼”。它們由那些帶S后綴的指令設(shè)置然后默默地影響著后續(xù)的條件分支、條件執(zhí)行指令。理解它們是寫出高效、穩(wěn)定匯編代碼乃至深刻理解C語(yǔ)言條件判斷底層邏輯的關(guān)鍵。3.1 四個(gè)核心標(biāo)志位N, Z, C, V在ARM架構(gòu)中最重要的四個(gè)標(biāo)志位存儲(chǔ)在APSR應(yīng)用程序狀態(tài)寄存器中N (Negative)當(dāng)指令的結(jié)果被視為有符號(hào)整數(shù)時(shí)若結(jié)果為負(fù)則N1。簡(jiǎn)單說(shuō)就是結(jié)果的最高位符號(hào)位為1。Z (Zero)如果指令的結(jié)果為零則Z1。這是最常用的標(biāo)志位用于判斷相等或是否為零。C (Carry)進(jìn)位標(biāo)志。對(duì)于加法運(yùn)算包括比較指令CMP它本質(zhì)是做減法如果產(chǎn)生了無(wú)符號(hào)溢出即加法最高位有進(jìn)位或減法需要借位則C1。對(duì)于移位操作C被設(shè)置為移出的最后一位。V (oVerflow)溢出標(biāo)志。當(dāng)指令的結(jié)果被視為有符號(hào)整數(shù)時(shí)如果發(fā)生了有符號(hào)溢出即結(jié)果超出了有符號(hào)數(shù)的表示范圍則V1。光看定義有點(diǎn)抽象我們結(jié)合CMP比較指令來(lái)看它是最典型的設(shè)置標(biāo)志位卻不保存結(jié)果的指令CMP Rn, Operand2相當(dāng)于SUBS Rd, Rn, Operand2但結(jié)果丟棄。假設(shè) R1 0x7FFFFFFF (32位最大正有符號(hào)數(shù)) R2 0x00000001。 執(zhí)行CMP R1, R2計(jì)算 R1 - R2實(shí)際運(yùn)算0x7FFFFFFF - 0x00000001 0x7FFFFFFE。N0結(jié)果0x7FFFFFFE最高位是0正數(shù)。Z0結(jié)果非零。C1作為無(wú)符號(hào)減法0x7FFFFFFF 0x00000001無(wú)需借位所以C1注意對(duì)于減法C1表示無(wú)借位這與加法相反是個(gè)容易混淆的點(diǎn)。V00x7FFFFFFF - 1 0x7FFFFFFE仍在有符號(hào)正數(shù)范圍內(nèi)未溢出。現(xiàn)在執(zhí)行CMP R1, #0x80000000假設(shè)立即數(shù)合法計(jì)算 R1 - 0x80000000實(shí)際運(yùn)算0x7FFFFFFF - 0x80000000 0xFFFFFFFF (在補(bǔ)碼運(yùn)算中等價(jià)于 -1)。N1結(jié)果0xFFFFFFFF最高位是1視為有符號(hào)數(shù)為負(fù)。Z0結(jié)果非零。C0無(wú)符號(hào)數(shù)0x7FFFFFFF 0x80000000減法需要借位所以C0。V1正數(shù)0x7FFFFFFF減去一個(gè)負(fù)數(shù)0x80000000是最大負(fù)整數(shù)結(jié)果應(yīng)該是一個(gè)很大的正數(shù)但實(shí)際得到了一個(gè)負(fù)數(shù)(-1)發(fā)生了有符號(hào)溢出所以V1。3.2 條件執(zhí)行ARM的獨(dú)門絕技基于這些標(biāo)志位ARM提供了強(qiáng)大的條件執(zhí)行功能。這不僅體現(xiàn)在條件分支Bcond如BEQ,BNE,BGT等更體現(xiàn)在一條現(xiàn)已不多見但非常經(jīng)典的特性上幾乎所有指令都可以條件執(zhí)行。在經(jīng)典的ARM模式AArch32的ARM指令集中你可以在指令助記符后添加條件碼后綴例如ADDEQ R0, R1, R2。這條指令的意思是只有當(dāng)Z標(biāo)志為1即上一次比較結(jié)果相等時(shí)才執(zhí)行這條ADD指令。這可以避免短距離的條件分支減少流水線清空帶來(lái)的性能損失是ARM代碼密度和效率高的原因之一。注意在目前嵌入式領(lǐng)域主流的Thumb-2指令集用于Cortex-M3/M4/M7等中除了分支指令B和少數(shù)幾條指令如IT塊內(nèi)的指令大多數(shù)數(shù)據(jù)處理指令已經(jīng)不支持直接的條件碼后綴了。取而代之的是ITIf-Then指令塊。這是Thumb-2為了保持16位指令高密度特性而引入的。例如CMP R0, #10 ITTE EQ ; If-Then-Then-Else (條件為EQ) MOVEQ R1, #1 ; 如果相等(Z1)則 R11 ADDEQ R2, R2, #5 ; 如果相等(Z1)則 R2R25 MOVNE R1, #0 ; 否則(Z0)則 R10IT指令定義了后續(xù)1到4條指令的執(zhí)行條件。雖然形式變了但“條件執(zhí)行”的思想和優(yōu)勢(shì)得以保留。在分析Cortex-M的反匯編代碼時(shí)你會(huì)經(jīng)??吹絀T塊。理解條件執(zhí)行對(duì)于閱讀反匯編代碼、進(jìn)行底層調(diào)試至關(guān)重要。當(dāng)你單步執(zhí)行時(shí)看到一條指令被“跳過”了很可能就是因?yàn)樗臈l件不滿足。3.3 標(biāo)志位的“生存期”與陷阱標(biāo)志位非常脆弱任何一條帶S后綴的指令都會(huì)覆蓋它們。一個(gè)常見的陷阱是在需要連續(xù)進(jìn)行多個(gè)條件判斷時(shí)忘記了中間某條指令會(huì)破壞標(biāo)志位。假設(shè)你想實(shí)現(xiàn)如果 R0 R1 且 R2 0則跳轉(zhuǎn)到label1。 一種初學(xué)者的錯(cuò)誤寫法可能是CMP R0, R1 ; 比較 R0 和 R1設(shè)置標(biāo)志位 BLE skip ; 如果 R0 R1跳過 CMP R2, #0 ; 比較 R2 和 0**這會(huì)覆蓋之前的標(biāo)志位** BNE skip ; 如果 R2 ! 0跳過 B label1 ; 兩個(gè)條件都滿足跳轉(zhuǎn) skip: ...這段代碼邏輯正確嗎不正確因?yàn)榈诙€(gè)CMP指令把第一個(gè)CMP設(shè)置的標(biāo)志位用于判斷大于完全覆蓋了。實(shí)際上在第一個(gè)BLE之后我們只知道R0 R1不成立但N, Z, C, V的具體狀態(tài)已經(jīng)丟失無(wú)法再用于組合判斷。正確的寫法需要更巧妙的邏輯組合或者使用條件執(zhí)行來(lái)保護(hù)標(biāo)志位。在C語(yǔ)言中編譯器會(huì)幫我們處理好這些細(xì)節(jié)生成正確的指令序列。但當(dāng)你進(jìn)行極端優(yōu)化或者用內(nèi)聯(lián)匯編手動(dòng)干預(yù)時(shí)就必須對(duì)標(biāo)志位的“生存期”保持高度警惕。我的經(jīng)驗(yàn)是在寫匯編時(shí)把標(biāo)志位想象成只有一個(gè)的、全局的、易變的變量。任何計(jì)劃外的修改都會(huì)導(dǎo)致難以追蹤的Bug。4. 效率倍增器移位操作的妙用與陷阱移位操作是處理器提供的最基礎(chǔ)、最高效的運(yùn)算之一。在ARM指令集中移位不僅可以作為獨(dú)立指令LSL,LSR,ASR,ROR更可以作為許多數(shù)據(jù)處理指令如ADD,MOV,AND中Operand2的一部分實(shí)現(xiàn)“免費(fèi)”的移位運(yùn)算。這是ARM指令集設(shè)計(jì)的一大亮點(diǎn)也是嵌入式優(yōu)化中必須掌握的技巧。4.1 四種移位方式與應(yīng)用場(chǎng)景LSL (Logical Shift Left邏輯左移)操作數(shù)向左移動(dòng)低位補(bǔ)0移出的最高位進(jìn)入C標(biāo)志位。效果等同于乘以2^nn為移位位數(shù)。這是最常用的移位用于快速乘法、位域提取將目標(biāo)位移到最低位等。示例LSL R0, R1, #2將R1的值左移2位乘4后存入R0。集成示例ADD R0, R1, R2, LSL #3計(jì)算R0 R1 (R2 * 8)。LSR (Logical Shift Right邏輯右移)操作數(shù)向右移動(dòng)高位補(bǔ)0移出的最低位進(jìn)入C標(biāo)志位。效果等同于無(wú)符號(hào)整數(shù)除以2^n向下取整。用于無(wú)符號(hào)數(shù)的快速除法、位域提取將高位移動(dòng)到低位。示例LSR R0, R1, #1將R1無(wú)符號(hào)右移1位除2。ASR (Arithmetic Shift Right算術(shù)右移)操作數(shù)向右移動(dòng)高位用原符號(hào)位填充移出的最低位進(jìn)入C標(biāo)志位。這是為有符號(hào)整數(shù)設(shè)計(jì)的移位右移后保持符號(hào)不變效果等同于有符號(hào)整數(shù)除以2^n向負(fù)無(wú)窮取整。示例假設(shè)R1 0xFFFFFFF0 (即 -16 的補(bǔ)碼)ASR R0, R1, #2結(jié)果為 0xFFFFFFFC (即 -4 的補(bǔ)碼)。如果用LSR結(jié)果將是 0x3FFFFFFC一個(gè)很大的正數(shù)完全錯(cuò)誤。ROR (Rotate Right循環(huán)右移)操作數(shù)向右循環(huán)移動(dòng)移出的最低位不僅進(jìn)入C標(biāo)志位還循環(huán)填充到最高位。這種移位在加密算法、CRC校驗(yàn)等場(chǎng)景中常見在普通數(shù)據(jù)處理中用得較少。4.2 “免費(fèi)”的移位與桶形移位器ARM內(nèi)核中有一個(gè)硬件模塊叫桶形移位器Barrel Shifter。它的神奇之處在于可以在指令譯碼的同一周期內(nèi)幾乎無(wú)額外開銷地完成對(duì)Operand2的移位操作。這就是為什么ADD R0, R1, R2, LSL #2這樣的指令能和普通的ADD指令在單周期內(nèi)完成。這個(gè)特性為優(yōu)化打開了大門替代常數(shù)乘法如前所述LSL可以高效實(shí)現(xiàn)乘2、4、8、16等操作。對(duì)于非2的冪的常數(shù)可以拆解為移位和加法的組合。例如R0 * 10 R0 * 8 R0 * 2對(duì)應(yīng)ADD R0, R0, R0, LSL #1再ADD R0, R0, R0, LSL #3或合并為更復(fù)雜的指令??焖傥挥虿僮髟谕ㄐ艆f(xié)議或寄存器封裝中經(jīng)常需要從一個(gè)字word中提取或插入幾個(gè)連續(xù)的位。提取假設(shè)要從R0中提取第5到第8位共4位??梢訪SR R1, R0, #5將目標(biāo)位移到最低位然后AND R1, R1, #0x0F用掩碼取出低4位。插入假設(shè)要將R1的低4位寫入R0的第5到第8位同時(shí)保持R0其他位不變??梢韵菳IC R0, R0, #(0xF 5)清除目標(biāo)位然后AND R2, R1, #0x0F確保源數(shù)據(jù)只有低4位接著ORR R0, R0, R2, LSL #5移位后合并。4.3 移位操作的陷阱溢出與未定義行為移位雖好但坑也不少。第一個(gè)坑是溢出。左移可能造成數(shù)據(jù)溢出。對(duì)于有符號(hào)數(shù)左移可能導(dǎo)致符號(hào)位被改變從正數(shù)變成負(fù)數(shù)或反之這通常意味著乘法結(jié)果超出了數(shù)據(jù)類型范圍。對(duì)于無(wú)符號(hào)數(shù)左移后如果C標(biāo)志位被置1說(shuō)明有比特被移出數(shù)據(jù)丟失。在編寫對(duì)精度要求高的算法如定點(diǎn)數(shù)運(yùn)算時(shí)必須考慮移位后的飽和處理或精度擴(kuò)展。第二個(gè)坑是移位數(shù)大于數(shù)據(jù)寬度。在ARM中如果移位數(shù)大于等于數(shù)據(jù)寬度如對(duì)32位數(shù)移位32位結(jié)果在架構(gòu)定義中是“不可預(yù)知”的。不同型號(hào)的CPU、甚至同一CPU在不同模式下行為可能不同。有些會(huì)取模如移32位等于不移位有些會(huì)得到0對(duì)于LSL或全符號(hào)位對(duì)于ASR。安全的做法是確保你的移位數(shù)在編譯時(shí)就是明確且小于數(shù)據(jù)寬度的。如果移位數(shù)是變量則必須在代碼中做邊界檢查。第三個(gè)坑是編譯器優(yōu)化的“意外”。你可能會(huì)在C代碼中寫uint32_t a b * 8;并期望編譯器生成LSL指令。大多數(shù)時(shí)候確實(shí)如此。但如果你打開了某些激進(jìn)的優(yōu)化選項(xiàng)或者乘法因子比較復(fù)雜編譯器可能會(huì)選擇其他指令序列比如用一條MLA乘加指令同時(shí)完成多個(gè)運(yùn)算。理解底層指令能幫助你在看反匯編時(shí)驗(yàn)證編譯器的優(yōu)化是否符合你的預(yù)期或者在需要絕對(duì)控制時(shí)合理地使用內(nèi)聯(lián)匯編。5. 從理論到實(shí)戰(zhàn)一個(gè)傳感器濾波算法的指令級(jí)優(yōu)化我們用一個(gè)具體的例子把前面講的知識(shí)串起來(lái)。假設(shè)我們?cè)谝粋€(gè)Cortex-M3內(nèi)核的MCU上需要對(duì)一個(gè)ADC采集的傳感器信號(hào)進(jìn)行簡(jiǎn)單的移動(dòng)平均濾波。最簡(jiǎn)單的實(shí)現(xiàn)是維護(hù)一個(gè)長(zhǎng)度為N的緩沖區(qū)每次新數(shù)據(jù)到來(lái)時(shí)總和減去最舊的數(shù)據(jù)加上最新的數(shù)據(jù)然后求平均。C語(yǔ)言樸素實(shí)現(xiàn)#define FILTER_WINDOW_SIZE 8 uint16_t buffer[FILTER_WINDOW_SIZE]; uint8_t index 0; uint32_t sum 0; uint16_t filter_update(uint16_t new_sample) { // 減去即將被覆蓋的舊值 sum - buffer[index]; // 存入新值并加到總和 buffer[index] new_sample; sum new_sample; // 更新索引 index (index 1) % FILTER_WINDOW_SIZE; // 返回平均值假設(shè)窗口大小是2的冪用移位代替除法 return (uint16_t)(sum 3); // FILTER_WINDOW_SIZE 8, 右移3位等于除以8 }現(xiàn)在我們看看在關(guān)鍵路徑上編譯器可能會(huì)生成什么指令以及我們?nèi)绾螐闹噶顚用嫠伎純?yōu)化。求模運(yùn)算index (index 1) % FILTER_WINDOW_SIZE;對(duì)于除數(shù)是2的冪的求模編譯器會(huì)優(yōu)化為位與操作。因?yàn)閍 % 8等價(jià)于a 0x07。這對(duì)應(yīng)一條AND指令非常高效。如果我們把FILTER_WINDOW_SIZE設(shè)為9非2的冪編譯器將不得不生成真正的除法指令可能是庫(kù)函數(shù)調(diào)用在M3這種沒有硬件除法的內(nèi)核上開銷巨大。優(yōu)化點(diǎn)一在資源允許的情況下將循環(huán)緩沖區(qū)大小設(shè)為2的冪。除法運(yùn)算sum / 8我們用了右移3位 (sum 3) 來(lái)代替。對(duì)于無(wú)符號(hào)數(shù)LSR指令是單周期的而軟件除法庫(kù)函數(shù)可能需要數(shù)十個(gè)周期。優(yōu)化點(diǎn)二用移位代替對(duì)2的冪的乘除。數(shù)據(jù)類型的考量sum是uint32_t而buffer和new_sample是uint16_t。在sum new_sample;時(shí)會(huì)發(fā)生隱式類型提升到32位。這是安全的。但如果sum也用uint16_t在窗口較大時(shí)很容易溢出。編譯器生成的加法指令是32位的ADD。優(yōu)化點(diǎn)三根據(jù)數(shù)據(jù)范圍謹(jǐn)慎選擇數(shù)據(jù)類型避免溢出同時(shí)利用CPU原生字長(zhǎng)32位獲得最佳性能。更極致的優(yōu)化——環(huán)形緩沖區(qū)的指針實(shí)現(xiàn)上面的代碼用索引index訪問數(shù)組每次都要計(jì)算地址。我們可以改用指針循環(huán)uint16_t *ptr buffer[0]; uint16_t *end buffer[FILTER_WINDOW_SIZE]; // 更新時(shí) sum - *ptr; *ptr new_sample; sum new_sample; ptr; if (ptr end) ptr buffer[0];指針遞增 (ptr) 在匯編上就是一條ADD指令比較 (ptr end) 是一條CMP指令可能比索引的求模AND稍慢一點(diǎn)但省去了根據(jù)索引計(jì)算內(nèi)存地址的步驟需要LSL左移1位再加基址。哪種更好需要實(shí)測(cè)。在M3上內(nèi)存訪問通常是指令執(zhí)行中最慢的環(huán)節(jié)減少地址計(jì)算復(fù)雜度可能帶來(lái)收益。這體現(xiàn)了指令級(jí)優(yōu)化必須結(jié)合具體內(nèi)存架構(gòu)來(lái)分析。內(nèi)聯(lián)匯編的用武之地在極端情況下你可能想把整個(gè)熱循環(huán)用內(nèi)聯(lián)匯編重寫。例如確保sum的更新和平均計(jì)算用最少的指令完成。但現(xiàn)代編譯器的優(yōu)化能力非常強(qiáng)手動(dòng)匯編未必能勝過-O2或-Os優(yōu)化下的編譯器。除非你使用了一些編譯器無(wú)法識(shí)別的特殊指令如Cortex-M4的SIMD指令或者對(duì)指令順序和流水線有極其苛刻的要求否則信任編譯器是更明智的選擇。理解指令的意義是為了更好地指導(dǎo)高級(jí)語(yǔ)言編寫讓編譯器有更多優(yōu)化空間而不是盲目地替換為匯編。通過這個(gè)例子你會(huì)發(fā)現(xiàn)對(duì)數(shù)據(jù)處理指令的理解直接轉(zhuǎn)化為了對(duì)算法實(shí)現(xiàn)細(xì)節(jié)的掌控力。你知道每一行C代碼大概會(huì)變成什么指令知道哪些操作昂貴除法、求模非2的冪哪些操作廉價(jià)移位、位與從而在設(shè)計(jì)和編碼階段就做出更優(yōu)的選擇。這才是學(xué)習(xí)指令集的終極目的不是成為匯編程序員而是成為更懂機(jī)器的C程序員。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
日韩精品国模| 国产综合久| baiduhicn.com。| 日韩欧美中文字幕搭讪巨乳美人妻视频| 91无码西班牙视频在线| 亚洲欧美激情另类色图| 天欧美在线| 一区二区三区亚洲| 二对二中文字幕。| 亚洲av无码成电影在线播放| 精品超碰中文在线| 啊啊啊啊免费视频| 99热色精品| 肉丝中文无码高清| 国产精品久久久久久久黄无码| ′ !γ}丶。。久久精品欧美一区二区三区| 亚洲精品一卡二卡三卡福利视频网站 | 婷婷香蕉| 日日骚av| 亚洲色图欧美色图制服丝袜| site:sinbotex.com| 嫩草影院性色| 91人妻久久久久久久久久久久久| 亚洲各类熟们中文字幕| 夜夜嗨免费视频| 日韩亚洲精品一区二区| 啊啊啊不要嗯嗯在线观看| 91精品微拍福利| 国产天天骚| 97国产精品| 日韩AV片| 91 欧美| 日本三级久| 久久一区二区蜜桃| 久久熟女人| 国产精品又黄又猛又粗| 五十路熟女工口| 亚洲一区日韩精品| 久久久久久久久久久久久久久久9| 欧美精品成人一区二区在线观看| 日韩成人午夜精品久久高潮| 俄罗斯一区二区视频在线观看 | 日本中文字幕一区| 国产一区二区三区精品观看啪| 污电影在线观看| 福利在线观看一区二区| 欧美三级偷拍| 青青操97| αⅴ天堂| 成人九九| 日夜啪电影| 国产精品久久久 | 91日日夜夜| 中文字幕aⅴ在线视频| 国产第二页| 国产精品久久久久无码AV会牛| 亚洲综合一| A片 AV一级在线播放观看免费| 青青草五月份天| 女人被添高潮免费视频| 日本孕妇一区二区视频操逼免费看 | 亚洲男人天堂网久久| 天天舔日美女视频| 97看操| 日本成人A片网站| 一区久久久二区| 91性高朝久久久久久久久| 日日夜夜国产综合| 精品一区二区亚洲国产| 中文乱码字幕观看| 91欧美另类| 日韩中文字幕人妻视频| 亚洲欧美综合图片| 91青视频| 欧美成va视频网站| 婷婷色综合欧美日韩| 亚洲免费日韩在线一区二区| 高清无码国产亚洲| 欧美一级AAAAAAA| 日本不卡免费二区| 亚洲五区熟女| 丁香五月天社区| 五月婷婷啪啪| 亚洲情色婷婷五月天| 大香蕉92| 色色亚洲| 色婷婷丁香五月天| 亚洲精品人妻吞精av| 少妇激情一区二区三区视频| 大香蕉啪啪啪啪在线| 久久精品色欧美aⅴ一区二区| 午夜精品久久久久久久第一页按摩| 熟女丝袜视频| 美女被艹尤物视频| 婷婷午夜成人色中色| 日夜精品| 超碰碰激情97+久| 五月开心网| 国产极品美女高潮无套在线观看| 白嫩妹子国产骚| 午夜呻吟欧美| 国产三级日产三级韩国三级| 五月天久久综合网| 91狠狠综合久久| 亚州伊人色综台| 五月天久久综合网| 97AV在线观看| 久操免费电影| 综合久久99亚洲人妻中文在线| 色婷婷五月综合| 天堂69亚洲精品中文字| 天久久久噜噜噜久久国产精品爽爽| a啊啊啊啊啊啊啊啊一区二区| 一个人在线看的黄色电影网站| 91亚洲欧美综合高清在线| 久草色悠悠在线视频| 天天综合AV| 丰满人妻-区二区三区| 熟女网站最新| 色阁阁AV综合网| 9热9热综合网| 日本一区二区电影网站| 天天流夜夜操| 狠狠综合网| 人人干人人搞人人摸| 乱伦a片视频| 91精品91久久久中77777| 99re69| 爱爱动态120秒| 日本三级R| 一级性爱网| 国产97视频| 97超碰中文字幕| 东北老女人的激情视频| 久久国产对白激情浪潮 | 欧美另类色图片| 青青伊人这里只有精品| 色五天伊人| 欧美黑人精品在线播放| 亚洲国产av中文字幕久久| 国内毛片国产欧美拍| 日韩av性爱在线播放| 人人妻人人爱人人玩| 青青草好吊色| 夜夜国产一区| 亚洲蜜臀视频精品久久| 人妻少妇久久| 色综合大香蕉| 亚洲影院成人| 少妇人妻好深太紧了vr91| 少妇被c 黄 免费观看| 男女啪啪啪18禁网站| 97干色| 亚洲色图综合| 国产乱伦性爱区| 三级AV入口| 成人a大片在线观看| 亚洲αv一区二区三区| 最新日产中文在线麻豆| 天操老女人| xxx亚洲午夜天堂| www亚洲免费| 亚洲精品97久久| 亚av顶级裸体一区二区三区四区五区 | 久久久少妇诱惑精品视频| 日韩啪啪网| a片自拍直播视频| 一本精品日本在线视频精品| 日本肉体xxxx裸交| 在线天堂999| 欧美少妇第一页| 日本午夜福利视频| 亚洲 欧美 小说| 久久久久久久久久久人妻| 亚洲宅男天堂| 亚洲精品三区在线观看| 无码人妻一区二区三区色欲aⅴ | 啊灬快c我灬啊灬用力灬啊灬-国产精品性做久久久久久-成人AV | 日本日逼高清| 九九热最新| 国产高清不卡视频| 欧美青青草视频| 东京太热男人的天堂久久久| 高潮毛片无遮挡高清免费| 熟妇操花| 婷婷色香| 欧美性高潮在线| 操婢日韩| 免费黄色片子| 91熟女综合| 欧美淫乱视频| 免费日韩黄片| 色五月综合| 日本淫穴在线| 偷拍盗拍亚洲色图图片 | 一级人妻性爱视频| 亚洲激情在线| 久日91在线| 国产熟女自拍| 国产成人亚洲精品无码最新在线| 另类天堂| 99在线观看| 日本欧美色| 精品视频一二三中文| 国产操逼逼网| 78久久久| 亚洲欧美天堂| A V少妇特黄三级| 人人搡人人肉久久精品| 另类天堂| 色播五月婷婷| 午夜亚洲WWW湿好大| 美女97超碰| 色噜噜国产精品视频一区二区| 长长久久88视频| 9999久久久久| 婷婷99狠狠| 97一区二区三区视频| 啊啊啊免费视频| 免费看欧美美女黄色大片| 亚洲男人的天堂AV| 日本不卡五区| 色色婷| 91久久久老司机| A级国产欧美激情在线| 99视频内射三四| 欧美日韩亚洲电影| 亚洲一区二区三区AV无码| 久久91精品国产9丨久久分亭| 色妺妺在线视频| 2017,超碰| 国产做?爰片久久毛片?片美国| 97超碰亚洲| 东京热双插| 五月丁香激情综合| 老鸭窝在线视频播放| 97人人操人人摸人人爱| 自拍亚洲综合| 日韩不卡在线一区二区| 欧美人妻中出| 操逼无码一区| 久草老司机| 在线观看不卡一区二区三区| 久久色一区| 国产传媒1234区| 日本精品五区| 亚洲18禁| 日本熟妇浓毛hdsex| 97精品国产97久久久| 天天夜夜rb| 99热成人| 久久少妇| 操香逼| 国产精品懂色tv影视免费观看| 欧美|91色综合| 日比av无码| 无码99| 大香蕉综合网| 久久久久久久久久久久久久久性生活视频| 91亚洲影视| 极品五月天噜噜| 99中文字幕| 久久精品免费| 74成人在线| 好爽免费视频,| 国产精品久久成人免费| 久久亚洲一区女同性恋中文字幕| 一区二区你上我| 国产内射爽爽大片| 免费成人在线熟妇网| 黄色区免费观看中文字幕| 亚洲自拍青操视频| 大香樵伊人网| 人人操我人人干| 欧美久久久| 欧美成人性爱视频免费观看| 久久久久白虎| 欧美综合第一| 久久精品性| 欧美91变态| 麻豆区99999| 强奸乱伦Av网| 超碰人人干天天射| 蜜桃中文字日产乱幕4区| 国产黄片精品在线| 欧美碰碰综合色| 啊啊啊啊啊在线观看网址 | 人人摸人人干| 久久草草亚洲蜜桃臀| 色偷偷男人的天堂麻豆| 91一区二区| 黄色片A级一区二区三区| 中文字幕精品久久久久人妻红杏ⅰ| 爱丝福利| 熟女中出视频| 国产免费一区二区在线A片视频| 男人在线天堂| 色男人色天堂东京热| 人妻熟女av国产网站| 97超碰超碰| 日韩丝袜高跟制服在线观看| 又大又白奶子| 懂色AV蜜臀无码精品APP| 国产精品白丝| 超碰在线综合97| 日本一二区免费| 色婷婷九月天天综合| 欧美超碰97| 人妻熟妇久草在线| 国内91熟女人妻丝袜天天精品视频在线| 亚欧免费| 少妇久久久久久| 91国产丝袜美女| 91女在线观看| 五月丁香六月婷| 美女写真| 亚洲男人的天堂va亚洲男人社| 国产精品一区二区在钱播放| 精品国产精品一区二区| 欧美日韩国产另类综合| 欧美色涩| 美女性91| 欧美丝袜亚洲| 蜜桃臀AV在线| 日韩资源网| 91在线综合网| 久久久久久久人妻| 日本性爱少妇| 日本www操操操| 中文字幕蜜乳av| 欧美写真视频一区| 91精品在线播放| 神马久久69| 亚洲 欧美 中文 日韩超碰| 最近的最新的中文字幕视频| 日本五十路熟女一区二区| 日本高清免费一本视频在线观看| 亚洲天堂精品日韩电影| 国产欧美另类久久久精品课程| 无码操逼天堂| 午夜福利在线合集| 九草在线大香蕉| 中文字幕加勒比海高清无码免费视频 | 97视频在线免费看| 最新加勒比丝袜在线| 婷婷中文字幕| 五月婷丁香| 97香蕉碰碰人妻国产欧美| 久久成人午夜精品影院 | 噜噜在线| 播播亚洲小说亚洲| 亚洲第一无码播放立川理惠| 精品国产丝袜一区二区三区乱码| 精品人妻中文字幕4399| 成人日韩3| 欧洲黄色网| 国产美女自拍AV| 91精品人妻偷情| 中国熟女老妇仑乱一区二区三区| 99热| 欧美一区二区三区互相| 狼狼色丁香久久婷婷综合五月| 国产第12页| Av手机版天堂网| 国产精品久久久久久久久久梁医生| 青青在线视频日韩欧美| 男女啪啪啪18禁网站| 中国AAAAAA黄色片| 亚洲最新av无码成人精品区| 成人性爱电影一区二区| 91色综| 久久久999日本大片| 人妻少妇精品一区二区三区| 久久精品欧美一区蜜桃| 九九英色视频| 国产成人精品午夜福利| 97se亚洲| 欧美亚洲激情| 国产野战露脸在线播放| 日操粉逼逼| 综合自拍| 人妻少妇蜜桃视频欧美一区| 大香蕉综合| 成人十八禁日韩欧美一二三| 超碰精品人妻狠狠干| 欧美色图校园春色| 国产精品久久久久久久无码AV| 亚洲男人久久综合天堂| 国产一级操B视频| 熟女乱伦二区| 高清不卡视频| 大香蕉92| 大JI巴好深好爽又大又粗视频| 三久久久四久久久久| 黑人免费福利视频| 思思在线免费视频| 欧美淫穴| 囯产精品强| 日韩欧美传媒一区国产| 日本欧美韩国国产在线| 婬女免费一二三区A片| 欧美日韩高潮喷水91| 久久久久久91香蕉国产| 欧美97免费| 97超碰人人操人人操| 国产区91柔拿会所技师| 爆乳免费黄网站| 日韩 欧美 国产 麻豆| 超碰人妻久久| 粉嫩粉嫩一区性色AV片| 精品国产嫩穴视频| 一区二区亚州激情久婷婷欧美| 97操b| av网站在线观看了| 久久久久久午夜男人的天堂| 欧美日韩另类字幕中文| 男人的天堂2018| 玖玖爱免费观看视频| 日本三级韩三级99久久| 日韩欧美天天爽爽爽天天爽爽| 亚洲情色视频| 不卡啪啪视频| 国产熟女精品区| 亚洲一区二区AV| 99性爱在线观看| 欧美一区二区情色| 欧美综合综合| 精品一啪| 91九九九小逼| 超碰97日韩| 99国产在线 精品 视频| 日韩中文字幕熟妇人妻| 久久久无码精品人妻二区| 欧美黄业| 久久久久久日韩| www.狠狠操| 操美女人妻| 日韩欧美~中文字| a级免费在线观看| 高跟丝袜AV专区国产| 久久黄黄| 中文字幕人妻丝袜乱一区三区| 日韩性爱啪啪视频| 久久久97| 日韩欧美中文字| 色欧美综合| 99啪啪视频| 91九色丰满高潮| 2019天天干天天操| 99re69| 色综合av综合久久| 夂久色| av2014 日韩在线中文字幕| 国产成人午夜视频网址| 区二区亚洲婷| 久操操AV电影| 粉嫩少妇自慰在线| 国产一级高清免费观看| 亚洲国产日韩欧美熟妇在线| 长久操视频| 97免费视频在线| 日韩性爱再线视频| 蜜桃视频一区二区三区| av毛片aaaaa免费看| 殴美性色a级欧美| 性高潮久久久| 色色色网站| 一本色道熟妇| 丝袜 亚洲 偷拍| 亚洲狠| 中文字幕黑人大片| 凹凸精品熟女在线观看| 青青爽| 91香蕉国产尤物视频| 99亚亚热| 国产隔壁老王影院在线| h色99999| 亚洲风情在线观看| 志村玲子视频一区二区| 精品人妻一区二区三区日产乱码| 九九九综合精品| 不卡av免费在线网址| 综合久欧洲| 日韩偷拍一区二区三区| 国桃视频产巨乳精品一区二区在线| 国产精品视频麻豆入口| 亚洲清纯唯美| 国内三级自拍小视频在线观看| 欧美少妇高潮视频| 插入综合网| 日本精品五区| 麻豆 亚洲 97| 国产精品成人蜜臀AV在线| 国产视频第2页| 囯产操逼片| 激情在线青青操| 少妇诱惑视频| 久久久无码av精| 欧美成97爱| 国产天美欧美| 最新中文字幕精品在线| 偷拍视频青青草在线视频| 人妻久热在线| 欧美经典一区二区三区| julia国产在线 | 天美传媒Av在线| 日韩,欧美,中文在线| 超碰人人干天天射| AV丝袜少妇| 久久久 国产精品| 青青草中文字幕| 嗯嗯啊好大| 婷婷啪啪| 家庭乱伦网站国产| 啊啊啊好想要| 综合激情一一91| 欧美亚洲国内自拍| α√在线| 亚洲网站一区二区在线| 超碰视97中文| 中文字幕少妇色| 竹菊影视国产一区二区| 乱性AV| 久久综合av| 亚洲中文字幕三级在线| 久久黄人人爽视频| 久草新免费| JIZZJIZZ国产精品喷水| 精精品人妻一区二区三区| 伊人国产av| 老熟女乱子伦中文字幕一区二区| 在线观看啊啊啊啊啊| 久热伊人99re| 370p日韩欧美亚洲精品| 久久噜噜噜精品国产亚洲综合| 骚乳在线| 99爱爱| 欧美黄色大片在线观看 | 亚洲成人激情小说视频| 精品无码一区二区三区| 国产精品视频| 欧美少妇一区二区三区| 中文字幕在线观看视频www| 国产精品久久久久久照片| 九九九九精品| 易易A毛视频| 97视频在线视频| 精品十三区| 色哟哟的毛片| 色色激情五月天| 欧美大香蕉专区网| 亚洲精品国产专区在线观看| 日韩欧美性吧婷婷乱伦大香蕉| 欧美少妇高潮视频| 天天干1区2区在线| 欧美在线伊人色| 亚洲免费成人在线高清无码视频| 色吧5亚洲| 天天久久久久久| 9997se| 欧美78p| 狠狠狠狠狠| 久久精视频美日韩在线视频| 亚洲素人综合| 91电影色诱| 久久久精品电影| 91老熟女| 久久久久日本视| 午夜毛片亚洲精品片国产久久久| 美女上床网站| 精人妻无码一区二区三区伊人直播 | 曰韩少妇无码| 小骚逼被操的爽不爽| 亚洲永久永久永久永久一级一级一级精品| 国产亚洲 中文欧美久久| 亚洲色色色| 二色av| 久久久A∨| 亚洲精品乱码久久久久久蜜桃麻豆| 丰满人妻被猛烈进入中| 成人性交免费视频| 91视频女生| 日韩欧美天天爽爽爽天天爽爽| 日本最新免费韩国1区2区视频播放| 欧洲亚洲人妻无码中字久久三区四区| 91伊人大香蕉| 久久超碰98| 国产精品国产| 中文有码9| 欧美日韩久久精品爱爱| 国产1024在线播放| 岛国A V在线免费看| 久久受www免费人成| 国产一区二区免费福利片| 啪啪啪精品| 亚洲无吗在线视频| 99精品久久久久久久婷婷蜜桃| 亚洲啪啪性视频| 91oumei| 中文字幕精品丝袜| 丝袜美女诱惑 91 视频| 伊人久大| 久久久97| 久操com| 亚洲欧美国产其他二区| 丝袜美腿诱惑亚洲欧美视频在线观看 | 91在线免费精品视频| 免费久久一级毛片大黄| 人人妻人射| 97色婷| sss视频华人在线| 啊啊啊啊二区好大| 91在线丝袜| 亚洲图片小说欧洲| 欧亚无码视频| 3p国产色噜噜一区| 操穴国产| 91老熟女91老女人| 张柏芝国产一区在线观看| 国产精品女生av| 色综合九九| 天堂国产AV| 人妻激情在线视频| 97色操| 蜜臀久久99精品久久久久| 五十路六十路素人熟女| 在线观看亚洲专区| 国产伦精品免编号公布| 青青操视频在线| 中文字幕乱码在线| 久久黄片国产一区二区| 国产伦精品一区二区三区在线观| 久久人妻97久久久久久久| 日本精品一区二区三| 囯产精品久久久久久久久久二区三区| 免费一级特黄特色大片在线观看看| 久9热| 亚洲大胆人体av| 美女啊啊啊啊啊| 成人aⅴ一区二区三区| 黄色AV影视| 97少妇人妻中文字幕久久| 97亚洲精品超碰| 秋霞免费AV| 女优视频第10页| 人人超碰在线观看黄| 97久久超碰亚洲| 欧美牲| www欧美性爱| 怡红院怡春院| 另类欧美综合| 色情乱伦AV| 亚州乱码中文字幕综合久久久| 欧美激情精品久久久久久| 95自拍视频在线观看| 天堂九九九九九九九九九| 天天性射网| 国产精品一区二区校花| 欧美综合色站| 蜜臀视频网站| 天堂种子在线www网资源| 久久9 9 9精品| sewuyueav| 国产一区二区欧美日本| SUV一区二区在线看| 免费看黄片现成| 久久精品视频久久久| 在线看污网站| 免费视频a级毛片免费视频| 超碰无码五月97| 五月婷婷丁香六月丁香| 精品一区96| 俄罗斯及免费在线看| 伊人亚洲国产一成人久久精品,久久| 天天搞欧美| 亚洲人妻中文高清| 天美传媒av在线| 国产女人与拘做受视频免费| 蜜臀AV成人精品蜜臀| 干我久操| 久久久婷| 国产亚洲深夜激情| 91夜夜蜜桃臀1区2区3区| 神马九九| 国产天美欧美| 国产 日韩,欧美 自拍| 91neishe| 中文字幕99999| 青青草日本无码| 亚洲91在线| WWW4虎| 中文字幕欧美精品亚洲日韩蜜臀| 亚洲第一狼人丝袜美女另类| 久艹伊人精品综合在线| 91情色| 日本特黄f c2| 天天草天天日| 日本一片一区| 久久亚洲欧美中文字幕国语| 中文字幕人乱码中文字的预防方法| 高潮的A片激情扒开一区| 一级片在线观看高清无码| 人人澡综合涩| 操逼操逼视频操逼| 欧美在线|亚洲| 国产版a级片直播在线| 国产一区二区在线看| 婷婷在线视频| 秋霞Av理论一级在线| 少妇与黑人高潮在线| 吖在线不卡一区二区国产剧情| 欧美78| 岛国艾薇凹凸视频天堂| 免费视频观看60秒| 热天堂一区二区| 成人av福利在线观看| 欧洲精品一二三在线| 能直接看AV的网站| 97免费在线观看视频| 色色热| 少妇熟女1区2区3区| 欧美性爱网97| 国内三级自拍小视频在线观看| 综合第一页| 日日橹狠狠爱欧美超碰| 操逼视频免费日韩无码| 久久久久久久唑| 热久久91婷婷| 国产在线视频午夜精华在| 色婷婷久久综合超碰| 中文字幕在线观看永久| 美女十八禁| 人妻精品4K4K4K4K4| 十八禁的黄污污免费网站| 91痴汉| 欧美日日夜夜| 激情综合二| 啊啊啊啊啊在线| 久偷拍欧美日韩三区| 亚洲免费看片| 久久只有精品| 国产九九九九九九| 女人妻一区| 精品毛片久久久精品毛片| 日韩一二三区| 精品成人女人久久| 激情99| 国产一区二区成人av在线播放| 乱色老一区二区三区的观看方式 | 亚洲精品无码成人久久久99| 欧美色性情| 欧洲与亚洲欧美精品中文字幕| 97av在线视频| 小视频玖玖| 久久风骚城市| 校园春色亚洲欧洲| 五月丁香婷婷啪啪| 精品制服美女中文一区二区三区| 欧洲综合视频| 女人被添高潮免费视频| 手机午夜电影神马久久| 夜夜欧美| 91女优在线观看| 欧美爆操91| 天天干天天狼在线视频| 亚洲精品自拍| 超碰97COm中文| 久久久久密臀视频| 人妻一区二区三区| 婷婷五月天_亚洲小说欧美激情另类_精品久久国产字幕 | 中文字幕 国产 精品| 第四色奇米影视777| 日本天天干天天操一区| 人妻色情天天操| 久草在| 67194无码不卡| 五月天丁香| 久久久久久AV无码免费网站| 中文字幕精品一区欧美| 精品久久久av无码免费| 日韩91网站| 久久婷婷苹果| 俺也射| 日韩资源网| 一道本久久棕合爱| 久久香蕉国产线看观看猫咪av| 久久男人精品| 手机在线免费看的av| 97免费在线| 免费视频一二三区| 网友自拍第1页| 天天射天天色成人| 农村少妇久久久久久久| 97天天插| 91国产丝袜美女| 91色色综合| 制服中出中文人人精品| 亚洲男人的天堂网| 麻豆精品天美| 国产性感骚丝袜在线| 亚洲色堂免费视频| 天天日日舔舔| 大香蕉乱伦视频网| 精品性爱一二三区| 国产精品一区二区 尿失禁| 91三级理论片播放器| 一级特级aaaa毛片免费观看| 亚洲AV无线| 国产操逼逼网| 欧美日韩电影成人在线| 欧美国产欧美在线观看| 国产精品嫩草影院免费| 青娱乐国产盛宴视频| 久久久亚洲高清不打码| 国产欧美日韩精品中文| 一区三区啪啪| 欧美在线干| 激情99| 久久发布国产伦子伦精品| 黄色乱论网站| 久久精品视频28| 欧美影音在线| 亚洲久久东京热一二三四五区视频| 97天天插| 99少妇| 亚洲综合嫩| 97视频一区| 91爱啪| 探花精品 一区二区| a片 xxxx受爽视频| 青草草免费网站av| 国产剧情AV不卡在线观看| 蜜桃无码AV一区二区| 色婷婷狠狠| 中日无幕一二三四区| 熟女中出视频| 97热视频在线观看| 国产白丝网站| 99re免费| 伊人精品久久网站| 操逼视频免费日韩无码| 色色婷婷丁香| 射丝袜高跟鞋99| 品亲网欧美品亲网| 日产精品久久久一区二区| 91精品国产一区三一| 国产AV线| 俺去啦自拍| 国产精品爆乳懂色蜜乳| 亚洲中文字幕久久人妻| 亚洲图片偷拍视频区| 国产蜜臀精品一区免费尤物| 色欲人妻一区二区在线| 久热99999| 老熟女综合| 人人操人人舒服| 免费精品福利在线观看| 极品粉嫩一区二区| 东方亚洲在线操逼天堂| 人妻少妇精品视频一区二区三区| 人人妻碰人人免费| 福利在线黄片| 日本少妇va7777| 97视频7| 亚洲啪啪啪啪视香蕉| 欧美日韩色| 久久久亚洲| 午夜福利精品| 99超级碰免费视频| 玖玖综合色| 大香蕉99re| 亚洲日韩资源| 国产乱伦搜索结果91P| 人人操人人叉人人插人人| 国产欧美伊人| 91黑丝操| 26uuu久久| 久99热| 欧亚成人在线视频| 超碰97亚洲| 自拍大香蕉乱插| 久久综合中文国产| 欧美午夜熟妇黑人精品91| av无线看| 超AV色女| 99精品在线| 久久精品国产亚洲妲己影视| 丁香婷婷啪啪| 日韩不卡一二三四| 一级性爱视频免费观看| 丁香五月婷婷啪啪| 小草av不卡亚洲二区| 亚洲欧美电影| 在线国产探花| 九九九九九九视频| 无遮挡又黄又刺激的视频| 91操人视频| 91丝袜在线视频| 国产肏逼网站| 日韩三级久久久| 9美女超碰在线免费观看| 欧美日韩不卡a片| 麻豆国产av网| 亚洲欧美人妻| 大香蕉啪啪网| 91超碰丝袜制服| 亚洲高清视频在线免费观看| 婷婷色中文字幕| 欧美综合传媒| 日韩色| 在线综合 亚洲 欧美中文字幕 | 国产一区二区在线播放,久久亚洲精品中文字幕第一区,亚洲精品在线中文字幕视频 | 色噜噜国产精品视频一区二区| 亚洲一区二区三区四区视频| 97伪v| 操逼天美3区| 天天干一区二区| 蜜臀久久99精品久久久久| 五月婷婷深深爱| 久久精品中文字幕女同| 欧美亚洲尤物久久| 九区国产| 26uuu性| 偷拍亚洲高清图片| 熟女乱3伦999| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 操屄不卡视频| 人妻少妇久久中文| 亚洲最新a在线观看| 国产久久久久影院老熟女| 免费一级特黄特色大片在线观看看| 精品人妻视频一区二区三区蜜桃视频| 国产无码久久高清| 一区麻豆 高清中文字幕| 亚洲麻豆av一区二区| 天堂日本亚洲欧美| 99亚洲国产精品色一区二区三区| 91美腿丝袜在线观看| 成人精品电影| 韩美日操逼| www.高清无码诱惑一区.com | 色婷婷丁香五月| 久热最新在线杭州| 玖玖97综合 | 久久久久久亚洲Av无码| 国产AV天美| 精品国产91av一区二区三区 | 操国产逼| 久久久久9999妇女| 天堂俺去俺来也www久久婷婷| 国产亚洲精品美女| 人人干黄色| 少妇专区一二三四五| 一个色导综合| 亚洲精品一区二区免费在线观看| 91人妻中文| 熟女熟妇一区二区三区视频| 九九碰九九爱97超碰| 老熟女网站| 麻豆福利视频导航| 久久精品国产亚洲AV嘿嘿| 后入式五六区| 婷婷五月天丁香花| 男人天堂东京热| 国产精品久久久久久夜夜夜| 亚洲图片激情综合另类| 尤物视频网 刘玥| 色色五月婷| 视频一区二区免费在线| 熟女AV一区| 丁香九月激情| 国内毛片欧美香蕉精品| 超碰地址97| 视频分类 国内精品| 国产精品网址| 日韩精品第3页| 亚洲av乱伦色图网站| 国产9区| 欧美青青视频| 久久大香蕉| 亚洲国产精品久久AV| 国产综合久久久鬼色| 2019久久久久久久久福利| 啊啊啊好大好深| 少妇六月天| 欧美性爱精品一区二区| 激情一区二区| 青青草色插素人| 精品超碰国产| 青娱乐福利99| 免费男人的天堂| 91色艳| 亚一综合久久久久久久久久| 色香天天| 少妇精品久久久| 亚洲色图超碰在线| 亚洲AV成人无码一二三久久| 丝袜美腿操av| 国产盗摄美女如厕大神作品在线观看| 久久精品三级影视| 日B操| 97精品国产精品免费观看| 99综合免费视频| 翔田千里AⅤHD无码| 97在线视频免费看| 伊人991| 亚洲无码久久久久久久| 精品免费视频国产一区| 日韩无码服务区| 欧亚不卡| 欧美少妇熟女| 欧美人人AAA| 17c在线成人免费A片观看| 蜜乳av一区二区三区| 亚洲精品一区二区三区新线路| 熟女人妇一区二区三区| 国产精品一区二区a| 日韩欧视频| 欧美色图人妻| 精品国产一区二区三区久久久蜜臀| 亚洲中文一区二区三区视频| 成 人片 黄色大片| 狠狠爱大香蕉| 色与欲影视天天看综合网| 久久久久网站-538在线视频-欧美永久乱码 | 操国产逼| 舔足天天操天天射| 欧美日韩大陆黑人少妇99| 最新加勒比丝袜在线| 婷婷久草| 强奸乱伦大香蕉网| 日韩三A大片在线观看| 91精品人| 97色色色| 欧美性爱一区二区三区| 人人操天天爽| 天美AV片| av天堂影视中文在字幕在线中文 | 国产精品爆乳懂色蜜乳| 人人操人人摸超碰| 久久综合av| 亚洲欧美日产国产91毛片| 天天影视激情欧美| 男人天堂.AB| 国产一区二区a毛片| 99久久精品无码一区二区毛片免费 | 婷婷中文网| 嫩草影院在线观看精品 | 九月丁香婷婷色| 午夜福利1区2区3区| 婷婷超| 超碰97护士| 国产精品剧情| 亚洲黑人在线| 色五月AV| 欧美中文字幕精品人妻| 麻豆天美一区二区| 91成人无码| 国产精品久久泡妞网站| 国产精品噜噜噜日日日| 在线欧美亚洲| 九九九九九九九九九国产精品 | 成人网欧美风情| 亚洲限制级在线| a级理论午夜日本| 欧亚性爱视频免费看| 手机看片1024你懂的国产| 爱av免费| 国产精品亚洲一区二区三区四区| 国产日本久久免费精品| 日韩av一级黄片| 天天躁日日躁AAAXX| 99久久久久| 九九综合| 乱日视频| 亚洲欧洲小说图片视频| 精品人妻夜夜草| 天美传媒Av在线| 久久久人体| 免费看污网址| 国产熟女高潮一区二区三区| 色亚洲欧美| 超碰97COm中文| 国产女同在线观看视频| 91色人妻| 久草免费福利在线播放| 国产在线视视频有精品| 91久久婷婷| 91N五十路| 中文字幕在线观看AV| 亚洲国产精品久久久久婷婷青年| 国产传媒美日韩av| 99re99视频在线免费观看| 伊人在线大香蕉视频久久| 亚洲美女高潮喷水视频| 免费试看60秒| 亚洲欧美在线观看无码| 无码乱人伦中文视频| 亚洲色五月| 久久熟妇五十路一区| 极品AV网站在线观看| 東南亚性呦成人伦理资源在线视频| 中文字幕一区二区三区50路| 久久的免费性爱视频| 日韩亚洲中文字幕在线| AAA久久| 四虎AV在线观看| 六六久久日韩不卡| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 中文字幕99999| 国产最新小视频在线播放下载 | 久久综合中文国产| 久久少妇视频| 九九九九九九精品| 色哟哟AⅤ| 免费的黄片wwwwww| 视频在线观看一二三区| 人妻人妻天天碰| 国产精品播放| 色色色色日本| 狠狠狠狠狠干| 欧美亚洲美少妇一区二区| 五月天婷婷社区| 欧美一级美片在线观看免费| 久久久成人国产精品无码| 韩国轻伦国内自拍一区| yy少妇精品久久| 91夜色| 91人妻Pr| 97超碰色屌| 四虎在线视频| 中日亚韩免费视频| 激情久久av一区av二区av| 青青草视频在线观看一区二区| 992视频一区| 午夜福利在线合集| 色妹子A V| 91模特在线观看| 亚洲一区二区三区中文字幕| 日韩97超碰中文字幕| 久久久久斤小| 级做a爱无码性色永久免费| 啪啪啪大香蕉| 人妻黑丝袜电影| WWW.操逼.COM| 欧美日韩99| 久久精品中文字幕女同| 日韩精品一二三四| 欧美毛片在线网| 国产自产22区| 激情小说图片亚洲首页| 超碰精品在线| 亚洲综合性网址| 日韩精品字幕| 噜噜在线| 亚洲日本大香蕉1| 超碰在线人妻中文字幕| 人妻中文在线| 碰人碰碰人人开房人肉| 欧美人与动性人交a|