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)中可能不工作?!吭诖鎯ζ骶o鄰的兩個字節(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?!窘璐司湍軌驒z測處理器工作于何種狀態(tài)之下】
*【】中是我自己的注解,要思辨地看待……
評論