寄存器概述
寄存器是中央處理器內(nèi)的組成部分。寄存器是有限存貯容量的高速存貯部件,它們可用來暫存指令、數(shù)據(jù)和地址。在中央處理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序計數(shù)器(PC)。在中央處理器的算術(shù)及邏輯部件中,存器有累加器(ACC)。
寄存器的原理組成
寄存器的基本單元是D觸發(fā)器,按照其用途分為基本寄存器和移位寄存器。
基本寄存器是由D觸發(fā)器組成,在CP脈沖作用下,每個D觸發(fā)器能夠寄存一位二進制碼。在D=0時,寄存器儲存為0,在D=1時,寄存器儲存為1。
在低電平為0、高電平為1時,需將信號源與D間連接一反相器,這樣就可以完成對數(shù)據(jù)的儲存。
移位寄存器按照移位方向可以分為單向移位寄存器和雙向移位寄存器。
單向移位寄存器是由多個D觸發(fā)器串接而成。在串口Di輸入需要儲存的數(shù)據(jù),觸發(fā)器FF0就能夠儲存當(dāng)前需要儲存數(shù)據(jù),在CP發(fā)出一次時鐘控制脈沖時,串口Di同時輸入第二個需要儲存是的數(shù)據(jù),而第一個數(shù)據(jù)則儲存到觸發(fā)器FF1中。
雙向移位寄存器排列,調(diào)換連接端順序,可以控制寄存器向左移位,增加控制電路可以使寄存器右移,這樣構(gòu)成雙向移位寄存器。
ARM寄存器組成
在ARM狀態(tài),16個通用寄存器(R0-R15)和一個狀態(tài)寄存器在任意時刻都可見。在特權(quán)(非用戶)模式下,將切換到指定模式的分組(banked)寄存器。(PS.分組寄存器的概念下文可見)
ARM狀態(tài)時寄存器被設(shè)為包含16個直接可以訪問的寄存器:R0到R15。除了R15,其他全部寄存器都為通用寄存器,如可能用于保存數(shù)據(jù)或地址值。除此之外,還有第17個寄存器用于存儲狀態(tài)信息。
R8~R14、SPSR寄存器則被切換到各個模式下的私有寄存器組上,不同的模式下可以訪問相應(yīng)的私有寄存器。表1顯示了在每種模式下,哪些寄存器是有效的(陰影部分的寄存器都是私有寄存器)。
表1 ARM狀態(tài)下的寄存器組織結(jié)構(gòu)
從表1中我們可以看出:
☆ R0~R7、R15、CPSR寄存器組在任何模式下都是共用的,可訪問的;
☆ R8~R12寄存器組在快中斷模式下(fiq)對應(yīng)一套私有寄存器組R8_fiq~R12_fiq,在其他模式下共用另一套寄存器組;
☆ R13、R14寄存器在用戶(user)和系統(tǒng)(sys)模式下共用一套;其他模式(管理(svc)、中止(abt)、未定義(und)、中斷(irq)、快中斷(fiq)模式)下都具有兩個私有寄存器R13和R14。這就使得這些模式中的每一種模式都具有各自的堆棧寄存器指針R13和鏈接寄存器R14,分別用于堆棧處理和異常退出;
☆ SPSR寄存器可用于保存CPSR的值,在用戶和系統(tǒng)模式下不能訪問,在其他模式下都有私有的SPSR寄存器。
表1中第二列列舉了寄存器在匯編語言中的名稱,其中括號中的內(nèi)容是別稱。下面我們對這些寄存器的功能進行介紹。
1、一般通用寄存器 R0~R12
寄存器R0~R12為保存數(shù)據(jù)或地址值的一般通用寄存器。其中寄存器R0~R7為未分組的寄存器,R8~R12為分組寄存器。
未分組的寄存器意味著對于任何處理器模式,他們中的每一個都對應(yīng)于相同的32位物理寄存器。他們是完全通用的寄存器,
分組寄存器意味著同一個寄存器名對應(yīng)多個物理寄存器,具體所對應(yīng)的物理寄存器取決于當(dāng)前的處理器模式。參照表1,寄存器R8~R12有兩個分組物理寄存器。一組用于除FIQ模式之外的所有寄存器模式(R8~R12),另一組用于FIQ模式(R8_fiq~R12_fiq)。、
寄存器R8~R12在ARM體系結(jié)構(gòu)中沒有特定的用途。不過對于那些只使用R8~R14來說就足夠處理的簡單的中斷,F(xiàn)IQ所單獨使用的這些寄存器可實現(xiàn)快速的中斷處理。
2、堆棧指針 R13
寄存器R13(也稱為堆棧指針或SP)有6個分組的物理寄存器,見表2-1。一個用于用戶和系統(tǒng)模式,其余5個分別用于5種異常模式。
寄存器R13通常作為堆棧指針SP。在ARM指令集中,R13大都用在對各個模式下的堆棧操作。每個異常模式都具備私有的R13寄存器,它通常指向由異常模式所專用的堆棧。在入口處,通常將寄存器值保存到這個堆棧。在模式轉(zhuǎn)換前將當(dāng)前寄存器的值保存到堆棧中,然后從將要切換的模式堆棧中將這些值從堆棧重裝到已切換的模式寄存器中,這種處理方法可確保異常發(fā)生時的程序狀態(tài)不會被破壞。
3、鏈接寄存器 R14
寄存器R14(也稱為鏈接寄存器或LR)有6個分組的物理寄存器,見表2-1。一個用于用戶和系統(tǒng)模式,其余5個分別用于5種異常模式,對應(yīng)的私有寄存器有R14_svc,R14_irq,R14_fiq,R14_abt和R14_und。寄存器R14有三種用途:
☆ 當(dāng)發(fā)生異常時,它被設(shè)置為該異常返回地址;
☆ 在執(zhí)行分支和鏈接(BL)指令時,它用于保存子程序的返回地址;
☆ 而在其他時候,可以作為一個通用寄存器來對待。
4、程序計數(shù)器 R15
寄存器R15(也稱為程序計數(shù)器或PC)總是用于特殊用途,它總是指向下一條要讀取指令的地址。你可以把R15當(dāng)作通用寄存器使用,但使用時還有與指令有關(guān)的限制或特殊情況。如果R15使用的方式超過了這些限制,那么指令將是不可預(yù)測的。
由于ARM7采用3級流水線結(jié)構(gòu),在ARM狀態(tài)下,讀取R15的值是當(dāng)前執(zhí)行指令地址 + 8。ARM指令以字為單位,讀取R15結(jié)果的bit[1:0]總是為0b00。
對R15進行寫時,如果這條寫指令沒有超過對R15使用的限制,那么寫入R15的正常結(jié)果值被當(dāng)成一個指令地址,程序會從這個地址處繼續(xù)執(zhí)行(相當(dāng)于執(zhí)行無條件跳轉(zhuǎn)指令)。因為ARM指令以字為邊界,所以寫入R15值的bit[1:0]通常為0b00。
5、CPSR和SPSR
所有模式共享一個程序狀態(tài)寄存器CPSR。在異常模式中,程序狀態(tài)保存寄存器SPSR可以被訪問,每種異常具有自己私有的SPSR。在進入異常時,它保存CPSR的當(dāng)前值;在異常退出時,可通過它(SPSR)恢復(fù)CPSR。
寄存器的用途
1.可將寄存器內(nèi)的數(shù)據(jù)執(zhí)行算術(shù)及邏輯運算。
2.存于寄存器內(nèi)的地址可用來指向內(nèi)存的某個位置,即尋址。
3.可以用來讀寫數(shù)據(jù)到電腦的周邊設(shè)備。
-
寄存器
+關(guān)注
關(guān)注
31文章
5268瀏覽量
119640 -
D觸發(fā)器
+關(guān)注
關(guān)注
3文章
164瀏覽量
47793
發(fā)布評論請先 登錄
相關(guān)推薦
評論