• 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中

  • 相关阅读:
    minio 对于压缩的处理
    mino federation 功能
    Full Schema Stitching with Apollo Server
    GraphQL Gateway Architectures
    Modularizing your graphQL schemas
    gearman openresty 集成试用
    madlib 集成 hasura graphql-engine 试用
    Oracle数据库--解决单张表中数据量巨大(大数据、数据量上百万级别,后查询,更新数据等耗时剧增)
    绝对干货,教你4分钟插入1000万条数据到mysql数据库表,快快进来
    几款开源的ETL工具及ELT初探
  • 原文地址:https://www.cnblogs.com/CHYI1/p/5524867.html
Copyright © 2020-2023  润新知