當(dāng)前位置:首頁 > 嵌入式培訓(xùn) > 嵌入式學(xué)習(xí) > 講師博文 > ARM體系架構(gòu)中的存儲系統(tǒng)
ARM體系架構(gòu)中的存儲系統(tǒng)
時間:2018-09-25 來源:未知
在計算機系統(tǒng)當(dāng)中,數(shù)據(jù)的存儲是以字節(jié)為單位的,每個地址單元當(dāng)中都可以存放一個字節(jié)的數(shù)據(jù),每個字節(jié)為8bit。在C語言中編譯器為char型的數(shù)據(jù)分配了一個字節(jié)的存儲空間,為long型的數(shù)據(jù)分配了4個字節(jié)的存儲空間,為int型的數(shù)據(jù)分配了2個字節(jié)的存儲空間(要看具體的編譯器),這樣當(dāng)所定義的數(shù)據(jù)類型占用的存儲空間大于一個字節(jié)時就需要用多個字節(jié)的空間來存儲一個數(shù)據(jù),即一個數(shù)據(jù)占用了多了地址單元,這樣就存在著一個存儲順序的問題,即這幾個字節(jié)在內(nèi)存單元中是以什么樣的順序來存儲的。
在ARM體系中通常采用的字節(jié)存儲機制主要有兩種:Big-Endian(大端模式)Little-Endian(小端模式)。Big-Endian是指數(shù)據(jù)的高字節(jié)保存在內(nèi)存的低地址中,而數(shù)據(jù)的低字節(jié)保存在內(nèi)存的高地址中。Little-Endian是指數(shù)據(jù)的高字節(jié)保存在內(nèi)存的高地址中,而數(shù)據(jù)的低字節(jié)保存在內(nèi)存的低地址中,這種存儲模式將地址的高低和數(shù)據(jù)位權(quán)有效地結(jié)合起來,高地址部分權(quán)值高,低地址部分權(quán)值低,和我們的邏輯方法一致。
舉一個例子,比如十六進制數(shù)字0x12345678在內(nèi)存中的表示形式為:
1)大端模式:
低地址 -----------------> 高地址
0x12 | 0x34 | 0x56 | 0x78
2)小端模式:
低地址 ------------------> 高地址
0x78 | 0x56 | 0x34 | 0x12
在ARM體系結(jié)構(gòu)中采用Big-Endian存儲模式還是Little-Endian存儲模式都各有利弊,比如在Little-Endian模式下強制轉(zhuǎn)換數(shù)據(jù)不需要調(diào)整字節(jié)內(nèi)容,而在Big-Endian模式下符號位的判定固定為第一個字節(jié),與Little-Endian模式相比較更容易判斷數(shù)據(jù)的正負。
在ARM體系中默認的存儲格式為小端對齊,但ARM處理器還可以由硬件來選擇是大端模式還是小端模式。

