時(shí)間:2018-08-22 00:00:00 來(lái)源:信盈達(dá) 作者:信盈達(dá)
在ARM處理器中,如果數(shù)據(jù)或指令是2字節(jié)的那么其在存儲(chǔ)器中的存儲(chǔ)要是半字對(duì)其的(存儲(chǔ)的起始地址的低一位是0b0),即存儲(chǔ)的首地址必須是2的整數(shù)倍。如果數(shù)據(jù)或指令是4字節(jié)的那么該數(shù)據(jù)或指令在存儲(chǔ)器中的存儲(chǔ)是字對(duì)其的(存儲(chǔ)的起始地址的低兩位都是0b00),即存儲(chǔ)的首地址必須是4的整數(shù)倍。我們?cè)谠L問(wèn)存儲(chǔ)器的時(shí)候,如果存儲(chǔ)單元的地址沒(méi)有按照上述規(guī)則對(duì)其,則稱(chēng)為非對(duì)齊的存儲(chǔ)訪問(wèn)操作。
1. 非對(duì)齊的指令讀取操作
當(dāng)處理器在執(zhí)行ARM指令的時(shí)候,ARM指令每條指令是4字節(jié)的寬度,所以對(duì)于ARM指令在存儲(chǔ)器當(dāng)中的存儲(chǔ)是按照字對(duì)齊的方式來(lái)存儲(chǔ)的。我們?cè)谧x取一條ARM指令時(shí)如果寫(xiě)入到PC寄存器的值不是字對(duì)其的(PC的后兩位不是0b00),那么指令執(zhí)行的結(jié)果可能是不可預(yù)知的,或者寄存器PC中不管低的兩位是什么值,寄存器PC中的地址值被送入到存儲(chǔ)系統(tǒng)后,存儲(chǔ)系統(tǒng)都會(huì)將其低兩位的值忽略,即認(rèn)為低兩位是0b00。
2. 非對(duì)齊的數(shù)據(jù)訪問(wèn)操作
當(dāng)ARM處理器進(jìn)行對(duì)內(nèi)存的讀寫(xiě)操作時(shí),如果所要操作的數(shù)據(jù)在內(nèi)存中是非對(duì)齊的,則有可能出現(xiàn)以下兩種運(yùn)行結(jié)果:
(1) 執(zhí)行的結(jié)果不可預(yù)知
(2) 當(dāng)操作的數(shù)據(jù)是字類(lèi)型的時(shí),忽略地址中低兩位的值,即訪問(wèn)地址為指定的地址與0xFFFFFFFC相與的結(jié)果(Address & 0xFFFFFFFC);當(dāng)操作的數(shù)據(jù)是半字類(lèi)型的時(shí),忽略地址中低一位的值,即訪問(wèn)地址為指定的地址與0xFFFFFFFE相與的結(jié)果(Address & 0xFFFFFFFE)。這種操作是由存儲(chǔ)系統(tǒng)來(lái)完成的,地址值并不會(huì)在CPU內(nèi)發(fā)生變化。
信盈達(dá)2008年在深圳特區(qū)南山高新科技園成立。自成立至今近九年來(lái)專(zhuān)注為企業(yè)和個(gè)人提供高端方案設(shè)計(jì)、高端嵌入式/Android培訓(xùn)等服務(wù)。公司下設(shè)信盈達(dá)實(shí)訓(xùn)學(xué)院、信盈達(dá)研發(fā)中心、信盈達(dá)教學(xué)儀器三大業(yè)務(wù)板塊。九年來(lái)公司堅(jiān)持"技術(shù)領(lǐng)先、服務(wù)領(lǐng)先",以雄厚的實(shí)力和專(zhuān)業(yè)的品質(zhì)成為國(guó)內(nèi)唯一有實(shí)力從產(chǎn)品最底層研發(fā)到系統(tǒng)層開(kāi)發(fā)的嵌入式實(shí)訓(xùn)、產(chǎn)品解決方案提供商。為中國(guó)IT行業(yè)提供最具價(jià)值的職業(yè)教育服務(wù)。專(zhuān)業(yè)培訓(xùn)嵌入式、物聯(lián)網(wǎng)、人工智能、Java、單片機(jī)等課程,想了解更多信息點(diǎn)擊立馬咨詢
免費(fèi)領(lǐng)取試聽(tīng)卡
申請(qǐng)已經(jīng)提交
老師會(huì)馬上給您安排試聽(tīng)課程!
申請(qǐng)出錯(cuò)了
您可以加老師QQ:914865590報(bào)名咨詢!