在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            淺談ARM架構(gòu)1

            作者: 時(shí)間:2016-11-09 來源:網(wǎng)絡(luò) 收藏
            ARM的處理器一般可以執(zhí)行ARM的指令集(32bit或者64bit)和Thumb指令集(16bit)。執(zhí)行不同的指令集時(shí)會(huì)進(jìn)行狀態(tài)跳轉(zhuǎn),但是狀態(tài)的跳轉(zhuǎn)不會(huì)影響處理器的工作模式和相應(yīng)存儲(chǔ)器的內(nèi)容。

            ARM->Thumb:操作數(shù)寄存器狀態(tài)為1,執(zhí)行BX指令。

            本文引用地址:http://www.biyoush.com/article/201611/317875.htm

            Thumb->ARM:操作數(shù)寄存器狀態(tài)為0,執(zhí)行BX指令?;蛘呤翘幚砥鬟M(jìn)行異常處理(IRQ,F(xiàn)IQ,Reset,Undef,Abort,SWI ARM狀態(tài)執(zhí)行)時(shí),把pc指針放入異常模式鏈接寄存器中,并從異常向量地址開始執(zhí)行程序,也可以使得處理器切換到ARM狀態(tài)。

            以上是整體指令集系統(tǒng)的情況,接下來說一下ARM處理器的運(yùn)行模式。用過Linux的都知道,操作系統(tǒng)有很多運(yùn)行模式,其實(shí)著很多的運(yùn)行模式也是需要處理器支持的。ARM處理器的運(yùn)行模式有七種:(除用戶模式,別的均屬于非用戶模式或者特權(quán)模式;除了用戶模式和系統(tǒng)模式,別的都稱為異常模式)

            用戶模式(USR):正常狀態(tài);

            快速中斷模式(FIQ):用于高速數(shù)據(jù)傳輸或通道形式;

            外部中斷模式(IRQ):用于通用的中斷處理;

            管理模式(SVC):操作系統(tǒng)使用的保護(hù)模式;

            數(shù)據(jù)訪問終止模式(ABT):當(dāng)數(shù)據(jù)或指令預(yù)取終止時(shí)進(jìn)入該模式,可用于虛擬存儲(chǔ)保護(hù)及存儲(chǔ)保護(hù);

            系統(tǒng)模式(SYS):運(yùn)行具有特權(quán)的操作系統(tǒng)任務(wù);(Linux下就是root用戶了)

            未定義指令中斷模式(UNDEF):當(dāng)未定義的指令時(shí)進(jìn)入該模式,可支持硬件協(xié)處理器的軟件仿真。

            那么我們?yōu)榱藢?shí)現(xiàn)以上的模式,我們?cè)谔幚砥鬟@里資源應(yīng)該如何分配呢?這里就涉及到寄存器組了。寄存器組就可以存儲(chǔ)這些模式,并在該模式下操作所需要的數(shù)據(jù)。

            以下就是ARM指令集的寄存器組:

            我們可以看到針對(duì)一些特定的模式寄存器組會(huì)有所改變。一共有37個(gè)32bit的寄存器。帶三角形的就是分組寄存器,專用寄存器。快速中斷的7個(gè)便于快速中斷。R0~R7是未分組寄存器,通用。

            當(dāng)別的除了快速中斷模式之外,別的模式因?yàn)橐L問R8~R12,就有可能在模式轉(zhuǎn)換的時(shí)候要保護(hù)現(xiàn)場(chǎng)。

            一般來說,R13就是堆棧寄存器,當(dāng)然指定別的寄存器也是可以的。

            R14其實(shí)就是子程序鏈接地址,比如遞歸的時(shí)候,它里面存的就是返回地址。比如匯編的

            MOV PC,LR

            BX LR

            以上就是實(shí)現(xiàn)了返回鏈接地址。另外R14還可以處理中斷或者異常返回。

            R15就是程序計(jì)數(shù)器(PC)。ARM的[31:2]來保存地址,因?yàn)槭?個(gè)字節(jié)。Thumb指令集就是[31:1]是地址,[0]=0。因?yàn)橹挥袃蓚€(gè)字節(jié),指令之間的地址就是相差2。由于是多級(jí)流水線設(shè)計(jì),所以保存PC的時(shí)候要注意PC會(huì)因流水線而改變。

            當(dāng)然上面說了很多模式還有什么狀態(tài)恢復(fù),返回之前狀態(tài),堆棧處理啊其實(shí)和真正你在寫處理器的時(shí)候不用管,因?yàn)楹芏喙δ苁峭ㄟ^調(diào)度實(shí)現(xiàn)的,不用太在意更高抽象層次的東西。在這里說一下只是增加一些在處理器硬件低層實(shí)現(xiàn)之后如果完成那些復(fù)雜程序有更多的了解。

            CPSR:也就是程序狀態(tài)寄存器。這種寄存器就是存儲(chǔ)整個(gè)程序執(zhí)行的一個(gè)狀態(tài)。包括了4 bit的條件代碼標(biāo)志(N,Z,C,V);2bit中斷禁止位(分別用于一種類型的中斷);5bit去對(duì)當(dāng)前處理器操作模式進(jìn)行編碼的位;1bit用于指示當(dāng)前執(zhí)行的是Thumb還是ARM指令集。

            如圖:

            中斷禁止位:I,F(xiàn)

            I = 1,禁止IRQ機(jī)制;F = 1,禁止FIQ機(jī)制。

            T表示標(biāo)志位,該位反應(yīng)了處理器的運(yùn)行狀態(tài)。


            如果模式不確定,那么就會(huì)導(dǎo)致進(jìn)行復(fù)位。

            看一下Thumb指令集系統(tǒng):


            thumb指令集系統(tǒng)的模式位的含義:



            關(guān)鍵詞: ARM架

            評(píng)論


            技術(shù)專區(qū)

            關(guān)閉