ARM Core的處理器模式與暫存器,結構雜談

2021-09-06 23:10:39 字數 2806 閱讀 7153

arm處理器的工作狀態:arm處理器有兩種工作狀態。在程式的執行過程中,處理器可以在兩種工作狀態之間切換,並且不影響

相應暫存器中的內容。

arm狀態,此時處理器執行32位對齊的arm指令;bx指令,當運算元暫存器最低位為0時,進入arm狀態。

thumb,此時處理器執行16位對齊的thumb指令。bx指令,當運算元暫存器最低位為1時,進入thumb狀態。

bx(branch exchange):bx rn;   ##其中rn可以是r0-r15中的任意乙個。指令通過將暫存器rn的內容拷貝到程式計數器pc

來完成4gbyte的位址空間的跳轉。

在進入異常中斷後,arm核心會自動切換到arm狀態,所以在異常中斷處理程式入口的是arm指令,如果需要切換到thumb狀態

必須在異常中斷返回前,切換到arm工作狀態。當處理器在thumb狀態下發生異常時,返回後,自動切換到thumb狀態。

arm處理器總是從arm工作狀態開始的。

arm處理器的7中工作模式:

use模式:正常使用者模式。

fiq模式:快速中斷模式,支援高速資料傳輸。

irq模式:普通中斷模式。

svc模式:supervisor模式,作業系統保護模式,處理軟體中斷swi,reset.

abt模式:資料,指令中止模式。

und模式:未定義模式,支援軟體**。

sys模式:系統模式,執行特權作業系統任務。

除使用者模式之外的6中模式稱為特權模式,特權模式下,程式可以訪問所有的系統資源,可以任意的進行處理器模式的切換。

使用者模式下不能訪問一些受作業系統保護的系統資源,不能直接進行處理器模式切換,需要由應用程式產生異常處理。

特權模式中,除系統模式之外的5種模式稱為異常模式。

fiq要比irq的響應快很多,首先fiq的優先順序比較高,再次arm的fiq會有自己更多的暫存器,由arm自動儲存。

返回:將lr中的值減相應的偏移量送到pc中,將spsr的值複製到cpsr中。

異常向量表:0x0000_0000---復位reset,進入svc模式。

0x0000_0004---未定義指令,進入und模式。

0x0000_0008---軟體中斷,進入svc模式。

0x0000_000c---中止指令,進入abt模式。

0x0000_0010---中止資料,進入abt模式。

0x0000_0014---保留

0x0000_0018---irq中斷,進入irq模式。

0x0000_001c---fiq中斷,進入fiq模式。

arm處理器中一共有37個暫存器。分別有31個通用暫存器:r0-r15, r13_svc, r14_svc, r13_abt, r14_abt, r13_und,

r14_und, r13_irq, r14_irq, r8_frq----r14_frq。

6個狀態暫存器:cpsr, spsr_svc, spsr_abt, spsr_und, spsr_irq, spsr_fiq。

r13通常用作堆疊指標。r14通常用作子程式連線。

cpsr當前程式狀態暫存器。spsr備份程式狀態暫存器。

31--28:nzcv(negative zero carry overflow)

27---8:reserve

7----5:ift(irq disable fiq disable state bit)

4----0:mode bits

0b10000---使用者模式,0b10001---fiq模式,0b10010---irq模式,0b10011---svc模式,0b10111---abt模式,

0b11011---und模式,0b11111---sys模式。

question:為什麼會根據rn的最低位來切換狀態呢,最低位是1表示8位對齊而不是16位啊。難道arm本身是16位位址對齊??

arm處理器的架構發展:

arm系統一般包括:mpcore,debug and trace,smmu,gic,amba bus,security擴充套件,

arm中最多支援16個coprocessor,cp0-cp15,其中cp8-cp15是由arm reserve的,cp0-cp7是imp defined的。

arm的coprocessor model中,coprocessor一般包括,

1) 組成coprocessor inte***ce的primary,secondary coprocessor暫存器;

2) internal暫存器;

armv7以及之前的版本中,包含的coprocessor有:

1) cp15,提供memory,cache,tcm的控制,和系統中非debug功能的暫存器;也被稱為系統控制協處理器

2) cp14,提供其他系統暫存器的訪問,包括debug,trace;

3) cp10,cp11,用作simd,vfp的控制,需要同時使用。

arm的協處理器指令包括五個:

1) cdp,協處理器數操作指令,

2) ldc,協處理器資料載入指令,

3) stc,協處理器資料儲存指令,

4) mcr,arm暫存器到協處理器暫存器的資料傳送指令,

5) mrc,協處理器暫存器到arm暫存器的資料傳送指令,

命令格式:

物理處理器與邏輯處理器

記錄解決方案,自己實際處理過,方案可用,在自己的部落格中記錄一下。cpu central processing unit 是 處理單元,本文介紹物理cpu,物理cpu核心,邏輯cpu,以及他們三者之間的關係。乙個物理cpu可以有1個或者多個物理核心,乙個物理核心可以作為1個或者2個邏輯cpu。物理c...

ARM處理器模式

cpsr暫存器 arm v4的cpsr暫存器 和儲存它的spsr暫存器 中的位分配如下圖所示。處理器模式決定了哪些暫存器是活動的以及對cpsr訪問權。處理器模式要麼是特權模式,要麼是非特權模式。特權模式允許對cpsr的完全讀 寫訪問 與些相反,非特權模式只允許對cpsr的控制域進行讀訪問,但允許對條...

arm處理器模式和arm處理器狀態的區別

arm處理器狀態 arm微處理器的工作狀態一般有兩種,並可在兩種狀態之間切換 第一種為arm狀態,此時處理器執行32位的字對齊的arm指令 第二種為thumb狀態,此時處理器執行16位的 半字對齊的thumb指令。在程式的執行過程中,微處理器可以隨時在兩種工作狀態之間切換,並且,處理器工作狀態的轉變...