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指令。在程式的執行過程中,微處理器可以隨時在兩種工作狀態之間切換,並且,處理器工作狀態的轉變...