單片機(jī)結(jié)構(gòu)圖的內(nèi)存應(yīng)該如何分配詳細(xì)資料和程序說(shuō)明
資料介紹
單片機(jī)結(jié)構(gòu)體內(nèi)存的分配
什么是字節(jié)對(duì)齊
一個(gè)變量占用 n 個(gè)字節(jié),則該變量的起始地址必須能夠被 n 整除,即: 存放起始地址 % n = 0, 對(duì)于結(jié)構(gòu)體而言,這個(gè) n 取其成員種的數(shù)據(jù)類型占空間的值最大的那個(gè)。為什么要字節(jié)對(duì)齊內(nèi)存空間是按照字節(jié)來(lái)劃分的,從理論上說(shuō)對(duì)內(nèi)存空間的訪問(wèn)可以從任何地址開(kāi)始,但是在實(shí)際上不同架構(gòu)的CPU為了提高訪問(wèn)內(nèi)存的速度,就規(guī)定了對(duì)于某些類型的數(shù)據(jù)只能從特定的起始位置開(kāi)始訪問(wèn)。
這樣就決定了各種數(shù)據(jù)類型只能按照相應(yīng)的規(guī)則在內(nèi)存空間中存放,而不能一個(gè)接一個(gè)的順序排列。舉個(gè)例子,比如有些平臺(tái)訪問(wèn)內(nèi)存地址都從偶數(shù)地址開(kāi)始,對(duì)于一個(gè)int型(假設(shè)32位系統(tǒng)),如果從偶數(shù)地址開(kāi)始的地方存放,這樣一個(gè)讀周期就可以讀出這個(gè)int數(shù)據(jù),但是如果從奇數(shù)地址開(kāi)始的地址存放,就需要兩個(gè)讀周期,并對(duì)兩次讀出的結(jié)果的高低字節(jié)進(jìn)行拼湊才能得到這個(gè)int數(shù)據(jù),這樣明顯降低了讀取的效率。如何進(jìn)行字節(jié)對(duì)齊每個(gè)成員按其類型的對(duì)齊參數(shù)(通常是這個(gè)類型的大小)和指定對(duì)齊參數(shù)(不指定則取默認(rèn)值)中較小的一個(gè)對(duì)齊,并且結(jié)構(gòu)的長(zhǎng)度必須為所用過(guò)的所有對(duì)齊參數(shù)的整數(shù)倍,不夠就補(bǔ)空字節(jié)。這個(gè)規(guī)則有點(diǎn)苦澀,可以把這個(gè)規(guī)則分解一下,前半句的意思先獲得對(duì)齊值后與指定對(duì)齊值進(jìn)行比較,其中對(duì)齊值獲得方式如下:
1. 數(shù)據(jù)類型的自身對(duì)齊值為:對(duì)于char型數(shù)據(jù),其自身對(duì)齊值為1,對(duì)于short型為2,對(duì)于int, long, float類型,其自身對(duì)齊值為4,對(duì)于 double 類型其自身對(duì)齊值為8,單位為字節(jié)。
2.結(jié)構(gòu)體自身對(duì)齊值:其成員中自身對(duì)齊值最大的那個(gè)值。
其中指定對(duì)齊值獲得方式如下: #pragma pack (value)時(shí)的指定對(duì)齊值value。未指定則取默認(rèn)值。后半句的意思是主要是針對(duì)于結(jié)構(gòu)體的長(zhǎng)度而言,因?yàn)獒槍?duì)數(shù)據(jù)類型的成員,它僅有一個(gè)對(duì)齊參數(shù),其本身的長(zhǎng)度、于這個(gè)對(duì)齊參數(shù),即1倍。對(duì)于結(jié)構(gòu)體而言,它可能使用了多種數(shù)據(jù)類型,那么這句話翻譯成對(duì)齊規(guī)則: 每個(gè)成員的起始地址 % 自身對(duì)齊值 = 0,如果不等于 0 則先補(bǔ)空字節(jié)直至這個(gè)表達(dá)式成立。換句話說(shuō),對(duì)于結(jié)構(gòu)體而言,結(jié)構(gòu)體在在內(nèi)存的存放順序用如下規(guī)則即可映射出來(lái):
(一)每個(gè)成員的起始地址 % 每個(gè)成員的自身對(duì)齊值 = 0,如果不等于 0 則先補(bǔ)空字節(jié)直至這個(gè)表達(dá)式成立;
(二)結(jié)構(gòu)體的長(zhǎng)度必須為結(jié)構(gòu)體的自身對(duì)齊值的整數(shù)倍,不夠就補(bǔ)空字節(jié)。
- 自動(dòng)控制系統(tǒng)的動(dòng)態(tài)結(jié)構(gòu)圖詳細(xì)資料說(shuō)明 9次下載
- 單片機(jī)原理及應(yīng)用的詳細(xì)資料說(shuō)明 20次下載
- 什么是單片機(jī)?單片機(jī)的歷史和應(yīng)用等詳細(xì)資料說(shuō)明 7次下載
- 單片機(jī)的常量和變量與數(shù)組的詳細(xì)資料說(shuō)明 13次下載
- 單片機(jī)的程序在內(nèi)存和FLASH中應(yīng)該如何進(jìn)行空間分配
- 51單片機(jī)的匯編指令詳細(xì)資料說(shuō)明
- 51單片機(jī)的應(yīng)該如何使用定時(shí)器詳細(xì)資料和實(shí)例說(shuō)明
- 51單片機(jī)例函數(shù)的詳細(xì)資料說(shuō)明
- 51單片機(jī)的五張經(jīng)典結(jié)構(gòu)圖免費(fèi)下載
- 80C51單片機(jī)的中斷系統(tǒng)和系統(tǒng)結(jié)構(gòu)的詳細(xì)資料說(shuō)明
- 51單片機(jī)各中斷初始化及子程序模板的詳細(xì)資料說(shuō)明
- 51單片機(jī)的中斷系統(tǒng)詳細(xì)資料說(shuō)明
- 使用STM32單片機(jī)實(shí)現(xiàn)IAP的詳細(xì)資料說(shuō)明
- 單片機(jī)的九個(gè)試題庫(kù)程序及答案的詳細(xì)資料說(shuō)明 17次下載
- 51單片機(jī)控制LCD1602模塊結(jié)構(gòu)圖和使用說(shuō)明免費(fèi)下載 19次下載
- 集成芯片內(nèi)部結(jié)構(gòu)圖 2315次閱讀
- 集成芯片結(jié)構(gòu)圖怎么畫(huà) 1956次閱讀
- 單片機(jī)的內(nèi)存映射圖解析 1273次閱讀
- 單片機(jī)的內(nèi)存映射圖解析 1799次閱讀
- PIC系列單片機(jī)程序設(shè)計(jì)基礎(chǔ)知識(shí)詳細(xì)說(shuō)明 4636次閱讀
- PIC系列單片機(jī)的詳細(xì)資料說(shuō)明 5549次閱讀
- 玻璃管液位計(jì)的種類_玻璃管液位計(jì)結(jié)構(gòu)圖 6446次閱讀
- 單片機(jī)的程序結(jié)構(gòu)設(shè)計(jì) 6761次閱讀
- 單片機(jī)的結(jié)構(gòu)和原理說(shuō)明 5517次閱讀
- 熱過(guò)載繼電器結(jié)構(gòu)圖虎工作原理 7214次閱讀
- 蝸輪蝸桿減速機(jī)結(jié)構(gòu)圖_蝸輪蝸桿減速機(jī)優(yōu)缺點(diǎn) 2w次閱讀
- 如何進(jìn)行PLC控制程序的設(shè)計(jì)詳細(xì)資料PPT說(shuō)明 6010次閱讀
- 單片機(jī)程序設(shè)計(jì)時(shí)如何進(jìn)行優(yōu)化詳細(xì)資料概述 4834次閱讀
- 單片機(jī)8x8矩陣鍵盤(pán)原理說(shuō)明 2.6w次閱讀
- ISO103F管腳結(jié)構(gòu)圖 3507次閱讀
下載排行
本周
- 1相關(guān)協(xié)議信號(hào)總結(jié)
- 0.94 MB | 4次下載 | 免費(fèi)
- 2運(yùn)算放大器基本電路中文資料
- 1.30 MB | 3次下載 | 免費(fèi)
- 3DS-CS3A P00-CN-V3
- 618.05 KB | 1次下載 | 免費(fèi)
- 4常用電子元器件介紹
- 3.21 MB | 1次下載 | 免費(fèi)
- 5PC2570低Iq理想二極管控制電路數(shù)據(jù)手冊(cè)
- 1.54 MB | 次下載 | 免費(fèi)
- 6PCl Express板設(shè)計(jì)指南
- 0.56 MB | 次下載 | 免費(fèi)
- 7雙向DC-DC雙有源橋(DAB,Dual Active Bridge)參考設(shè)計(jì)
- 3.80 MB | 次下載 | 免費(fèi)
- 8PC1076/PC1076HV 系列 3A 開(kāi)關(guān)型降壓穩(wěn)壓器中文手冊(cè)
- 0.75 MB | 次下載 | 免費(fèi)
本月
- 1涂鴉各WiFi模塊原理圖加PCB封裝
- 11.75 MB | 89次下載 | 1 積分
- 2錦銳科技CA51F2 SDK開(kāi)發(fā)包
- 24.06 MB | 43次下載 | 1 積分
- 3錦銳CA51F005 SDK開(kāi)發(fā)包
- 19.47 MB | 19次下載 | 1 積分
- 4PCB的EMC設(shè)計(jì)指南
- 2.47 MB | 16次下載 | 1 積分
- 5HC05藍(lán)牙原理圖加PCB
- 15.76 MB | 13次下載 | 1 積分
- 6蘋(píng)果iphone 11電路原理圖
- 4.98 MB | 7次下載 | 2 積分
- 7基礎(chǔ)模擬電子電路
- 3.80 MB | 5次下載 | 1 積分
- 8TL494工業(yè)用開(kāi)關(guān)電源原理圖資料
- 0.22 MB | 5次下載 | 1 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935127次下載 | 10 積分
- 2開(kāi)源硬件-PMP21529.1-4 開(kāi)關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191390次下載 | 10 積分
- 5十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
- 158M | 183343次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81591次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73815次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65989次下載 | 10 積分
評(píng)論