zoukankan      html  css  js  c++  java
  • ARM处理器寄存器和运行状态

    ARM体系的CPU有以下7种工作模式:

      1、用户模式(Usr):用于正常执行程序;

          2、快速中断模式(FIQ):用于高速数据传输;

          3、外部中断模式(IRQ):用于通常的中断处理;

          4、管理模式(svc):操作系统使用的保护模式;

          5、数据访问终止模式(abt):当数据或指令预取终止时进入该模式,可用于虚拟存储以及存储保护;

          6、系统模式(sys):运行具有特权的操作系统任务;

          7、未定义指令中止模式(und):当未定义的指令执行时进入该模式,可用于支持硬件;

    当异常发生的时候CPU会进入到相应的模式来进行处理:

    异常 模式 描述
    复位 管理模式 复位电平有效时,产生复位异常,程序转跳到复位处理程序执行
    未定义指令 未定义模式 遇到不能处理的指令,产生未定义指令异常
    软件中断 管理模式 执行swi指令产生,用于用户模式下的程序调用特权操作指令
    预存指令 中止模式 处理器预取指令的地址不存在,或者该地址不允许当前指令访问,产生指令预取中断异常
    数据操作 中止模式 处理器预取数据的地址不存在,或者该地址不允许当前指令访问,产生指令预取中断异常
    未使用 未使用 未使用
    IRQ IRQ 外部中断请求有效,且CPSR中的1位为0时,产生IRQ异常
    FIQ FIQ 快速中断请求引脚有效,且CPSR中的F位为0时,产生FIQ异常

    以下是寄存器和运行模式对应的关系:

    R0---R12是普通寄存器,可以任意读写.

    R13是栈指针寄存器,用于保存堆栈指针

    R14是程序连接寄存器,当执行BL子程序调用指令时,R14中得到R15的备份,而当发生中断或异常时,R14保存R15的返回值

    R15是程序计数器

    (A/C)PSR:(标志位寄存器)

      T位:1——CPU处于Thumb状态, 0——CPU处于ARM状态;

      I、F(中断禁止位): 1——禁止中断, 0——中断使能;

      工作模式位:可以改变这些位,进行模式切换;

    spsr:程序状态保存寄存器,当切换进入某一个特权模式时,SPSR保存前一个工作模式的CPSR值,这样,当返回前一个工作模式时,可以将SPSR的值恢复到CPSR中

  • 相关阅读:
    iOS 页面之间的转场动画控制器间的转换
    C C语言中关键词,以及知识点复习
    iOS Swift基础知识代码
    LeetCode-Kth Smallest Element in a Sorted Matrix
    LeetCode-Design Phone Directory
    LeetCode-Longest Increasing Path in a Matrix
    LeetCode-Pathcing Array
    LeetCode-Wiggle Sort
    LeetCode-Odd Even Linked List
    LeetCode-Verify Preorder Serialization of a Binary Tree
  • 原文地址:https://www.cnblogs.com/CHYI1/p/5524867.html
Copyright © 2011-2022 走看看