Cortex M3寄存器组
寄存器組
宗旨:技術的學習是有限的,分享的精神是無限的。
?
1、通用目的寄存器R0~R7
???????? R0-R7 也被稱為低組寄存器。所有指令都能訪問它們。它們的字長全是 32 位,復位后的初始值是不可預料的。
2、通用目的寄存器?R8-R12
? ? ? ? ?R8-R12 也被稱為高組寄存器。這是因為只有很少的 16 位 Thumb 指令能訪問它們, 32 位的thumb-2 指令則不受限制。它們也是 32 位字長,且復位后的初始值是不可預料的。
3、特殊功能寄存器
程序狀態寄存器:APSR, IPSR, EPSR??---- MRS/MSR
APSR:
N:負條件碼標志位,運算結果小于0,N=1, 大于等于0,N=0;
Z:零條件碼標志位,運算結果為0,Z=1;
C:進位條件碼標志位,運算指令產生進位(無符號加法溢出),C=1;
V:溢出條件碼標志位,運算溢出(有符號加法溢出), V=1;
Q:飽和條件碼標志位;
IPSR:處于線程模式時,該位域為0;在手柄模式下,該位域為當前異常的異常號。
EPSR:
T:Thumb狀態, T=1,ARM狀態,T=0;?
PRIMASK, FAULTMASK 和 BASEPRI:控制異常的使能和除能?
控制寄存器CONTROL:其一用于定義特權級別,其二用于選擇當前使用哪個堆棧指針。
4、堆棧指針R13
R13 是堆棧指針。在 CM3 處理器內核中共有兩個堆棧指針,于是也就支持兩個堆棧。當引用 R13(或寫作 SP)時,引用到的是當前正在使用的那一個,另一個必須用特殊的指令來訪問( MRS,MSR指令)。
主堆棧指針(MSP),或寫作 SP_main。這是缺省的堆棧指針,它由 OS 內核、異常服務例程以及所有需要特權訪問的應用程序代碼來使用。
進程堆棧指針(PSP),或寫作 SP_process。用于常規的應用程序代碼(不處于異常服用例程中時)。
5、連接寄存器R14
R14 是連接寄存器( LR)。在一個匯編程序中,你可以把它寫作 both LR 和 R14。 LR 用于在調用子程序時存儲返回地址。例如,當你在使用 BL(分支并連接, Branch and Link)指令時,就自動填充 LR的值。
6、程序計數器R15
R15 是程序計數器,在匯編代碼中一般我們都都叫它的外號“ PC”。因為 CM3 內部使用了指令流水線,讀 PC 時返回的值是當前指令的地址+4。
?
版權聲明:原創不易,轉載請注明出處:http://blog.csdn.net/wqx521總結
以上是生活随笔為你收集整理的Cortex M3寄存器组的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: KEIL和source insight混
- 下一篇: 【Tomcat】Unrecognized