亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? 談談對齊 - c-c++ - embeded linux.htm

?? 講述ARM下的字符數據對齊方式的內容
?? HTM
?? 第 1 頁 / 共 4 頁
字號:
                        short, int, 
                        double等。復合類型由基本類型組成,例如結構。本文將基本類型的變量記作基本變量,將復合類型的變量記作復合變量或結構變量。</P>
                        <P 
                        style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 14px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">基本變量的長度目前有1、2、4、8字節。以后可能會有更大的基本變量。嵌入式環境通常不支持浮點,常見的長度是1、2、4字節。</P>
                        <H4 
                        style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">0.2.2 
                        變量的地址</H4>
                        <P 
                        style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 14px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">從地址看,變量可以分成有確定地址的變量和沒有確定地址的變量。所謂“有確定地址”就是指在程序運行前就有確定的地址。而“沒有確定地址”的變量,它們的地址是在運行時確定的。</P>
                        <P 
                        style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 14px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">全局變量和靜態變量都有確定地址。局部變量和動態分配的變量沒有確定地址。本文將有確定地址的變量記作有址變量。</P>
                        <H2 
                        style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">1 
                        變量對齊</H2>
                        <H3 
                        style="BORDER-RIGHT: rgb(204,204,204) 1px dotted; PADDING-RIGHT: 0.6em; BORDER-TOP: rgb(204,204,204) 1px dotted; PADDING-LEFT: 0.6em; FONT-SIZE: 12px; PADDING-BOTTOM: 0.6em; MARGIN: 6px 0px 0px; BORDER-LEFT: rgb(204,204,204) 1px dotted; PADDING-TOP: 0.6em; BORDER-BOTTOM: rgb(204,204,204) 1px dotted; FONT-FAMILY: 'Microsoft yahei', verdana, sans-serif">1.1 
                        沒有確定地址的變量</H3>
                        <P 
                        style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 14px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">局部變量是從堆棧分配的,編譯器通常會保證每個局部變量的地址都在4n邊界上。</P>
                        <P 
                        style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 14px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">動態分配的變量是從堆上分配。堆的實現與標準庫和操作系統有關。在一些簡單的嵌入式系統中,我們需要自己實現動態內存分配,這時我們要保證每次分配的內存塊地址都在4n邊界上,以避免后面談到的數據對齊問題。</P>
                        <H3 
                        style="BORDER-RIGHT: rgb(204,204,204) 1px dotted; PADDING-RIGHT: 0.6em; BORDER-TOP: rgb(204,204,204) 1px dotted; PADDING-LEFT: 0.6em; FONT-SIZE: 12px; PADDING-BOTTOM: 0.6em; MARGIN: 6px 0px 0px; BORDER-LEFT: rgb(204,204,204) 1px dotted; PADDING-TOP: 0.6em; BORDER-BOTTOM: rgb(204,204,204) 1px dotted; FONT-FAMILY: 'Microsoft yahei', verdana, sans-serif">1.2 
                        有確定地址的變量</H3>
                        <P 
                        style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 14px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">有址變量的地址是在鏈接時確定的。編譯器通常有設置變量對齊方式的編譯選項,我們通常使用該選項的默認值。在默認情況下,編譯器會按照默認方式對齊放置有址變量。</P>
                        <P 
                        style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 14px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">所謂按“按默認方式對齊”,就是將長度為1的基本變量放在1n邊界上。將長度為2的基本變量放在2n邊界上。將長度為4的基本變量放在4n邊界上,依此類推。</P>
                        <P 
                        style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 14px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">每個結構變量總是由一個個基本變量構成。結構變量按照該結構中最長的基本變量對齊。如果某個結構基本變量的最大長度是1,編譯器就可以把這個結構放在1n邊界上。如果某個結構基本變量的最大長度是4,編譯器就應該把這個結構放在4n邊界上。</P>
                        <P 
                        style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 14px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">那么結構中的成員變量又是怎樣對齊的?</P>
                        <P 
                        style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 14px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px"><SPAN 
                        class=Apple-style-span style="FONT-SIZE: 14px"><SPAN 
                        class=Apple-style-span 
                        style="FONT-SIZE: 12px; LINE-HEIGHT: 18px">
                        <H3 
                        style="BORDER-RIGHT: rgb(204,204,204) 1px dotted; PADDING-RIGHT: 0.6em; BORDER-TOP: rgb(204,204,204) 1px dotted; PADDING-LEFT: 0.6em; FONT-SIZE: 12px; PADDING-BOTTOM: 0.6em; MARGIN: 6px 0px 0px; BORDER-LEFT: rgb(204,204,204) 1px dotted; PADDING-TOP: 0.6em; BORDER-BOTTOM: rgb(204,204,204) 1px dotted; FONT-FAMILY: 'Microsoft yahei', verdana, sans-serif">1.3 
                        變量對齊會帶來什么麻煩?</H3>
                        <P 
                        style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 14px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">我在變量對齊問題上吃過一次虧,可以作為本節的一個例子。不過要理解這個例子,讀者必須知道ARM 
                        CPU的一個特點:就是長度為m的基本變量必須放在mn邊界上,否則讀寫時會發生數據訪問錯誤,其中m=2或4。這就是第3節要介紹的數據對齊。</P>
                        <P 
                        style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 14px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">事情是這樣,我定義了幾個緩沖區(大數組),然后動態分配這些內存。我的錯誤在于將這些數組定義為字節數組。我的分配算法是按塊分配,每個數據塊的大小都是4的整數倍。讀者能猜到錯誤產生的原因了嗎?</P>
                        <P 
                        style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 14px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">由于我把緩沖區定義為字節數組,編譯器就可以把它們放在1n邊界。如果緩沖區的起始地址是奇數地址,從緩沖區分配的內存塊的起始地址都是奇數地址。如果這些內存塊被用于需要按2或4字節對齊的變量,讀寫時就會發生數據訪問錯誤。如果編譯器恰好把這些緩沖區放在4n邊界上,問題就不會暴露出來。所以前一次編譯可能是好的,但是下一次編譯就會發生莫名其妙的錯誤。調試程序與偵破案件差不多,離犯罪現場越遠的兇手就越難發現。在我透過各種表象找到根源之前,吃點苦頭是難免的。</P>
                        <P 
                        style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 14px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">解決問題的方法很簡單,將緩沖區定義為unsigned 
                        int(下文記作uint32)的數組,編譯器自然會把它們放到4n邊界。在嵌入式系統中,我們經常要為任務定義堆棧。這些堆棧通常都是uint32類型的數組。你知道為什么要把它們定義成uint32數組,而不能定義成字節數組了嗎?</P>
                        <H2 
                        style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">2 
                        結構對齊</H2>
                        <H3 
                        style="BORDER-RIGHT: rgb(204,204,204) 1px dotted; PADDING-RIGHT: 0.6em; BORDER-TOP: rgb(204,204,204) 1px dotted; PADDING-LEFT: 0.6em; FONT-SIZE: 12px; PADDING-BOTTOM: 0.6em; MARGIN: 6px 0px 0px; BORDER-LEFT: rgb(204,204,204) 1px dotted; PADDING-TOP: 0.6em; BORDER-BOTTOM: rgb(204,204,204) 1px dotted; FONT-FAMILY: 'Microsoft yahei', verdana, sans-serif">2.1 
                        基本長度</H3>
                        <P 
                        style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 14px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">為了描述方便,我們定義一個基本長度的概念。一個基本變量的基本長度就是它的長度,一個結構變量的基本長度就是結構成員中基本變量的最大長度。前面說過:在默認情況下,結構變量就是按照其基本長度對齊的。</P>
                        <H3 
                        style="BORDER-RIGHT: rgb(204,204,204) 1px dotted; PADDING-RIGHT: 0.6em; BORDER-TOP: rgb(204,204,204) 1px dotted; PADDING-LEFT: 0.6em; FONT-SIZE: 12px; PADDING-BOTTOM: 0.6em; MARGIN: 6px 0px 0px; BORDER-LEFT: rgb(204,204,204) 1px dotted; PADDING-TOP: 0.6em; BORDER-BOTTOM: rgb(204,204,204) 1px dotted; FONT-FAMILY: 'Microsoft yahei', verdana, sans-serif">2.2 
                        對齊</H3>
                        <P 
                        style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 14px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">在默認情況下,可以認為結構的成員按照默認方式對齊,即長度為m的基本變量放在mn邊界上,其中m=1,2,4或8。因為要把成員對齊,結構的各成員間就可能出現填充字節,結構的大小可能大于各成員大小之和。例如:</P><PRE>typedef struct St1Tag
{
	char ch1;
	int num1;
	short sh1;
	short sh2;
	char ch2;
} St1;
</PRE>
                        <P 
                        style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 14px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">這個結構的基本長度是4,所以這個結構的變量要放在4n邊界。成員num1的基本長度為4,所以也要放在4n邊界。成員ch1從4n邊界開始,只占1個字節,所以在ch1和num1之間有3個填充字節。</P>
                        <P 
                        style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 14px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">在對齊時,編譯器會將結構長度取整到基本長度的整數倍。這樣以該結構為基本類型的數組既可以連續排列,每個元素又可以對齊放置。所以,sizeof(St1)的值是16,在St1的最后一個成員ch2后面還有3個填充字節。</P>
                        <H3 
                        style="BORDER-RIGHT: rgb(204,204,204) 1px dotted; PADDING-RIGHT: 0.6em; BORDER-TOP: rgb(204,204,204) 1px dotted; PADDING-LEFT: 0.6em; FONT-SIZE: 12px; PADDING-BOTTOM: 0.6em; MARGIN: 6px 0px 0px; BORDER-LEFT: rgb(204,204,204) 1px dotted; PADDING-TOP: 0.6em; BORDER-BOTTOM: rgb(204,204,204) 1px dotted; FONT-FAMILY: 'Microsoft yahei', verdana, sans-serif">2.3 
                        緊縮</H3>
                        <P 
                        style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 14px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">各編譯器都支持結構的緊縮,即連續排列結構的各成員變量,各成員變量之間沒有任何填充字節。這時,結構的大小等于各成員變量大小的和。緊縮結構的變量可以放在1n邊界,即任意地址邊界。</P>
                        <P 
                        style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 14px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">在gcc中可以這樣定義緊縮結構:</P><PRE>typedef struct St2Tag
{
	St1 st1;
	char ch2;
}
__attribute__ ((packed)) St2;
</PRE>
                        <P 
                        style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 14px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">armcc是這樣的:</P><PRE>typedef __packed struct St2Tag
{
	St1 st1;
	char ch2;
} St2;
</PRE>
                        <P 
                        style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 14px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">VC的寫法最麻煩:</P><PRE>#pragma pack(1)
typedef struct St2Tag
{
	St1 st1;
	char ch2;
} St2;
#pragma pack()
</PRE>
                        <P 
                        style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 14px; PADDING-BOTTOM: 0px; MARGIN: 1em 0px 0.5em; TEXT-INDENT: 2em; LINE-HEIGHT: 22px; PADDING-TOP: 0px">如果要同時支持gcc、armcc、VC平臺,可以把代碼寫成這樣:</P><PRE>#ifdef __GNUC__
#define GNUC_PACKED	__attribute__ ((packed))
#else
#define GNUC_PACKED
#endif

#ifdef __arm
#define ARM_PACKED	__packed
#else
#define ARM_PACKED
#endif

#ifdef WIN32
#pragma pack(1)
#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲动漫第一页| 国产精品成人一区二区三区夜夜夜| 成人一区二区三区中文字幕| 日本v片在线高清不卡在线观看| 136国产福利精品导航| 欧美精品一区男女天堂| 成人国产一区二区三区精品| 久久精品国产一区二区三区免费看| 日韩精品视频网站| 蜜桃一区二区三区四区| 麻豆精品视频在线观看视频| 欧美aaa在线| 精品一区二区免费看| 激情文学综合丁香| 国产精品一级片在线观看| 国产精品18久久久久久久久久久久 | 曰韩精品一区二区| 日本一道高清亚洲日美韩| 日韩影院精彩在线| 美女国产一区二区三区| 国产一区在线观看视频| 国产成人免费视频精品含羞草妖精| 国产成人精品影院| 99这里都是精品| 欧美午夜理伦三级在线观看| 欧美日韩国产一级| 欧美一级欧美三级在线观看 | 亚洲激情第一区| 亚洲精品免费播放| 亚洲国产sm捆绑调教视频| 日韩avvvv在线播放| 蜜桃视频在线观看一区| 国产成人啪午夜精品网站男同| 91在线云播放| 欧美日韩国产中文| 久久综合久久99| 国产精品第四页| 亚洲bt欧美bt精品| 国产精品综合在线视频| 色天天综合色天天久久| 在线成人av网站| 2020国产成人综合网| 一色桃子久久精品亚洲| 日韩精品91亚洲二区在线观看| 国产又黄又大久久| 91丨porny丨国产| 91精品婷婷国产综合久久 | 日韩经典中文字幕一区| 国产一区二区91| 欧美影视一区在线| 日韩精品一区二| 亚洲永久免费视频| 国产精品资源在线看| 在线精品视频免费观看| 精品成人私密视频| 亚洲男人的天堂av| 国内成人免费视频| 在线观看成人小视频| 久久先锋影音av鲁色资源| 亚洲美女屁股眼交3| 国内外成人在线| 91久久国产最好的精华液| 精品国精品自拍自在线| 亚洲影视在线播放| 东方aⅴ免费观看久久av| 欧美福利视频导航| 亚洲欧洲制服丝袜| 国产高清久久久| 91精品国产高清一区二区三区| 中文字幕一区二区日韩精品绯色| 久久精品久久99精品久久| 在线区一区二视频| 国产精品美女久久久久久久网站| 免费成人av在线| 成人av午夜电影| 欧美一级搡bbbb搡bbbb| 国产精品你懂的在线| 欧美bbbbb| 欧美色老头old∨ideo| 欧美国产精品劲爆| 久久99精品国产麻豆不卡| 欧美视频在线观看一区| 国产精品亲子伦对白| 久久99国产精品免费网站| 欧美军同video69gay| 亚洲美腿欧美偷拍| 成人av网站在线| 欧美激情一区二区三区不卡| 精品亚洲成a人| 91精品国产免费| 性感美女久久精品| 欧美日韩精品免费观看视频| 亚洲美女偷拍久久| 色偷偷久久一区二区三区| 国产精品久久午夜| www.在线成人| 中文字幕中文字幕一区二区| 国产成人精品一区二区三区四区 | 91精品国产91久久综合桃花| 精品日韩99亚洲| 日韩区在线观看| 亚洲欧洲性图库| 国产精品69久久久久水密桃| 91精品久久久久久久99蜜桃| 亚洲免费观看高清在线观看| 国产91精品免费| 亚洲国产精品av| 国产一区91精品张津瑜| 日韩精品一区二区三区视频| 日本欧美久久久久免费播放网| 欧美午夜精品久久久久久超碰| 久久综合久久综合久久| 国产精品自产自拍| 久久综合色婷婷| 精品夜夜嗨av一区二区三区| 日韩视频永久免费| 青青草成人在线观看| 日韩欧美国产成人一区二区| 另类专区欧美蜜桃臀第一页| 欧美一区二区啪啪| 免费一级片91| 精品久久久久久综合日本欧美| 午夜久久电影网| 亚洲精品一区在线观看| 韩国精品免费视频| 久久人人爽爽爽人久久久| 国产乱理伦片在线观看夜一区| 久久精品欧美一区二区三区不卡 | 成人性生交大片免费看在线播放| 欧美日韩国产成人在线免费| 美腿丝袜在线亚洲一区| 欧美一级欧美一级在线播放| 蜜臀av性久久久久蜜臀aⅴ| 精品剧情v国产在线观看在线| 激情文学综合插| 欧美成人一区二区三区片免费 | 最近日韩中文字幕| 一本到不卡免费一区二区| 欧美激情资源网| 欧美三级视频在线| 三级一区在线视频先锋| 日韩女优视频免费观看| 国产一区999| 17c精品麻豆一区二区免费| 色综合久久综合网97色综合| 亚洲高清不卡在线| 91精品在线观看入口| 国产一区视频在线看| 中文乱码免费一区二区| 成人手机电影网| 五月天视频一区| 26uuu精品一区二区三区四区在线| 国产成人免费视频 | 成人av先锋影音| 亚洲综合在线视频| www国产亚洲精品久久麻豆| 成人禁用看黄a在线| 亚洲.国产.中文慕字在线| 精品va天堂亚洲国产| www.激情成人| 精品一区二区三区影院在线午夜 | 久久久三级国产网站| 国产精品夜夜爽| 天天影视涩香欲综合网| 久久久久99精品国产片| 一本高清dvd不卡在线观看| 青青草97国产精品免费观看 | 麻豆久久久久久久| 久久久久久夜精品精品免费| 99re亚洲国产精品| 日本成人在线电影网| 国产精品欧美综合在线| 欧美日本一道本| av一区二区三区在线| 青青青爽久久午夜综合久久午夜| 国产欧美一区二区三区鸳鸯浴 | 91麻豆精品国产综合久久久久久| 精品午夜久久福利影院| 一区二区三区在线影院| 欧美精品国产精品| 色婷婷精品大在线视频 | 国产乱妇无码大片在线观看| 日韩av电影天堂| 亚洲免费在线看| 久久综合久久综合久久综合| 欧美日韩免费不卡视频一区二区三区| 国产福利一区二区| 一区二区三区美女视频| 国产精品不卡视频| 精品毛片乱码1区2区3区| 色婷婷久久一区二区三区麻豆| 国产精品综合久久| 日韩高清在线观看| 国产精品久久久久三级| 精品福利一二区| 欧美精品丝袜久久久中文字幕| av一区二区三区| 国产成人啪免费观看软件| 久久精品国产久精国产| 亚洲第一福利一区|