异常和中断体系 基础的知识

ARM处理器有7中模式: 用户模式(User).快速中断模式(FIQ),外部中断模式(IRQ),特权模式(sve),数据访问中止模式(abt),未定义指令中止 模式(und),系统模式 (sys),除了系统模式和用户模式剩余5种特权模式称为异常模式

当应用程序发生异常中断的时候,处理器进入相应的异常模式,每一种异常模式中都有一组寄存器,供相应的异常处理程序的使用.

arm寄存器的介绍:31个通用寄存器,6个状态寄存器,可见的寄存器有15个通用寄存器(R0~R15),一个或者两个寄存器及程序计数器。在所有寄存器中,所有的模式用的同一个物理寄存器,有一些寄存器是各种模式自己独立的物理寄存器

通用寄存器分为3类:未备份的寄存器(R0~R7),备份寄存器(R8~R14),程序计数器R15(同时称为PC)

寄存器R13在RAM中常用 作为栈指针,当进入异常模式的时候,可以将需要的保存 的寄存器放载R13所指的栈地址,当退出异常处理模式时,将保存的R13所指的栈中的寄存器值弹出。

寄存器R14又称为连接寄存器(LR)它具有两个作用:1 每一种处理器的模式自己的物理R14中存放当前子程序的返回地址,

2 ,当异常中断的发生的时候,该异常的模式特定的物理R14被设置成该异常模式将返回地址

寄存器R15又称为PC (程序计数器),当正确读取PC的值的时候,该指令地址值加8,读取的PC值加4

程序状态寄存器:CPSR(当前的程序状态寄存器),SPSR(备份程序状态寄存器)

(CPSR,SPSR)访问指令

ARM 微处理器支持程序状态寄存器访问指令,用于在程序状态寄存器和通用寄存器之间传送数据,程序状态寄存器访问指令包括以下两条:
MRS程序状态寄存器到通用寄存器的数据传送指令
MSR通用寄存器到程序状态寄存器的数据传送指令

1、 MRS 指令
MRS 指令的格式为:MRS{条件} 通用寄存器,程序状态寄存器(CPSR 或SPSR)
MRS 指令用于将程序状态寄存器的内容传送到通用寄存器中。该指令一般用在以下几种情况:
- 当需要改变程序状态寄存器的内容时,可用MRS 将程序状态寄存器的内容读入通用寄存器,修改后再写回程序状态寄存器。
- 当在异常处理或进程切换时,需要保存程序状态寄存器的值,可先用该指令读出程序状态寄存器的值,然后保存。

指令示例:
MRS R0,CPSR ;传送CPSR 的内容到R0
MRS R0,SPSR ;传送SPSR 的内容到R0

2、 MSR 指令
MSR 指令的格式为:MSR{条件} 程序状态寄存器(CPSR 或SPSR)_<域>,操作数
MSR 指令用于将操作数的内容传送到程序状态寄存器的特定域中。其中,操作数可以为通用寄存器或立即数。<域>用于设置程序状态寄存器中需要操作的位,32 位的程序状态寄存器可分为4 个域:
位[31:24]为条件标志位域,用f 表示;
位[23:16]为状态位域,用s 表示;
位[15:8]为扩展位域,用x 表示;
位[7:0]为控制位域,用c 表示;
该指令通常用于恢复或改变程序状态寄存器的内容,在使用时,一般要在MSR 指令中指明将要操作的域。

指令示例:
MSR CPSR,R0 ;传送R0 的内容到CPSR
MSR SPSR,R0 ;传送R0 的内容到SPSR
MSR CPSR_c,R0 ;传送R0 的内容到SPSR,但仅仅修改CPSR 中的控制位域

ARM处理器对异常中断的响应

1保存处理器当前段的状态的,中段屏蔽位各种标志位,这是通过将当前的程序状态寄存器的CPSR的内容保存到的将要执行的异常中断的对应的SPSR寄存器中实现的

2设置当前程序状态寄存器CPSR中相应的位,(CPSR的中的位使处理器进入相应的执行模式,进制IRQ中断)

3将寄存器lr_mode 设置成返回地址

4 将程序计数的值PC设置成该异常中断的中断向量的地址,从而跳转到相应的异常中断处理程序处

ARM从异常中断处理程序中返回,

1 恢复被中断程序的处理器 状态即将SPSR_mode寄存器内容复制CPSR中,

2 返回到发生异常中断指令的的下一条指令处执行,即将lr_mod寄存器的内容的复制到程序计数器PC中

复制异常中断处理程序不需要返回。

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值