zoukankan      html  css  js  c++  java
  • ARM体系的异常中断

    在ARM体系中,通常有3种方式控制处理器的流程

       1:在正常执行过程中,每执行一条ARM指令,程序计数器寄存器PC的值加四个字节,在每执行一条Thumb指令,程序计数器寄存器PC的值加两个字节,整个过程是按照顺序执行的  

       2:通过跳转指令,程序可以跳转到指定的地址标号进行执行,或者跳转到特定的子程序进行执行,其中B指令用于执行跳转操作,BL指令用于执行跳转操作的同时,保存子程序相应的返回地址,BX在执行跳转操作的同时,分居目标地址的最低位,可以将程序切换到THumb状态,BLX执行上述三个操作

       3:当异常中断发生时,系统执行当前指令后,将跳转到相应的异常中断处理程序进行执行,当异常处理中断执行完成之后,程序返回到发生中断的下一条指令出继续执行,在进入异常中断处理程序的时候,要保存被中断程序的执行现场,在从异常中断程序退出时,要恢复被中断的程序的执行现场

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

      1保存处理器当前的状态,中断屏蔽位,以及各条件标志位,这是通过当前程序状态寄存器CPSR的内容保存到要自信的异常中断对应的SPSR寄存器中实现的

      2设置当前程序状态寄存器的相应的位,包括CPSR中的位,是处理器进入相应的执行模式,设置CPSR中的位,进制IRQ中断,但进入FIQ是,进制FIQ中断

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

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

    从异常中断处理中返回

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

      2返回到发生异常中断的指令的下一条指令执行,讲IR_MODE中的内容复制到PC

      3复位和异常中断不需要返回,程序计数器PC所指向的不同的异常中断是不同的

    转载请注明链接地址:http://www.cnblogs.com/fengdashen/p/3724801.html

  • 相关阅读:
    Eclipse 远程调试
    大数据处理方法bloom filter
    sicily 1259 Sum of Consecutive Primes
    sicily 1240. Faulty Odometer
    sicily 1152 简单马周游 深度优先搜索及回溯算法
    sicily 1050 深度优先搜索解题
    sicily 1024 邻接矩阵与深度优先搜索解题
    sicily 1156 二叉树的遍历 前序遍历,递归,集合操作
    sicily 1443 队列基本操作
    sicily 1006 team rankings 枚举解题
  • 原文地址:https://www.cnblogs.com/fengdashen/p/3724801.html
Copyright © 2011-2022 走看看