ARM中特殊的功能寄存器

ARM7,ARM9,ARM11 有37个32-Bits长的寄存器.
1 个用作PC( program counter)
1个用作CPSR(current program status register)
5个用作SPSR(saved program status registers)
30 个通用寄存器

Cortex体系结构下有40个32-Bits长的寄存器
Cortex-A(ARM-v7)多出3个寄存器,Monitor 模式 r13_mon , r14_mon, spsr_mon
1 个用作PC( program counter)
1个用作CPSR(current program status register)
6个用作SPSR(saved program status registers)
32 个通用寄存器

本文只做特殊寄存器的分析
R13 —> sp (the Stack Pointer) 栈指针寄存器
SP中存放的是栈顶的地址。

R14 —> lr (the link Register) 链接寄存器
保存程序的返回地址

R15 —> pc (the Program Counter) 程序计数寄存器
存放当前取指指令的地址

cpsr —> current program status register
当前程序状态寄存器
作用:保存当前程序的运行状态

spsr —> saved program status registers
保存程序状态寄存器
作用:对cpsr寄存器进行备份

CPSR寄存器详解
N[31]:运算结果为负数,N位被自动置1,否则为0

Z[30]:运算结果为0,Z位被自动置1,否则为0

C[29]:
加法:
产生进位,C位被自动置1,否则为0
进位:低32位 向 高32位进位
减法:
产生借位,C位被自动清零,否则为1
借位:低32位 向 高32位借位

V[28]:符号位发生变化,V位被自动置1,否则为0。

I[7]:
I = 0 : 使能IRQ中断
I = 1 : 禁止IRQ中断
F[6]
F = 0 : 使能FIQ中断
F = 1 : 禁止FIQ中断
T[5]:状态位
T = 0 : ARM状态
T = 1 : Thumb状态
M[4:0]:模式位
0b10000 User mode;
0b10001 FIQ mode;
0b10011 SVC mode;
0b10111 Abort mode;
0b11011 Undfined mode;
0b11111 System mode;
0b10110 Monitor mode;
0b10010 IRQ mode;
其他保留
对应的模式简介
ARM7、ARM9、ARM11 有7个基本工作模式:
User : 非特权模式,大部分任务执行在这种模式
FIQ : 当一个高优先级(fast) 中断产生时将会进入这种模式
IRQ : 当一个低优先级(normal) 中断产生时将会进入这种模式
Supervisor(SVC) :当复位或软中断指令执行时将会进入这种模式
Abort : 当存取异常时将会进入这种模式
Undef : 当执行未定义指令时会进入这种模式
System : 使用和User模式相同寄存器集的特权模式

Cortex-A特有模式:
Monitor : 是为了安全而扩展出的用于执行安全监控代码的模式;
也是一种特权模式

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值