新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > ARM微處理器的編程模型之:ARM寄存器組織

ARM微處理器的編程模型之:ARM寄存器組織

作者: 時間:2013-09-13 來源:網(wǎng)絡(luò) 收藏

本文引用地址:http://butianyuan.cn/article/257086.htm

【例3.2】

使用SUBS指令從寄存器r1中減去常量1,然后把結(jié)果寫回到r1,其中CPSR的Z位將受到影響。

指令執(zhí)行前:

CPSR中Z=0

r1=0x00000001

SUBS r1,r1,#1

SUB指令執(zhí)行結(jié)束后:

r1=0x0

CPSR中Z=1

目的寄存器是r15的帶“位設(shè)置”的算術(shù)和邏輯運算指令,也可以將SPSR的值復(fù)制到CPSR中,這種操作主要用于從異常中斷程序中返回。

用MSR指令向CPSR/SPSR寫進(jìn)新值。

目的寄存器位r15的MRC協(xié)處理器指令通過這條指令可以將協(xié)處理器產(chǎn)生的條件標(biāo)志位的值傳送到處理器。

在中斷返回時,使用LDR指令的變種指令可以將SPSR的值復(fù)制到CPSR中。

2.Q標(biāo)志位

在帶DSP指令擴(kuò)展的 v5及更高版本中,bit[27]被指定用于指示增強(qiáng)的DAP指令是否發(fā)生了溢出,因此也就被稱為Q標(biāo)志位。同樣,在SPSR中bit[27]也被稱為Q標(biāo)志位,用于在異常中斷發(fā)生時保存和恢復(fù)CPSR中的Q標(biāo)志位。

v5以前的版本及ARM v5的非E系列處理器中,Q標(biāo)志位沒有被定義。屬于待擴(kuò)展的位。

3.控制位

CPSR的低8位(I、F、T及M[4∶0])統(tǒng)稱為控制位。當(dāng)異常發(fā)生時,這些位的值將發(fā)生相應(yīng)的變化。另外,如果在特權(quán)模式下,也可以通過軟件編程來修改這些位的值。

① 中斷禁止位

I=1,IRQ被禁止。

F=1,F(xiàn)IQ被禁止。

② 狀態(tài)控制位

T位是處理器的狀態(tài)控制位。

T=0,處理器處于ARM狀態(tài)(即正在執(zhí)行32位的ARM指令)。

T=1,處理器處于Thumb狀態(tài)(即正在執(zhí)行16位的Thumb指令)。

當(dāng)然,T位只有在T系列的ARM處理器上才有效,在非T系列的ARM版本中,T位將始終為0。

③ 模式控制位

M[4∶0]作為位模式控制位,這些位的組合確定了處理器處于哪種狀態(tài)。表3.3列出了其具體含義。

只有表中列出的組合是有效的,其他組合無效。

表3.3 狀態(tài)控制位M[4∶0]

M[4∶0]

處理器模式

可以訪問的寄存器

0b10000

User

PC,r14~r0,CPSR

0b10001

FIQ

PC,r14_fiq~r8_fiq,r7~r0,CPSR,SPSR_fiq

0b10010

IRQ

PC,r14_irq~r13_irq,r12~r0,CPSR,SPSR_irq

0b10011

Supervisor

PC,r14_svc~r13_svc,r12~r0,CPSR,SPSR_svc

0b10111

Abort

PC,r14_abt~r13_abt,r12~r0,CPSR,SPSR_abt

0b11011

Undefined

PC,r14_und~r13_und,r12~r0,CPSR,SPSR_und

0b11111

System

PC,r14~r0,CPSR(ARM v4及更高版本)

注意

由于用戶模式(User)和系統(tǒng)模式(System)是非異常模式,所以沒有單獨的SPSR保存程序狀態(tài)字。在用戶模式或系統(tǒng)模式下,讀SPSR將返回一個不可預(yù)知的值,而寫SPSR將被忽略。

塵埃粒子計數(shù)器相關(guān)文章:塵埃粒子計數(shù)器原理

上一頁 1 2 3 4 下一頁

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉