• ARM处理器寄存器


    ++++++++++++++++++++++++++++++++++++++++++

    本文系本站原创,欢迎转载! 转载请注明出处:

    http://blog.csdn.net/mr_raptor/article/details/6556163

    ++++++++++++++++++++++++++++++++++++++++++

    1.1.1   ARM处理器不同模式下寄存器

    CPU的模式不同,在其对应模式下可以使用的寄存器也不相同,如表3-2所示:

    3-2 ARM处理器模式下寄存器

    寄存器类别

    寄存器在汇编中的名称

    各模式下实际访问的寄存器

    用户

    系统

    管理

    终止

    未定义

    中断

    快中断

    通用寄存器和程序计数器

    R0(a1)

    R0

    R1(a2)

    R1

    R2(a3)

    R2

    R3(a4)

    R3

    R4(v1)

    R4

    R5(v2)

    R5

    R6(v3)

    R6

    R7(v4)

    R7

    R8(v5)

    R8

    R8_fiq

    R9(SB,v6)

    R9

    R9_fiq

    R10(SL,v7)

    R10

    R10_fiq

    R11(FP,v8)

    R11

    R11_fiq

    R12(IP)

    R12

    R12_fiq

    R13(SP)

    R13

    R13_svc

    R13_abt

    R13_und

    R13_irq

    R13_fiq

    R14(LR)

    R14

    R14_svc

    R14_abt

    R14_und

    R14_irq

    R14_fiq

    R15(PC)

    R15

    状态寄存器

    CPSR

    CPSR

    SPSR

    SPSR_abt

    SPSR_abt

    SPSR_und

    SPSR_irq

    SPSR_fiq

                               

    其中R0~R7在所有模式下都可以使用的共有寄存器,R8~R12是快速中断模式下私有的寄存器,其它模式下不能使用,之所以叫其快速中断,是因为快速中断模式下,这几个私有寄存器里数据在模式切换时可以不用入栈保存。

    除了用户模式和系统模式共用一组R13R14,其余每种模式都私有自己的R13R14,因为在每种模式下都有自己的栈空间用于执行程序,在执行程序过程中还要保存返回地址,这样可以保证在进入不同模式时,当前模式下栈空间不被破坏。比如:网卡因为数据到达,产生了中断进入中断模式,在中断模式下有自己的中断处理例程(ISR),ISR在执行时要用到栈空间,因此要使用R13R14。中断处理完成后,返回用户模式下,要继续执行被网卡中断信号中断的执行程序。

    用户模式和系统模式为什么要共用一组R13R14呢?这是因为,在特权模式下可以自由切换工作模式,但是如果切换到用户模式下,就不能再切换到特权模式了,这是CPU为操作系统提供的保护机制,但是有的时候就需要切换到用户模式下去使用其R13R14寄存器,比如当操作系统的进程进行上下文切换时,如果用户模式和系统模式共用一组寄存器,那么可以切换到系统模式下(系统模式是特权模式)进行操作。

    所有R15CPU同时只能处理一条指令,在取指时,有一个CPSR表示当前<FONT face=""">CPU的状态即可。

    ++++++++++++++++++++++++++++++++++++++++++

    本文系本站原创,欢迎转载! 转载请注明出处:

    http://blog.csdn.net/mr_raptor/article/details/6556163

    ++++++++++++++++++++++++++++++++++++++++++

  • 相关阅读:
    性能测试策略和关注指标
    ES7.17.1安装
    java 复制对象
    Java 实现树结构计算各个节点数的和
    自定义初始化ES实体类
    .net core datatable 导出 pdf 支持中文
    VSCode 快捷键(整理)
    国标平台LiveGBS GB28181接入录像机NVR、摄像头时没有通道 通道数位0的检查办法
    基于docker搭建Android cordova开发环境
    SpringBoot整合邮箱发送邮件
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/2458065.html
Copyright © 2020-2023  润新知