朱老師ARM裸機學習筆記(五):ARMCPU工作模式以及寄存器講解

ARM的約定

byte 8bits
halfword 16bits
word 32bits

ARM Core 提供的指令集

ARM指令集 32bits
Thumb 指令集 16bits
Thumb2 指令集 16&32bits

ARM CPU的七種工作模式

符號 解釋
User 用戶模式,大部分任務執行在這種模式
FIQ 快速中斷模式,當一個更高優先級中斷產生時,會進入這種模式
IRQ 中斷模式,當一個低優先級終端產生時,會進入這種模式
Supervisor 復位或軟中斷指令執行時會進入這種模式
Abort 存取異常,當存取異常時會進入這種模式
Undef 未定義指令,當執行未定義指令時會進入這種模式
System 系統模式,使用和User模式相同的寄存器集的特權模式

除User模式是normal(普通模式)外,其他6種都是Privilege(特權模式),特權模式中,除Sys模式外,其餘5種都是異常模式。
各種模式之間的切換,可以是程序員通過代碼手動切換(寫CPSR寄存器),也可以是CPU在某些情況下自動切換。
各種模式下可以訪問的CPU寄存器不同

ARM CPU的37個寄存器

ARM37寄存器
CPU在不同的模式下可以反問的CPU寄存器不同,上圖中黑色部分是user模式可以訪問的寄存器,FIQ中的黑色部分表示和User模式下的一樣,及FIQ模式下訪問的r0和User模式下的r0是同一個寄存器,而灰色的r8是FIQ模式特有的自己的寄存器。同理,IRQ下的r13,r14同樣也是自己模式下的私有寄存器,只有在自己的模式下才能訪問。

ARM共有37個寄存器,都是32位長度。
37個寄存器中30個爲通用型,1個固定用作PC,一個固定用做CPSR,五個固定用做5種異常模式下的SPSR。

CPSR寄存器用以表明CPU的某些狀態信息。各位意義如下圖
CPSR
SPSR寄存器用於,保存進入異常模式時保存CPSR中的數據,當從異常模式返回用戶模式時,用以恢復CPSR中的數據。
r15寄存器也叫pc (program control)寄存器,是程序指針,pc指向哪裏,CPU就會執行pc指向地址的指令。

ARM異常處理

所有正常工作之外的流程叫做異常。中斷也是異常的一種。
當異常發生時,CPU會自動跳轉到固定的地址運行,這個固定的地址就是終端向量表,中斷向量表中存儲所有異常的應跳轉到的程序地址。異常向量表是硬件向軟件提供的處理異常的支持。

ARM異常處理流程:當異常產生式,首先拷貝CPSR到 SPSR_,
然後設置適當的CPSR位,改變處理器工作模式,進入ARM態,進行異常處理,保存返回地址LR_設置PC爲相應的異常向量。
當異常返回時,從SPSR_恢復CPSR,從LR_恢復PC
這些操作只能在ARM態進行。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章