ARM体系架构之——处理器工作模式

一、ARM 有7个基本工作模式:
User : 非特权模式,大部分任务执行在这种模式(一般都是在这种模式)
FIQ : 当一个高优先级(fast) 中断产生时将会进入这种模式
IRQ : 当一个低优先级(normal) 中断产生时将会进入这种模式
Supervisor :当复位或软中断指令执行时将会进入这种模式(SVC )
Abort : 当存取异常时将会进入这种模式(访问地址异常)
Undef : 当执行未定义指令时会进入这种模式(读取不识别的指令)
System : 使用和User模式相同寄存器集的特权模式
二、如何进行工作模式的切换
1、程序员通过写CPSR寄存器
2、在某些情况下自动运行切换到模式
三、为什么要搞这么多工作模式?
大家可以想想普通的PC机,有用户权限和管理员权限,就是为了考虑安全等级因素设计的。
四、ARM的通用寄存器
我们通常访问特殊功能寄存器是具有特定地址的,对地址进行操作也就是将内容写入到该寄存器中。通用寄存器是没有地址的,是CPU设计时候的一些特定寄存器。例如r0-r12、CPSR、SPSR等。
在不同的模式下,寄存器有些是特有的,例如r13、r14。每种模式都有自己的r13 r14。我们称像r13、r14这样的寄存器为影子寄存器。下面列举所有模式下的所有寄存器:
这里写图片描述
特征:
(1)每种模式下都有SP栈指针,用于本模式下的栈管理。例如函数内部的变量操作就是使用的是栈。
(2)每种模式都是lr(存储的是程序的返回地址),教科书说的太官方了。这里举个例子:假设当前是从user模式切换到irq模式(其实就是发送了普通中断)那么此时irq模式下的的lr寄存器会保存user模式下的返回地址。这样从irq模式返回到user模式,我们需要做的只是将irq模式下的lr寄存器中的内容给PC即可。
(3)为什么设计cpsr和spsr呢?cpsr是user模式独有的。当我们从user模式切换到irq模式时,将cpsr会自动保存到irq模式下的spsr寄存器。这样当从irq模式切换回user模式时候,只需要将irq模式下的spsr寄存器内容给cpsr寄存器即可。Mode是用于控制处理器模式。
这里写图片描述
(4)PC:程序控制寄存器,也叫程序指针 指针指向哪里,CPU就运行哪段程序代码。
在后面的中断系统文章,会针对这个异常处理进行程序的设计和解读。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值