您的位置:網站首頁 > 電器維修資料網 > 正文 >
ARM寄存器基本概念
來源: 日期:2013-12-18 14:01:00 人氣:標簽:
1、備份寄存器(R8-R14)
對于R8-R12來說,除在快速中斷模式下,每個模式對應相同物理寄存器,所以在FIQ模式下可不必保護和恢復中斷現場。
對于R13-R14來說,每個寄存器對應6個不同的物理寄存器,其中一個是用戶模式和系統模式共用的。
寄存器R13常用做棧指針SP,除用戶和系統模式外,其他模式在使用時的名字構成為R13_。
寄存器R14又被稱
2、不分組寄存器(R0-R7)
不分組也就是說說,在所有的處理器模式下指的都時同一物理寄存器。在異常中斷造成處理器模式切換時,由于不同的處理器模式使用一個名字相同的物理寄存器,就是使用的同一個寄存器,這樣可能造成寄存器中數據被破壞,所以在進行模式切換時必須加以保護。
為連接寄存器(LR),除用戶和系統模式外,其他模式在使用時的名字構成為 R14_。
有下面兩種特殊用途:
A、每個處理器模式自己的物理R14中存放在當前子程序的返回地址。當通過BL或BLX指令調用子程序時,R14被設置成該子程序的返回地址。
B、當異常中斷發生時,該異常模式下的R14被設置成保存該模式基于PC的返回地址,對于有些異常模式,R14的值有可能與將返回的地址有個常數的偏移量,不同模式偏移量還有所不同(在ARM 的異常處理里有詳細介紹)。
3、程序計數器R15
對于用戶來說,盡量避免使用STR/STM指令來保存R15的值。當成功向R15寫入一個地址數值時,程序將跳轉到該地址執行。
在ARM狀態下指令總是字對齊的,所以PC的PC[1:0]位恒為零,在想PC寫入地址時一定要注意將PC[1:0]設為零。
ARM采用的是3級流水線結構,所以PC指向的是當前執行指令的下兩條指令,PC-8為當前指令地址。
4、程序狀態寄存器
CPSR(當前程序狀態寄存器)可以在任何處理器模式下被訪問。同時除了用戶和系統模式以外,每中處理器模式下都有一個專用的物理狀態寄存器,稱為 SPSR(備份程序狀態寄存器)。當特定的異常中斷發生時,這個寄存器用于存放當前程序狀態寄存器的內容。當在用戶模式和系統模式中訪問SPSR,將會產生不可預知的結果。
CPSR和SPSR的格式相同,如下:
0:M0
1:M1
2:M2
3:M3
4:M4
5:T(=1 Thumb執行)
6:F(=1是禁止)
7:I(=1是禁止)
注意:M0~M4并不是所有的組合都定義了有效的處理模式,如果錯誤設置,將會引起無法預料的錯誤。
27:Q 在ARM V5的E系列處理器中,CPSR的bit[27]稱為q標識位,主要用于指示增強的DSP指令是否發生了溢出。同樣的spsr的bit[27]位也稱為q 標識位,用于在異常中斷發生時保存和恢復CPSR中的Q標識位。
在ARM V5以前的版本及ARM V5的非E系列的處理器中,Q標識位沒有被定義
28:V 對于加減運算指令,當操作數和運算結果為二進制的補碼表示的帶符號數時,V=1表示符號為溢出;通常其他指令不影響V位。
對于其他指令,V統常不發生變化。
29:C 下面分四種情況討論C的設置方法:
在加法指令中(包括比較指令CMN),當結果產生了進位,則C=1,表示無符號運算發生上溢出;其他情況C=0。
在減法指令中(包括減法指令CMP),當運算中發生借位,則C=0,表示無符號運算數發生下溢出;其他情況下C=1。
對于包含移位操作的非加減運算指令,C中包含 后一次移出位的數值。
對于其他非加減運算指令,C位的值通常不受影響。
30:Z z="1表示運算的結果為零";z=0表示運算的結果不為零。對于CMP指令,Z=1表示進行比較的兩個數大小相等。
31:N 當兩個表示的有符號整數運算時,n=1表示運算結果為負數,n=0表示結果為正書或零。
MRS:狀態寄存器到通用寄存器的傳送指令。
MSR:通用寄存器到狀態寄存器的傳送指令
【看看這篇文章在百度的收錄情況】
相關文章
- 上一篇: 數字集成電路使用規則
- 下一篇: 基于AT89S51的多機通信