單片機(jī)結(jié)構(gòu)圖的內(nèi)存應(yīng)該如何分配詳細(xì)資料和程序說明
資料介紹
單片機(jī)結(jié)構(gòu)體內(nèi)存的分配
什么是字節(jié)對齊
一個變量占用 n 個字節(jié),則該變量的起始地址必須能夠被 n 整除,即: 存放起始地址 % n = 0, 對于結(jié)構(gòu)體而言,這個 n 取其成員種的數(shù)據(jù)類型占空間的值最大的那個。為什么要字節(jié)對齊內(nèi)存空間是按照字節(jié)來劃分的,從理論上說對內(nèi)存空間的訪問可以從任何地址開始,但是在實際上不同架構(gòu)的CPU為了提高訪問內(nèi)存的速度,就規(guī)定了對于某些類型的數(shù)據(jù)只能從特定的起始位置開始訪問。
這樣就決定了各種數(shù)據(jù)類型只能按照相應(yīng)的規(guī)則在內(nèi)存空間中存放,而不能一個接一個的順序排列。舉個例子,比如有些平臺訪問內(nèi)存地址都從偶數(shù)地址開始,對于一個int型(假設(shè)32位系統(tǒng)),如果從偶數(shù)地址開始的地方存放,這樣一個讀周期就可以讀出這個int數(shù)據(jù),但是如果從奇數(shù)地址開始的地址存放,就需要兩個讀周期,并對兩次讀出的結(jié)果的高低字節(jié)進(jìn)行拼湊才能得到這個int數(shù)據(jù),這樣明顯降低了讀取的效率。如何進(jìn)行字節(jié)對齊每個成員按其類型的對齊參數(shù)(通常是這個類型的大小)和指定對齊參數(shù)(不指定則取默認(rèn)值)中較小的一個對齊,并且結(jié)構(gòu)的長度必須為所用過的所有對齊參數(shù)的整數(shù)倍,不夠就補(bǔ)空字節(jié)。這個規(guī)則有點(diǎn)苦澀,可以把這個規(guī)則分解一下,前半句的意思先獲得對齊值后與指定對齊值進(jìn)行比較,其中對齊值獲得方式如下:
1. 數(shù)據(jù)類型的自身對齊值為:對于char型數(shù)據(jù),其自身對齊值為1,對于short型為2,對于int, long, float類型,其自身對齊值為4,對于 double 類型其自身對齊值為8,單位為字節(jié)。
2.結(jié)構(gòu)體自身對齊值:其成員中自身對齊值最大的那個值。
其中指定對齊值獲得方式如下: #pragma pack (value)時的指定對齊值value。未指定則取默認(rèn)值。后半句的意思是主要是針對于結(jié)構(gòu)體的長度而言,因為針對數(shù)據(jù)類型的成員,它僅有一個對齊參數(shù),其本身的長度、于這個對齊參數(shù),即1倍。對于結(jié)構(gòu)體而言,它可能使用了多種數(shù)據(jù)類型,那么這句話翻譯成對齊規(guī)則: 每個成員的起始地址 % 自身對齊值 = 0,如果不等于 0 則先補(bǔ)空字節(jié)直至這個表達(dá)式成立。換句話說,對于結(jié)構(gòu)體而言,結(jié)構(gòu)體在在內(nèi)存的存放順序用如下規(guī)則即可映射出來:
(一)每個成員的起始地址 % 每個成員的自身對齊值 = 0,如果不等于 0 則先補(bǔ)空字節(jié)直至這個表達(dá)式成立;
(二)結(jié)構(gòu)體的長度必須為結(jié)構(gòu)體的自身對齊值的整數(shù)倍,不夠就補(bǔ)空字節(jié)。
- 自動控制系統(tǒng)的動態(tài)結(jié)構(gòu)圖詳細(xì)資料說明 9次下載
- 單片機(jī)原理及應(yīng)用的詳細(xì)資料說明 20次下載
- 什么是單片機(jī)?單片機(jī)的歷史和應(yīng)用等詳細(xì)資料說明 7次下載
- 單片機(jī)的常量和變量與數(shù)組的詳細(xì)資料說明 13次下載
- 51單片機(jī)的匯編指令詳細(xì)資料說明
- 51單片機(jī)的應(yīng)該如何使用定時器詳細(xì)資料和實例說明
- 51單片機(jī)例函數(shù)的詳細(xì)資料說明
- 51單片機(jī)的五張經(jīng)典結(jié)構(gòu)圖免費(fèi)下載
- 80C51單片機(jī)的中斷系統(tǒng)和系統(tǒng)結(jié)構(gòu)的詳細(xì)資料說明
- 51單片機(jī)各中斷初始化及子程序模板的詳細(xì)資料說明
- 51單片機(jī)的中斷系統(tǒng)詳細(xì)資料說明
- 使用STM32單片機(jī)實現(xiàn)IAP的詳細(xì)資料說明
- 單片機(jī)的九個試題庫程序及答案的詳細(xì)資料說明 17次下載
- 單片機(jī)程序范例的詳細(xì)資料免費(fèi)下載 23次下載
- 51單片機(jī)控制LCD1602模塊結(jié)構(gòu)圖和使用說明免費(fèi)下載 19次下載
- 集成芯片內(nèi)部結(jié)構(gòu)圖 1228次閱讀
- 集成芯片結(jié)構(gòu)圖怎么畫 1223次閱讀
- 單片機(jī)的內(nèi)存映射圖解析 1029次閱讀
- 單片機(jī)的內(nèi)存映射圖解析 1505次閱讀
- PIC系列單片機(jī)程序設(shè)計基礎(chǔ)知識詳細(xì)說明 4301次閱讀
- PIC系列單片機(jī)的詳細(xì)資料說明 5350次閱讀
- 玻璃管液位計的種類_玻璃管液位計結(jié)構(gòu)圖 6277次閱讀
- 單片機(jī)的程序結(jié)構(gòu)設(shè)計 6475次閱讀
- 單片機(jī)的結(jié)構(gòu)和原理說明 5025次閱讀
- 熱過載繼電器結(jié)構(gòu)圖虎工作原理 7076次閱讀
- 蝸輪蝸桿減速機(jī)結(jié)構(gòu)圖_蝸輪蝸桿減速機(jī)優(yōu)缺點(diǎn) 1.9w次閱讀
- 如何進(jìn)行PLC控制程序的設(shè)計詳細(xì)資料PPT說明 5753次閱讀
- 單片機(jī)程序設(shè)計時如何進(jìn)行優(yōu)化詳細(xì)資料概述 4632次閱讀
- 單片機(jī)8x8矩陣鍵盤原理說明 2.5w次閱讀
- ISO103F管腳結(jié)構(gòu)圖 3311次閱讀
下載排行
本周
- 1TC358743XBG評估板參考手冊
- 1.36 MB | 330次下載 | 免費(fèi)
- 2開關(guān)電源基礎(chǔ)知識
- 5.73 MB | 6次下載 | 免費(fèi)
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設(shè)計
- 0.60 MB | 3次下載 | 免費(fèi)
- 5基于FPGA的光纖通信系統(tǒng)的設(shè)計與實現(xiàn)
- 0.61 MB | 2次下載 | 免費(fèi)
- 651單片機(jī)窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費(fèi)
- 751單片機(jī)大棚環(huán)境控制器仿真程序
- 1.10 MB | 2次下載 | 免費(fèi)
- 8基于51單片機(jī)的RGB調(diào)色燈程序仿真
- 0.86 MB | 2次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33564次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計實例指南
- 未知 | 21549次下載 | 免費(fèi)
- 5電氣工程師手冊免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動電路設(shè)計》 溫德爾著
- 0.00 MB | 6653次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537796次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191185次下載 | 免費(fèi)
- 7十天學(xué)會AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183279次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評論
查看更多