亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        結(jié)構(gòu)體數(shù)據(jù)對(duì)齊方法的研究

        2017-05-19 12:34:31王若
        未來英才 2017年7期
        關(guān)鍵詞:編譯器字節(jié)內(nèi)存

        王若

        摘要:內(nèi)存地址對(duì)齊,是一種在計(jì)算機(jī)內(nèi)存中排列數(shù)據(jù)、訪問數(shù)據(jù)的一種方式。當(dāng)今的計(jì)算機(jī)在計(jì)算機(jī)內(nèi)存中讀寫數(shù)據(jù)時(shí)都是按字(word)大小塊來進(jìn)行操作的?;绢愋蛿?shù)據(jù)對(duì)齊就是數(shù)據(jù)在內(nèi)存中的偏移地址必須等于一個(gè)字(word)的倍數(shù),按這種存儲(chǔ)數(shù)據(jù)的方式,可以提升系統(tǒng)在讀取數(shù)據(jù)時(shí)的性能。有時(shí)候?yàn)榱藢?duì)齊數(shù)據(jù),可能必須在上一個(gè)數(shù)據(jù)結(jié)束和下一個(gè)數(shù)據(jù)開始的地方插入一些沒有用處字節(jié),這就是結(jié)構(gòu)體數(shù)據(jù)對(duì)齊。

        關(guān)鍵詞:結(jié)構(gòu);數(shù)據(jù)

        一、假設(shè)計(jì)算機(jī)的字大小為4個(gè)字節(jié),因此變量在內(nèi)存中的首地址都是滿足4地址對(duì)齊,CPU只能對(duì)4的倍數(shù)的地址進(jìn)行讀取,而每次能讀取4個(gè)字節(jié)大小的數(shù)據(jù)

        假設(shè)有一個(gè)整型的數(shù)據(jù)a的首地址不是4的倍數(shù),因此想讀取a的數(shù)據(jù),CPU要進(jìn)行兩次內(nèi)存讀取,而且還要對(duì)兩次讀取的數(shù)據(jù)進(jìn)行處理才能得到a的數(shù)據(jù),而一個(gè)程序的瓶頸往往不是CPU的速度,而是取決于內(nèi)存的帶寬,因?yàn)镃PU得處理速度要遠(yuǎn)大于從內(nèi)存中讀取數(shù)據(jù)的速度,因此減少對(duì)內(nèi)存空間的訪問是提高程序性能的關(guān)鍵[1]。從上例可以看出,采取內(nèi)存地址對(duì)齊策略是提高程序性能的關(guān)鍵。

        二、結(jié)構(gòu)體默認(rèn)的規(guī)則

        本文所述的環(huán)境均是在32位編譯器的編譯環(huán)境中,一般編譯器默認(rèn)對(duì)齊方式是4字節(jié)。

        總結(jié)結(jié)構(gòu)體的數(shù)據(jù)對(duì)齊方式滿足條件:

        1、結(jié)構(gòu)體變量的首地址能夠被其最寬基本類型成員的大小所整除。2、結(jié)構(gòu)體每個(gè)成員相對(duì)于結(jié)構(gòu)體首地址的偏移量(offset)都是成員自身大小的整數(shù)倍,如有需要編譯器會(huì)在成員之間加上填充字節(jié)。3、結(jié)構(gòu)體的總大小為結(jié)構(gòu)體最寬基本類型成員大小的整數(shù)倍,如有需要編譯器會(huì)在最末一個(gè)成員之后加上填充字節(jié)。

        三、手動(dòng)對(duì)齊方式

        如果編譯器自動(dòng)實(shí)現(xiàn)結(jié)構(gòu)體對(duì)齊,我們就稱為自動(dòng)對(duì)齊,與之相反,使用#pragma進(jìn)行對(duì)齊的就是手動(dòng)對(duì)齊。

        #pragma備用告訴編譯器,程序員自己希望的對(duì)齊方式。比如,雖然編譯器的默認(rèn)對(duì)齊方式是4,但是如果我們不希望按照4對(duì)齊,而是希望是8,這個(gè)時(shí)候就必須使用#pragma進(jìn)行手動(dòng)對(duì)齊了。

        常用的設(shè)置手動(dòng)對(duì)齊的命令有兩種:第一種是#pragmapack(),這種就是設(shè)置編譯器1字節(jié)對(duì)齊,不過也可以認(rèn)為是設(shè)置為不對(duì)齊或者取消對(duì)齊;第二種是

        #pragmapack(4),這個(gè)括號(hào)中的數(shù)字表示希望以多少字節(jié)進(jìn)行對(duì)齊。

        我們需要#prgamapack(n)開頭,以#pragmapack()結(jié)尾,定義一個(gè)區(qū)間,這個(gè)區(qū)間內(nèi)的對(duì)齊參數(shù)就是n。

        舉例說明

        (一)自動(dòng)對(duì)齊方式或者是默認(rèn)4字節(jié)對(duì)齊

        分析代碼:根據(jù)基本數(shù)據(jù)類型對(duì)齊規(guī)則可知,c(字節(jié)),i(4字節(jié)),d(8字節(jié)),b(2字節(jié))。是不是結(jié)果就是1+4+8+2呢?很明顯不是,c是首元素,不需要對(duì)齊,但是后面的就需要對(duì)齊了,i是4字節(jié),但是它的起始偏移量只有1字節(jié),不能整除4,因此就在c后面再加3個(gè)字節(jié),當(dāng)遇到d時(shí),由于之前的偏移量就是8,所以不需要偏移,在b之前有16字節(jié),這時(shí)也不需要偏移就是直接加上2。所以最后結(jié)果就是1+3+4+8+2=20,對(duì)不對(duì)呢?其實(shí)是不對(duì)的,因?yàn)?8不是默認(rèn)對(duì)齊4的整數(shù)倍,還需要在后面補(bǔ)充2字節(jié)。一共就是20字節(jié)。

        分析:該結(jié)果就是24字節(jié),分析同上,但是在最后一步不一樣,對(duì)齊是8字節(jié),所以在b后面還需要添加6字節(jié)。最終結(jié)果就是24.

        四、結(jié)語

        需要字節(jié)對(duì)齊的根本原因在于CPU訪問數(shù)據(jù)的效率問題。因?yàn)橛?jì)算機(jī)可以處理數(shù)據(jù)位數(shù)都是確定的,這時(shí)候就說明它一次性只能處理確定位數(shù)的數(shù)據(jù),但是當(dāng)認(rèn)為造成該數(shù)據(jù)不在計(jì)算機(jī)一次性可訪問的范圍內(nèi)的時(shí)候,計(jì)算機(jī)就會(huì)按照一定的優(yōu)化方法來處理,這樣是更加方便和快捷的處理數(shù)據(jù)。也就是強(qiáng)制的要求一來簡化了處理器與內(nèi)存之間傳輸系統(tǒng)的設(shè)計(jì),二來可以提升讀取數(shù)據(jù)的速度。

        參考文獻(xiàn)

        [1] 陳榮,蔡志勇,胡保安. 基于嵌入式操作系統(tǒng)VxWorks數(shù)據(jù)采集系統(tǒng)軟件設(shè)計(jì)[J]. 科技廣場,2005,(06):82-84.

        猜你喜歡
        編譯器字節(jié)內(nèi)存
        No.8 字節(jié)跳動(dòng)將推出獨(dú)立出口電商APP
        基于相異編譯器的安全計(jì)算機(jī)平臺(tái)交叉編譯環(huán)境設(shè)計(jì)
        “春夏秋冬”的內(nèi)存
        No.10 “字節(jié)跳動(dòng)手機(jī)”要來了?
        簡談MC7字節(jié)碼
        通用NC代碼編譯器的設(shè)計(jì)與實(shí)現(xiàn)
        基于內(nèi)存的地理信息訪問技術(shù)
        編譯器無關(guān)性編碼在微控制器中的優(yōu)勢
        人類進(jìn)入“澤它時(shí)代”
        上網(wǎng)本為什么只有1GB?
        日本av一区二区三区在线| 人妻无码一区二区三区四区| 无码人妻精品一区二区三区免费| 无码精品人妻一区二区三区人妻斩 | 富婆如狼似虎找黑人老外| 人妻少妇不满足中文字幕| 在线偷窥制服另类| 人妻人妇av一区二区三区四区| 在线免费观看蜜桃视频| 强奸乱伦影音先锋| 精品无码人妻一区二区三区品| 小12箩利洗澡无码视频网站| 国产一区二区精品尤物| 91综合久久婷婷久久| 精品国产污黄网站在线观看| 久久精品不卡一区二区三区| 国产极品女主播国产区| 男女啪啪无遮挡免费网站| 免费啪啪视频一区| 日本肥老熟妇在线观看| 国产视频一区2区三区| 亚洲综合色区一区二区三区| 国产一精品一av一免费| 国产午夜精品一区二区三区不卡| japanesehd中国产在线看| 99久久精品免费观看国产| 欧美国产精品久久久乱码| 91免费永久国产在线观看| 久久国产精品超级碰碰热| 日本女优禁断视频中文字幕| 国产精品第一二三区久久| 99久久婷婷国产综合精品青草免费| 中文字幕在线观看亚洲日韩| 欧美一级三级在线观看| 四虎成人精品国产永久免费| 亚洲国产一区二区,毛片| 欲女在线一区二区三区| 一本久道综合在线无码人妻| 亚洲最大日夜无码中文字幕| 在线丝袜欧美日韩制服| 中文字幕日韩精品亚洲精品|