ARM體系學(xué)習(xí)1
? ? ? ARM處理器是一塊RISC架構(gòu)微處理器,雖然名字是微處理器,但是其功能卻不“微”。這款嵌入式微處理器,與我們的生活息息相關(guān),想不到吧,手機(jī)之所以能做到功能豐富、小巧輕便,就是靠ARM微處理器支撐起來(lái)的。接下來(lái)我們就作一些關(guān)于ARM體系結(jié)構(gòu)的簡(jiǎn)單介紹。
????ARM微處理器屬于精簡(jiǎn)指令集(RISC)陣營(yíng)著名代表有ARM、蘋(píng)果等公司,與之相對(duì)的就是復(fù)雜指令集,該陣營(yíng)的著名代表為Intel公司。所謂的精簡(jiǎn)指令集與復(fù)雜指令集(CISC),簡(jiǎn)單理解就是兩種不同的處理器設(shè)計(jì)理念。
????????復(fù)雜指令集,致力于在硬件上實(shí)現(xiàn)盡可能所的指令運(yùn)算電路,盡可能做到一條指令對(duì)應(yīng)一個(gè)實(shí)際處理電路,這樣做的好處帶給了處理器十分強(qiáng)大的處理能力,指令集豐富,編譯器設(shè)計(jì)難度小。弊端就是電路過(guò)于龐大,價(jià)格高,功耗高散熱難度大。
????????而精簡(jiǎn)指令集則只在硬件上實(shí)現(xiàn)基本的指令電路,其指令集也就只包含了基本的指令,其他的功能則需要使用這些基本的指令進(jìn)行組合來(lái)實(shí)現(xiàn)。這樣做的好處是電路足夠簡(jiǎn)單,價(jià)格和功耗都能得到較好的解決。
????因此,CISC和RISC分別占據(jù)了不同的市場(chǎng),其中CISC處理器主要占據(jù)了服務(wù)器和PC市場(chǎng),RISC則占據(jù)了嵌入式相關(guān)的市場(chǎng)。但是隨著RISC的不斷發(fā)展,其也在逐漸向CISC的市場(chǎng)進(jìn)行滲透。
ARM微處理器一般有ARM狀態(tài)、Thumb狀態(tài)、Thumb2狀態(tài)這三種,并可以進(jìn)行來(lái)回切換。其中ARM狀態(tài)的處理器執(zhí)行的是字對(duì)齊的ARM指令,Thumb執(zhí)行的是半字對(duì)齊的Thumb指令,而Thumb2可以執(zhí)行字對(duì)齊、半字對(duì)齊的混合對(duì)齊的指令。
????????ARM體系結(jié)構(gòu)的存儲(chǔ)格式可以分為大端格式和小端格式。在大端格式中,數(shù)據(jù)的高字節(jié)存儲(chǔ)在低地址中,數(shù)據(jù)的低字節(jié)存儲(chǔ)在高地址中。而小端格式下,低地址存放的是數(shù)據(jù)的低字節(jié),高地址存放的是數(shù)據(jù)的高字節(jié)。為便于理解,這里我們可以假設(shè)將0x1234存為char類(lèi)型,則有如下示意圖可以幫助理解大端存儲(chǔ)和小端存儲(chǔ)的不同。

????簡(jiǎn)單理解就是,從低地址開(kāi)始,大端存儲(chǔ)倒著放,小端存儲(chǔ)順著放。這樣的存儲(chǔ)方式也決定了各自的優(yōu)勢(shì),大端存儲(chǔ)的數(shù)據(jù)適合用于數(shù)據(jù)的政府判斷,畢竟低地址第一位就是數(shù)據(jù)的符號(hào)位,網(wǎng)絡(luò)通信中使用較多,例如tcp/ip通信中就有采用。小端存儲(chǔ)則多被Intel pc機(jī)上采用。
????說(shuō)完了存儲(chǔ)模式,再來(lái)說(shuō)說(shuō)ARM存儲(chǔ)器的七種運(yùn)行模式,分別為
用戶模式(usr):非特權(quán)模式,大部分任務(wù)在此模式下執(zhí)行
系統(tǒng)模式(sys):使用和usr模式相同寄存器集的特權(quán)模式。
兩種中斷模式:分為快速中斷和普通中斷。普通中斷屬于通用的中斷處理模式,快速中斷用????????????????????????于高?速數(shù)據(jù)傳輸?shù)瓤焖僦袛嗵幚怼?/p>
三種異常模式:
監(jiān)控(Supervisor)?:當(dāng)復(fù)位或軟中斷指令執(zhí)行時(shí)將會(huì)進(jìn)入這種模式
異常(Abort?): 當(dāng)存取異常時(shí),系統(tǒng)將會(huì)進(jìn)入讀取數(shù)據(jù)異?;蛘咧噶町惓?duì)應(yīng)的處理程序中。
未定義模式(Undef)?: 當(dāng)執(zhí)行未定義指令時(shí)會(huì)進(jìn)入這種模式
以上七種模式,處理sys模式需要程序員編寫(xiě)指令進(jìn)入,cpu無(wú)法自行進(jìn)入外,其他模式cpu都可以自行進(jìn)行。
好了,今天就到這里,未完待續(xù)..........