Cortex-M3寄存器组
1、通用目的寄存器R0~R7
???????? R0-R7 也被稱為低組寄存器。所有指令都能訪問它們。它們的字長全是 32 位,復位后的初始值是不可預料的。
2、通用目的寄存器 R8-R12
? ? ? ? ?R8-R12 也被稱為高組寄存器。這是因為只有很少的 16 位 Thumb 指令能訪問它們, 32 位的thumb-2 指令則不受限制。它們也是 32 位字長,且復位后的初始值是不可預料的。
3、特殊功能寄存器
程序狀態(tài)寄存器:APSR, IPSR, EPSR??---- 通過MRS/MSR 指令,這3 個PSRs 即可以單獨訪問,也可以組合訪問(2 個組合,3 個
組合都可以)。當使用三合一的方式訪問時,應使用名字“xPSR”或者“PSR”。
APSR:
N:負條件碼標志位,運算結(jié)果小于0,N=1, 大于等于0,N=0;
Z:零條件碼標志位,運算結(jié)果為0,Z=1;
C:進位條件碼標志位,運算指令產(chǎn)生進位(無符號加法溢出),C=1;
V:溢出條件碼標志位,運算溢出(有符號加法溢出), V=1;
Q:飽和條件碼標志位;
IPSR:處于線程模式時,該位域為0;在手柄模式下,該位域為當前異常的異常號。
EPSR:
T:Thumb狀態(tài), T=1,ARM狀態(tài),T=0;?
PRIMASK, FAULTMASK 和 BASEPRI:控制異常的使能和除能?
控制寄存器CONTROL:其一用于定義特權級別,其二用于選擇當前使用哪個堆棧指針。
4、堆棧指針R13
R13 是堆棧指針。在 CM3 處理器內(nèi)核中共有兩個堆棧指針,于是也就支持兩個堆棧。當引用 R13(或?qū)懽?SP)時,引用到的是當前正在使用的那一個,另一個必須用特殊的指令來訪問( MRS,MSR指令)。
主堆棧指針(MSP),或?qū)懽?SP_main。這是缺省的堆棧指針,它由 OS 內(nèi)核、異常服務例程以及所有需要特權訪問的應用程序代碼來使用。
進程堆棧指針(PSP),或?qū)懽?SP_process。用于常規(guī)的應用程序代碼(不處于異常服用例程中時)。
5、連接寄存器R14
R14 是連接寄存器( LR)。在一個匯編程序中,你可以把它寫作 both LR 和 R14。 LR 用于在調(diào)用子程序時存儲返回地址。例如,當你在使用 BL(分支并連接, Branch and Link)指令時,就自動填充 LR的值。
6、程序計數(shù)器R15
R15 是程序計數(shù)器,在匯編代碼中一般我們都都叫它的外號“ PC”。因為 CM3 內(nèi)部使用了指令流水線,讀 PC 時返回的值是當前指令的地址+4。
總結(jié)
以上是生活随笔為你收集整理的Cortex-M3寄存器组的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 宣战抖音!腾讯与头条之战的新局面与猜想
- 下一篇: TED演讲:数据科学家最重要的技能是什么