在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

汽車電子行業(yè)的MISRA C標(biāo)準(zhǔn)解讀

嵌入式開發(fā)愛好者 ? 來源:嵌入式開發(fā)愛好者 ? 2024-01-17 11:03 ? 次閱讀

前言

之前分享了一些編程規(guī)范相關(guān)的文章,有位讀者提到了汽車電子行業(yè)的MISRA C標(biāo)準(zhǔn),說這個(gè)很不錯(cuò)。

本次給大家找來了一篇汽車電子行業(yè)的MISRA C標(biāo)準(zhǔn)的文章一同學(xué)習(xí)下。

什么是MISRA?

MISRA(The Motor Industry Software Reliability Association),中文名稱為汽車工業(yè)軟件可靠性聯(lián)會(huì),是英國的一個(gè)跨國汽車工業(yè)協(xié)會(huì),其成員包括了大部分歐美汽車生產(chǎn)商。

其核心使命是為汽車工業(yè)提供服務(wù)和協(xié)助,幫助廠方開發(fā)安全的、高可靠性的嵌入式軟件。MISRA C則是由MISRA提出的針對(duì)嵌入式C語言開發(fā)標(biāo)準(zhǔn),目的是提高嵌入式系統(tǒng)的安全性、可讀性和可移植性。

MISRA C一開始主要是針對(duì)汽車產(chǎn)業(yè),后面他產(chǎn)業(yè)也逐漸開始使用MISRA C,包括航天、電信、國防、醫(yī)療設(shè)備、鐵路等領(lǐng)域中都已有廠商使用MISRA C。通常認(rèn)為,如果能夠完全遵守這些標(biāo)準(zhǔn),則該嵌入式C代碼就是易讀、可靠、可移植和易于維護(hù)的。

因此,很多嵌入式開發(fā)者都以MISRA C來衡量自己的編碼風(fēng)格,比如著名的uC/OS就稱自己99%的代碼遵循MISRA C編碼規(guī)范標(biāo)準(zhǔn)。

因此,作為嵌入式開發(fā)者,不論哪個(gè)行業(yè),都應(yīng)以產(chǎn)品安全性為前提,保證可靠性、可讀性、可移植性,也就是保證自身代碼盡可能符合MISRA C。

MISRA C應(yīng)用在越來越多領(lǐng)域,作為嵌入式開發(fā)者,編碼過程規(guī)范應(yīng)該盡可能遵循MISRA C規(guī)則,但也分特殊情況,有的時(shí)候?yàn)榱藝?yán)格按規(guī)范做可能會(huì)嚴(yán)重提高工作量或者降低系統(tǒng)性能,此時(shí)需要衡量一個(gè)平衡點(diǎn)。

關(guān)于MISRA C,本人的幾點(diǎn)體會(huì)。

1)編碼過程盡可能遵循MISRA C規(guī)范,提高代碼可靠性、可讀性、可移植。可靠性(穩(wěn)定性)是前提,可讀性、可移植是衡量一個(gè)程序員編碼水平的因素之一。

特別是對(duì)于嵌入式程序員,與硬件相關(guān)的編程,考慮到成本、供應(yīng)鏈等問題,硬件可能會(huì)經(jīng)常變動(dòng)或者需要兼容多種硬件,此時(shí),可移植性就體現(xiàn)出優(yōu)勢(shì)了,大大減少重復(fù)的編碼工作。

2)特殊情況下,是可以打破規(guī)則的。比如,其中禁止使用goto語句,也是相關(guān)標(biāo)準(zhǔn)要求禁止的。有些時(shí)候是可以使用的,而且使用其他會(huì)使得程序邏輯更清晰。但,如果“特殊情況”出現(xiàn)非常頻繁,那就得考慮自身的程序架構(gòu)是否合理了。

3)可以借助一些工具進(jìn)行MISRA C檢查。如IAR中,就有支持MISRA C規(guī)則檢查。以下為MISRA C 2004規(guī)范標(biāo)準(zhǔn)。

環(huán)境

規(guī)則1.1(強(qiáng)制):所有的代碼應(yīng)該遵守 ISO 9899:1990“Programming Language C”

規(guī)則1.2(強(qiáng)制):只有當(dāng)具備統(tǒng)一接口的目標(biāo)代碼的時(shí)候才可以采用多種編譯器和語言。

規(guī)則1.4(強(qiáng)制):檢查編譯器 / 連接器以確保支持 31 一個(gè)有效字符,支持大小寫敏感。

語言擴(kuò)展

Rule 2.1(強(qiáng)制):匯編語言應(yīng)該封裝起來并且隔離。

例如:#define NOP asm( “NOP”)

規(guī)則2.2(強(qiáng)制):源代碼只能采用 /* … * /風(fēng)格的注釋。

規(guī)則2.3(強(qiáng)制):字符序列 /* 不能在注釋中使用。

注: C 語言不支持注釋的嵌套即使一些編譯器支持這個(gè)語言擴(kuò)展。

規(guī)則2.4(建議):代碼段不能注釋掉。

注:應(yīng)采用 #if 或者#ifdef 來構(gòu)成一個(gè)注釋,否則代碼里如果有注釋會(huì)改變代碼的作用。

文檔化

規(guī)則3.3(建議):編譯器對(duì)于整數(shù)除法運(yùn)算的實(shí)施應(yīng)該寫入文檔。

例:

-5/3=-1余-2有些編譯器結(jié)果是-2于+1。

字符集

規(guī)則4.1(強(qiáng)制):只能使用 ISO 標(biāo)準(zhǔn)定義的字符集。

標(biāo)識(shí)符

規(guī)則6.5 (強(qiáng)制):在內(nèi)部范圍的標(biāo)識(shí)符不能和外部的標(biāo)識(shí)符用同樣的名字,因?yàn)闀?huì)隱藏那個(gè)標(biāo)識(shí)符。例:

int16_ti:
voidf()
{
int16_ti;
i=3;
}

規(guī)則5.2(強(qiáng)制):typedef 名稱只能唯一,不能重復(fù)定義。

規(guī)則5.4(強(qiáng)制):標(biāo)記名應(yīng)該是唯一的標(biāo)識(shí)符。

規(guī)則5.7(建議):標(biāo)識(shí)符不能重復(fù)使用。

類型

規(guī)則6.1(強(qiáng)制):char 類型只能用來存儲(chǔ)使用字符。

規(guī)則6.2(強(qiáng)制):signed 和 unsigned char 只能用來存儲(chǔ)和使用數(shù)據(jù)值.

規(guī)則6.3(建議):對(duì)于基本數(shù)據(jù)類型,必須使用typedef顯式標(biāo)識(shí)出數(shù)據(jù)長度。

例:

typedefsignedcharint8_t;
typedefunsignedintuint16_t;

約束

規(guī)則7.1(強(qiáng)制):禁止使用八進(jìn)制數(shù)(0除外)或者八進(jìn)制轉(zhuǎn)義字符。

注:整型常數(shù)以 0開始會(huì)被認(rèn)為是八進(jìn)制。例:

code[1]=109
code[2]=100
code[3]=052

如果是對(duì)總線消息初始化,會(huì)有危險(xiǎn)。

聲明和定義

規(guī)則8.1(強(qiáng)制):函數(shù)都應(yīng)該有原型聲明,且相對(duì)函數(shù)定義和調(diào)用可見。

規(guī)則8.2(強(qiáng)制):無論何時(shí)一個(gè)對(duì)象和函數(shù)聲明或者定義,它的類型應(yīng)該明確聲明 。

規(guī)則8.3(強(qiáng)制):函數(shù)聲明中的參數(shù)類型應(yīng)該和定義中的類型一致。

規(guī)則8.4(強(qiáng)制):如果對(duì)象或函數(shù)被聲明了多次,那么它們的類型應(yīng)該是兼容的。

規(guī)則8.5(強(qiáng)制):頭文件中不應(yīng)定義對(duì)象或者函數(shù)。

規(guī)則8.6(強(qiáng)制):函數(shù)應(yīng)該聲明為具有文件作用域。

規(guī)則8.7(強(qiáng)制):如果對(duì)象的訪問只是在單一的函數(shù)中,那么對(duì)象應(yīng)該在塊范圍內(nèi)聲明。

規(guī)則8.8(強(qiáng)制):外部變量或者函數(shù)只能聲明在一個(gè)文件中。

規(guī)則8.9(強(qiáng)制):具有外部鏈接的標(biāo)識(shí)符應(yīng)該具有準(zhǔn)確的外部定義。

規(guī)則8.10(強(qiáng)制):在文件范圍內(nèi)聲明和定義的所有對(duì)象或函數(shù)具有內(nèi)部鏈接,除非是在需要外部鏈接的情況下。

規(guī)則8.11(強(qiáng)制):static存儲(chǔ)類標(biāo)識(shí)符應(yīng)該用于具有內(nèi)部鏈接對(duì)象和函數(shù)的定義和聲明。

規(guī)則8.12(強(qiáng)制):數(shù)組聲明為外部,應(yīng)該明確聲明大小或者直接初始化確定。

初始化

規(guī)則9.1(強(qiáng)制):所有變量在使用之前都應(yīng)該賦值。

規(guī)則9.2(強(qiáng)制):應(yīng)該使用大括號(hào)一指示和匹配數(shù)組和結(jié)構(gòu)的非零初始化構(gòu)造。

規(guī)則9.3(強(qiáng)制):在枚舉列表中,”=“不能顯式用于除首元素之外的元素上,除非所有的元素都是顯式初始化的。

數(shù)學(xué)類型轉(zhuǎn)換(隱式)

規(guī)則10.1(強(qiáng)制):整型表達(dá)式不要隱式轉(zhuǎn)換為其他類型。

1)轉(zhuǎn)換到更大的整型。

2)表達(dá)式太復(fù)雜。

3)表達(dá)式不是常數(shù)是一個(gè)函數(shù)。

4)表達(dá)式不是一個(gè)常數(shù)是一個(gè)返回表達(dá)式。

規(guī)則10.2(強(qiáng)制):浮點(diǎn)數(shù)表達(dá)式不要隱式轉(zhuǎn)換為其他類型。

1)轉(zhuǎn)換到更大的浮點(diǎn)數(shù)。

2)表達(dá)式太復(fù)雜。

3)表達(dá)式是一個(gè)函數(shù)。

4)表達(dá)式是一個(gè)返回表達(dá)式。

數(shù)學(xué)類型轉(zhuǎn)換(明確)

規(guī)則10.3(強(qiáng)制):整型表達(dá)式的值只能轉(zhuǎn)換到更窄小且是同樣符號(hào)類型的表達(dá)式。

規(guī)則10.4(強(qiáng)制):浮點(diǎn)表達(dá)式的值只能轉(zhuǎn)換到更窄小的浮點(diǎn)表達(dá)式。

規(guī)則10.5(強(qiáng)制):如果位運(yùn)算~和<<應(yīng)用在基本類型為unsigned char 或unsigned short的操作數(shù),結(jié)果應(yīng)該立即強(qiáng)制轉(zhuǎn)換為預(yù)期操作數(shù)的基本類型。例:

uint8_ta=0x5a;
uint8_tb;
b=((uint8_t)(~a))>>4;

數(shù)學(xué)類型轉(zhuǎn)換

規(guī)則10.6(強(qiáng)制):所有的 unsigned 類型都應(yīng)該有后綴“U”。

規(guī)則11.1(強(qiáng)制):指針不能轉(zhuǎn)換為函數(shù)或者整型以外的其他類型。

表達(dá)式

規(guī)則12.2(強(qiáng)制):表達(dá)式的值應(yīng)和標(biāo)準(zhǔn)允許的評(píng)估順序一致。例:

x=b[i]+i++;

不同的編譯器給出的結(jié)果不一樣,b[i] 是否先執(zhí)行?應(yīng):x=b[i]; i++; 比如:

x=func(i++,i);

規(guī)則12.3(強(qiáng)制):sizeof 操作符不能用在包含邊界作用(side effect) 的表達(dá)式上。例:

int32_t=i;
int32_t=j;
j=sizeof(i=1234);

表達(dá)式并沒有執(zhí)行,只是得到表達(dá)式類型int的size。

規(guī)則12.4(強(qiáng)制):邏輯操作符 && 或者||右邊不能包含邊界作用 (side effect)。

例:

if(ishight)&&(x==i++))

如果 ishight =0 那么 i++不會(huì)評(píng)估

規(guī)則12.5(建議):++和- - 不能和其他表達(dá)式用在一個(gè)表達(dá)式中。

例:

u8a=++u8b+u8c–;

控制語句表達(dá)式

規(guī)則13.1(強(qiáng)制):賦值語句不能用在一個(gè)產(chǎn)生布爾值的表達(dá)式中。

例:

if((x=y)!=0)…
if(x=y)…

規(guī)則13.3(強(qiáng)制):浮點(diǎn)表達(dá)式不應(yīng)該測(cè)試其是否相等或者不相等。

規(guī)則13.4(強(qiáng)制):for控制表達(dá)式中不要包含任何浮點(diǎn)類型。

規(guī)則13.6(強(qiáng)制):數(shù)字變量作為for循環(huán)的循環(huán)計(jì)數(shù)不要在循環(huán)體內(nèi)部被修改。

例:

flag=1;
for(i=0;(i<5)&&(flag==1);i++)?
{?
????flag=0;?
????i=i+3;?
}?

控制流

規(guī)則14.1(強(qiáng)制):不要有執(zhí)行不到的代碼。

例:

swich(event)
{
case0;
do_wakeup();
break;
do_more();
…
}

規(guī)則14.4(強(qiáng)制) :goto 語句不能使用。

規(guī)則14.5(強(qiáng)制):continue 不能使用。

規(guī)則14.6(強(qiáng)制):函數(shù)應(yīng)在函數(shù)結(jié)束有一個(gè)出口。

規(guī)則14.7(強(qiáng)制):witch、while do 、while for 語句體應(yīng)是一個(gè)混合語句。

規(guī)則14.10(強(qiáng)制):所有if else if 結(jié)構(gòu)都應(yīng)該由 else 結(jié)束。

switch(x)
{
uint8_tvar;/*違反*/
case0:
…
}

函數(shù)

規(guī)則16.2(強(qiáng)制):函數(shù)不能直接或者間接的調(diào)用自己。

例:系統(tǒng)不能用遞歸,超出堆??臻g很危險(xiǎn)。

規(guī)則16.8(強(qiáng)制):non-void 類型函數(shù)的所有出口路徑都應(yīng)該有一個(gè)明確的return 語句表達(dá)式。

指針和數(shù)組

規(guī)則17.1(強(qiáng)制):指針的數(shù)學(xué)運(yùn)算只能用在指向數(shù)組的地址上。

規(guī)則17.3(強(qiáng)制):>,>=,<,<= 不能用在指針類型,除非指向同一個(gè)數(shù)組。

規(guī)則17.5(建議):禁止使用 2 級(jí)以上指針。

結(jié)構(gòu)和聯(lián)合

規(guī)則18.4(強(qiáng)制):禁止使用union(共用體)。

預(yù)處理指令

規(guī)則19.1(建議):#include 語句的前面只能有其他預(yù)處理指令和注釋。

規(guī)則19.2(建議):#include 指令中的頭文件名稱不能包含非標(biāo)準(zhǔn)的字符。

規(guī)則19.5(強(qiáng)制):宏不能在函數(shù)體內(nèi)定義。

規(guī)則19.8(強(qiáng)制):類函數(shù)宏調(diào)用時(shí)不能沒有它的參數(shù)。

標(biāo)準(zhǔn)庫

規(guī)則20.1(強(qiáng)制):標(biāo)準(zhǔn)庫中的保留標(biāo)識(shí)符,宏和函數(shù)不能定義,重定義和undefined。

規(guī)則20.4(強(qiáng)制):動(dòng)態(tài)內(nèi)存分配不能使用。

例:不能使用malloc、calloc、free、realloc。

規(guī)則20.9(強(qiáng)制):輸入輸出庫 (stdio.h) 不能用在產(chǎn)生嵌入式系統(tǒng)中。

規(guī)則20.12(強(qiáng)制):時(shí)間處理函數(shù) time.h不能使用。

運(yùn)行時(shí)故障

規(guī)則21.1(強(qiáng)制):通過使用以下手段確保把運(yùn)行時(shí)故障最小化。

1)靜態(tài)分析工具/技術(shù)。

2)動(dòng)態(tài)分析工具/技術(shù)。

3)編寫明確的代碼避免運(yùn)行時(shí)錯(cuò)誤。

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式
    +關(guān)注

    關(guān)注

    5119

    文章

    19397

    瀏覽量

    312179
  • 汽車電子
    +關(guān)注

    關(guān)注

    3031

    文章

    8164

    瀏覽量

    168833
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4868

    瀏覽量

    69902
  • MISRA
    +關(guān)注

    關(guān)注

    0

    文章

    21

    瀏覽量

    7120

原文標(biāo)題:汽車電子行業(yè)的 C 語言編程標(biāo)準(zhǔn)

文章出處:【微信號(hào):嵌入式開發(fā)愛好者,微信公眾號(hào):嵌入式開發(fā)愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    MISRA合規(guī)環(huán)境中控制汽車軟件偏差

      MISRA C 編碼標(biāo)準(zhǔn)是在許多嵌入式環(huán)境及其他環(huán)境中安全和防御性使用 C 的代名詞。由于在 C 語言的限制使用方面既全面又廣泛,控制偏
    的頭像 發(fā)表于 06-15 15:45 ?2826次閱讀
    在<b class='flag-5'>MISRA</b>合規(guī)環(huán)境中控制<b class='flag-5'>汽車</b>軟件偏差

    MISRA C 2012 學(xué)習(xí)資料

    `MISRA C 學(xué)習(xí)資料 `
    發(fā)表于 09-17 14:55

    MISRA-C-2004_工業(yè)標(biāo)準(zhǔn)C編程規(guī)范_中文版

    MISRA-C-2004_工業(yè)標(biāo)準(zhǔn)C編程規(guī)范_中文版
    發(fā)表于 06-13 11:47

    MISRA C編程規(guī)范標(biāo)準(zhǔn)有什么規(guī)則要求?

    如何衡量代碼是否滿足某些標(biāo)準(zhǔn)MISRA C編程規(guī)范標(biāo)準(zhǔn)有什么規(guī)則要求?
    發(fā)表于 04-19 07:20

    分享一份汽車電子行業(yè)C標(biāo)準(zhǔn) 精選資料分享

    關(guān)注+星標(biāo)公眾號(hào),不錯(cuò)過精彩內(nèi)容排版整理 | 嵌入式大雜燴之前給大家分享過MISRA C 相關(guān)的內(nèi)容,今天給大家分享一份汽車電子行業(yè)
    發(fā)表于 07-20 06:34

    軟件編程規(guī)范(MISRA-C)

    MISRA-C是一種汽車制造業(yè)嵌入式C編碼標(biāo)準(zhǔn)。FreeRTOS符合MISRA-C編程規(guī)范,就連大名鼎鼎的uCOS也宣稱基本符合
    發(fā)表于 11-02 18:29 ?27次下載

    MISRA-C-2004_工業(yè)標(biāo)準(zhǔn)C編程規(guī)范_中文版

    MISRA-C-2004_工業(yè)標(biāo)準(zhǔn)C編程規(guī)范_中文版
    發(fā)表于 11-22 19:05 ?0次下載

    汽車電子行業(yè)MISRA C標(biāo)準(zhǔn)分享

    之前給大家分享過 MISRA C 相關(guān)的內(nèi)容,今天給大家分享一份汽車電子行業(yè)MISRA
    的頭像 發(fā)表于 05-11 13:43 ?2011次閱讀

    MISRA編碼標(biāo)準(zhǔn)和靜態(tài)代碼分析儀

    最初,MISRA汽車行業(yè)軟件可靠性協(xié)會(huì))的成立是為了設(shè)計(jì)一套用于道路車輛的微控制器軟件開發(fā)指南。從那時(shí)起,它已被應(yīng)用于每個(gè)可靠性和安全關(guān)鍵領(lǐng)域,包括汽車行業(yè)、醫(yī)療設(shè)備、航空航天和國防等。MI
    的頭像 發(fā)表于 11-25 16:31 ?1204次閱讀
    <b class='flag-5'>MISRA</b>編碼<b class='flag-5'>標(biāo)準(zhǔn)</b>和靜態(tài)代碼分析儀

    MISRA C指南:汽車行業(yè)的游戲規(guī)則改變者

      C編程語言的靈活性伴隨著未定義和不確定行為的權(quán)衡,如果軟件失敗,這些行為可能無法以可預(yù)測(cè)的方式運(yùn)行。為了確保關(guān)鍵嵌入式系統(tǒng)中的軟件安全性和可靠性,汽車行業(yè)軟件可靠性協(xié)會(huì)(MISRA)創(chuàng)建了一套
    的頭像 發(fā)表于 12-05 17:11 ?1265次閱讀

    您需要了解的有關(guān)下一個(gè)MISRA?標(biāo)準(zhǔn)的信息:MISRA C++ 2023?簡介

    MISRA C++:2023?是廣受期待的MISRA C++ ?標(biāo)準(zhǔn)的下一個(gè)版本,將于今年晚些時(shí)候發(fā)布。新版本將整合AUTOSAR
    的頭像 發(fā)表于 08-25 18:06 ?1526次閱讀
    您需要了解的有關(guān)下一個(gè)<b class='flag-5'>MISRA</b>?<b class='flag-5'>標(biāo)準(zhǔn)</b>的信息:<b class='flag-5'>MISRA</b> <b class='flag-5'>C</b>++ 2023?簡介

    Perforce靜態(tài)代碼分析專家解讀MISRA C++:2023?新標(biāo)準(zhǔn):如何安全、高效地使用基于范圍的for循環(huán),防范未定義行

    MISRA C++:2023——MISRA? C++ 標(biāo)準(zhǔn)的下一個(gè)版本來了!為了幫助您了解 MISRA
    的頭像 發(fā)表于 06-18 12:57 ?617次閱讀

    whitepaper-perforce-what-is-misra

    如果您熟悉嵌入式軟件的世界,您可能聽說過安全關(guān)鍵系統(tǒng)的MISRA編碼準(zhǔn)則和合規(guī)性。最初為在汽車嵌入式軟件行業(yè),MISRA C for
    發(fā)表于 08-08 15:54 ?0次下載

    embOS的MISRA-C:2012一致性

    MISRA C汽車工業(yè)軟件可靠性協(xié)會(huì)(MISRA)開發(fā)的一套針對(duì)C編程語言的軟件開發(fā)指南,目的是提升嵌入式系統(tǒng)的安全性和可移植性。2012
    的頭像 發(fā)表于 08-20 11:35 ?709次閱讀

    C2000? MISRA-C策略

    電子發(fā)燒友網(wǎng)站提供《C2000? MISRA-C策略.pdf》資料免費(fèi)下載
    發(fā)表于 10-11 11:43 ?0次下載
    <b class='flag-5'>C</b>2000? <b class='flag-5'>MISRA-C</b>策略
    主站蜘蛛池模板: chinesevideo普通话对白 | 美女被啪到哭网站在线观看 | 亚洲第一成人在线 | 免费伦费一区二区三区四区 | 美女黄色一级毛片 | 日韩亚色 | 国产精品午夜免费观看网站 | 免费在线视频播放 | 国产美女久久久久 | 国模私拍视频在线 | 一区二区视频在线 | 欧美3d动漫网站 | 日本口工禁漫画无遮挡全彩 | 日本a网站| 天天视频免费入口 | 免费国产一区二区三区 | 久久婷婷色 | 浮荡视频在线观看免费 | 四虎永久精品免费网址大全 | 男人的天堂视频网站清风阁 | 免费看黄视频 | 色综合天天综合网看在线影院 | 美女扒开尿口给男人爽的视频 | 天天舔天天色 | 短篇禁伦小说 | 美女视频很黄很暴黄是免费的 | 免费污视频在线 | videofreeones性欧美另类 | 亚洲欧美色中文字幕 | 午夜h| 日本三级免费网站 | 色涩网站在线观看 | 中文在线最新版天堂bt | 男人午夜网站 | 欧美一卡2卡三卡4卡5卡免费观看 | 免费网站看av片 | 亚欧人成精品免费观看 | 日本不卡视频免费的 | 日本国产在线 | 免费网址视频在线看 | 一级特黄色毛片免费看 |