新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 解釋什么是字對齊什么是半字對齊

        解釋什么是字對齊什么是半字對齊

        作者: 時間:2016-11-28 來源:網(wǎng)絡 收藏
        ARM 處理器對存儲器空間的訪問分辨率以字節(jié)為最小單位;ARM 處理器還支持 16bit 數(shù)據(jù)(2 字節(jié))的存儲器訪問和 32bit數(shù)據(jù)(4 子節(jié))的存儲器訪問。在ARM 中將32 位的數(shù)據(jù)稱之為‘字’,將 16 位的數(shù)據(jù)稱之為‘半字’。

        ARM 處理器在對于“字”/ “半字”數(shù)據(jù)進行訪問時,對數(shù)據(jù)的存儲格式是有要求的【書中講到若不按照如此要求:可能存儲器系統(tǒng)的實現(xiàn)更加困難;可能給ARM系統(tǒng)的移植帶來麻煩(缺少統(tǒng)一標準);標準軟件(編譯器和軟件工具)在不遵守規(guī)則的系統(tǒng)中可能不工作。】在存儲器緊鄰的兩個字節(jié)單元,并且首字節(jié)地址必須能被2整除,這樣存儲的 16bit 數(shù)據(jù)稱為 ‘半字對齊’存儲數(shù)據(jù),16bit 數(shù)據(jù)這樣的存儲方式稱為 ‘半字對齊’存儲。類似的,ARM 處理器在進“字”數(shù)據(jù)訪問時,要求被訪問的“字”必須 存放在存儲器緊鄰的4 個字節(jié)單元,并且首字節(jié)地址必須能被4 整除,【按照二進制從低位數(shù)起的1248換算法,能被2整除最低位的1不能有,能被4整除,低位的1和2都不能有】這樣存儲的32bit 數(shù) 據(jù)稱為‘字對齊’存儲數(shù)據(jù),32bit 數(shù)據(jù)這樣的存儲方式稱為‘字對齊’存儲。
        能被2 整除數(shù)據(jù)的二進制表示,其最低位一定是‘0’;能被4 整除數(shù)據(jù)的二進制表示,其最低兩位一定是‘00’。ARM 體系要求32 位長的ARM 指令在存儲器中必須字對齊存儲,16 位長的 Thumb 指令必須半字對齊存儲。因此,在ARM 狀態(tài)下,R15 的值總是能被4 除,也就是R15 寄存器的最低2 位總是 00;Thumb 狀態(tài)下,R15 的值總是能被2 整除,也就是R15 寄存器的最低位總是0。【借此就能夠檢測處理器工作于何種狀態(tài)之下】
        *【】中是我自己的注解,要思辨地看待……


        評論


        技術專區(qū)

        關閉
        主站蜘蛛池模板: 金湖县| 临邑县| 三台县| 磐石市| 潞西市| 宾川县| 永宁县| 台东市| 浠水县| 哈密市| 昔阳县| 晋中市| 呼和浩特市| 灵璧县| 庆云县| 黔西| 萨嘎县| 自治县| 奉节县| 漠河县| 大连市| 湘西| 中山市| 尚义县| 理塘县| 磐安县| 通渭县| 栾川县| 玉溪市| 吕梁市| 安阳县| 治多县| 柳林县| 上蔡县| 佛山市| 碌曲县| 马尔康县| 呼图壁县| 新竹县| 宜兰县| 波密县|