Cortex M3暫存器組

2021-08-15 07:32:21 字數 1845 閱讀 8076

暫存器組

宗旨:技術的學習是有限的,分享的精神是無限的。

、通用目的暫存器

r0~r7

r0-r7 也被稱為低組暫存器。所有指令都能訪問它們。它們的字長全是 32 位,復位後的初始值是不可預料的。

2

、通用目的暫存器

r8-r12

r8-r12 也被稱為高組暫存器。這是因為只有很少的 16 位 thumb 指令能訪問它們, 32 位的thumb-2 指令則不受限制。它們也是 32 位字長,且復位後的初始值是不可預料的。

3

、特殊功能暫存器

程式狀態暫存器:apsr, ipsr, epsr  ---- mrs/msr

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:其一用於定義特權級別,其二用於選擇當前使用哪個堆疊指標。

、堆疊指標

r13r13 是堆疊指標。在 cm3 處理器核心中共有兩個堆疊指標,於是也就支援兩個堆疊。當引用 r13(或寫作 sp)時,引用到的是當前正在使用的那乙個,另乙個必須用特殊的指令來訪問( mrs,msr指令)。

主堆疊指標(msp),或寫作 sp_main。這是預設的堆疊指標,它由 os 核心、異常服務例程以及所有需要特權訪問的應用程式**來使用。

程序堆疊指標(psp),或寫作 sp_process。用於常規的應用程式**(不處於異常服用例程中時)。

5

、連線暫存器

r14r14 是連線暫存器( lr)。在乙個匯程式設計序中,你可以把它寫作 both lr 和 r14。 lr 用於在呼叫子程式時儲存返回位址。例如,當你在使用 bl(分支並連線, branch and link)指令時,就自動填充 lr的值。

6

、程式計數器

r15r15 是程式計數器,在彙編**中一般我們都都叫它的外號「 pc」。因為 cm3 內部使用了指令流水線,讀 pc 時返回的值是當前指令的位址+4。

Cortex M3暫存器組

通用目的暫存器 r0 r7 r0 r7 也被稱為低組暫存器。所有指令都能訪問它們。它們的字長全是 32 位,復位後的初始值是不可預料的。2 通用目的暫存器 r8 r12 r8 r12 也被稱為高組暫存器。這是因為只有很少的 16 位 thumb 指令能訪問它們,32 位的thumb 2 指令則不受限...

Cortex M3儲存器對映

cortexm3儲存器系統 宗旨 技術的學習是有限的,分享的精神是無限的。cm3 只有乙個單一固定的儲存器對映。這一點極大地方便了軟體在各種 cm3 微控制器間的移植。儲存空間的一些位置用於除錯元件等私有外設,這個位址段被稱為 私有外設區 私有外設區的元件包括 快閃儲存器位址過載及斷點單元 fpb ...

Cortex M3異常筆記

異常型別 cortex m3編號為1 15對應系統異常,大於等於16的全部是核心級額外部中斷,除個別異常 復位,nmi,硬fault 的優先順序被定死之外,其他異常優先順序都是可以程式設計的。如果乙個發生的異常不能即刻響應,就稱它被 懸起 pending 少數異常時不能被懸起的。乙個異常被懸起的原因...