• 寄存器总览


    手册:ARM Architecture Reference Manual.pdf

    章节:Programmers’ Model-->A2.3 Registers

    ARM处理器总共有37个寄存器:

    1、31个通用寄存器

    2、6个程序状态寄存器

    ---------------------------------------

    1、31个通用寄存器:

    R0-R14共15个寄存器,加上PC指针共16个寄存器。

    注意有后缀的寄存器,例如:R13_<mode>

    R13_svc 表示SVC模式下面的R13寄存器。同理其他带后缀的寄存器。

    再来把各种模式下的寄存器数一遍。通用寄存器共31个。

    2、程序状态寄存器:

    CPSR加上带后缀的共6个程序状态寄存器。

    -------------------------------------------------------------

    R0-R15被划分为三类:

    1、不分组寄存器,R0-R7,不管在什么工作模式下面,用的是同一个寄存器。

    2、分组寄存器,R8-R14,不同工作模式下面,用的可能是不同的寄存器。

    3、PC指针,Register 15,R15,即程序计数器。

    -----------------------------------------------------

    在通用寄存器下面,有3个特殊的寄存器:

    1、R13 用来充当SP堆栈指针。在程序中R13通常用来充当堆栈指针。

    2、R14用来充当链接寄存器LR。有两个特殊的功能:

    在每种工作模式下,保存函数的返回地址。

    当程序发生异常时,比如中断发生时,去执行中断处理函数,中断处理函数执行完成,返回地址也是被保存在R14中。

    3、R15程序计数器,PC指针。

    ------------------------------------------------------------

    程序状态寄存器: 手册 A2.5Program status registers

    ARM所有工作模式下都可以访问程序状态寄存器寄存器CPSR。
    CPSR包含条件码标志、中断禁止位、当前处理器模式以及其它状态和控制信息。

    CPSR在每种"异常模式"下都有一个对应的
    物理寄存器——程序状态保存寄存器
    SPSR。当异常出现时,SPSR用于保存
    CPSR的值,以便异常返回后恢复异常发生时的工作状态。

    格式,意义:

    比较重要的几个字段:

    N Z I F M


    N:比较两个数字大小时

    a-b 如果a<b 结果为负数,则N=1

    如果a>b,则N=0

    Z: a-b ,如果a==b 则 Z=1,否则为0

    I:如果为1,不能产生普通中断

    F:如果为1,不能产生快速中断

    M:0 1 2 3 4 ,共占了5位,表明处理器不能的工作模式,

    想知道处理器现在的工作模式就访问CPSR寄存器,如果M位是10000,则表示为User模式

    也可以设置M位,改为System模式,则把M设置为11111

  • 相关阅读:
    两数之和
    IntelliJ IDEA为类和方法自动添加注释
    IDEA main 函数的快捷键
    Mac终端开启代理
    Pycharm节能模式
    使用正则表达式替换构造字典
    使用代理爬取微信文章
    利用 Scrapy 爬取知乎用户信息
    Scrapy选择器的用法
    Scrapy命令行基本用法
  • 原文地址:https://www.cnblogs.com/zhangxuan/p/4862656.html
Copyright © 2020-2023  润新知