ARM 處理器對存儲器空間的訪(fǎng)問(wèn)分辨率以字節為最小單位;ARM 處理器還支持 16bit 數據(2 字節)的存儲器訪(fǎng)問(wèn)和 32bit數據(4 子節)的存儲器訪(fǎng)問(wèn)。在A(yíng)RM 中將32 位的數據稱(chēng)之為‘字’,將 16 位的數據稱(chēng)之為‘半字’。
ARM 處理器在對于“字”/ “半字”數據進(jìn)行訪(fǎng)問(wèn)時(shí),對數據的存儲格式是有要求的【書(shū)中講到若不按照如此要求:可能存儲器系統的實(shí)現更加困難;可能給ARM系統的移植帶來(lái)麻煩(缺少統一標準);標準軟件(編譯器和軟件工具)在不遵守規則的系統中可能不工作?!吭诖鎯ζ骶o鄰的兩個(gè)字節單元,并且首字節地址必須能被2整除,這樣存儲的 16bit 數據稱(chēng)為 ‘半字對齊’存儲數據,16bit 數據這樣的存儲方式稱(chēng)為 ‘半字對齊’存儲。類(lèi)似的,ARM 處理器在進(jìn)“字”數據訪(fǎng)問(wèn)時(shí),要求被訪(fǎng)問(wèn)的“字”必須 存放在存儲器緊鄰的4 個(gè)字節單元,并且首字節地址必須能被4 整除,【按照二進(jìn)制從低位數起的1248換算法,能被2整除最低位的1不能有,能被4整除,低位的1和2都不能有】這樣存儲的32bit 數 據稱(chēng)為‘字對齊’存儲數據,32bit 數據這樣的存儲方式稱(chēng)為‘字對齊’存儲。
能被2 整除數據的二進(jìn)制表示,其最低位一定是‘0’;能被4 整除數據的二進(jìn)制表示,其最低兩位一定是‘00’。ARM 體系要求32 位長(cháng)的ARM 指令在存儲器中必須字對齊存儲,16 位長(cháng)的 Thumb 指令必須半字對齊存儲。因此,在A(yíng)RM 狀態(tài)下,R15 的值總是能被4 除,也就是R15 寄存器的最低2 位總是 00;Thumb 狀態(tài)下,R15 的值總是能被2 整除,也就是R15 寄存器的最低位總是0?!窘璐司湍軌驒z測處理器工作于何種狀態(tài)之下】
*【】中是我自己的注解,要思辨地看待……
評論