• lv11 嵌入式开发 ARM体系结构理论基础(寄存器)3


    目录

    1 寄存器

    2 ARM寄存器

    2.1 专用寄存器


    1 寄存器

    概念    

    寄存器是处理器内部的存储器,没有地址

    作用    

    一般用于暂时存放参与运算的数据和运算结果

    注:全局变量不应该存入寄存器,数量有限会占用寄存器资源,寄存器读取速度很快适合运算

    分类    

    包括通用寄存器、专用寄存器、控制寄存器

    通用寄存器,没有要求

    专用寄存器,如PC指针,IR指针

    控制寄存器,ARM状态、Thumb状态,模式状态切换

    2 ARM寄存器

    概述:

    注:在某个特定模式下只能使用当前模式下的寄存器,一个模式下特有的寄存器其他模式下不可使用 (带三角)

    16个通用寄存器、1个控制寄存器、23个专用寄存器

    16+7+10+1+6 =40个寄存器

    2.1 专用寄存器

    R15(PC,Program Counter)    

    程序计数器,用于存储当前取址指令的地址

    R14(LR,Link Register)

    链接寄存器,一般有以下两种用途:

    • 执行跳转指令(BL/BLX)时,LR会自动保存跳转指令下一条指令的地址。程序需要返回时将LR的值复制到PC即可实现
    • 产生异常时,对应异常模式下的LR会自动保存被异常打断的指令的下一条指令的地址,异常处理结束后将LR的值复制到PC可实现程序返回

    R13(SP,Stack Pointer)

    栈指针,用于存储当前模式下的栈顶地址

    CPSR(Current Program Status Register)

    当前程序状态寄存器 

    CPSR寄存器分为四个域:

    [31:24]为条件域用F表示

    Bit[28]    

            当运算器中进行加法运算且产生符号位进位时该位自动置1,否则为0    

            当运算器中进行减法运算且产生符号位借位时该位自动置0,否则为1  

    Bit[29]    

            当运算器中进行加法运算且产生进位时该位自动置1,否则为0    

            当运算器中进行减法运算且产生借位时该位自动置0,否则为1  

    Bit[30]    

            当运算器中产生了0的结果该位自动置1,否则为0  

    Bit[31]    

            当运算器中产生了负数的结果该位自动置1,否则为0

    [23:16]为状态域用S表示

    [15:8]为预留域用X表示

    [8:0]为控制域用C表示 

    Bit[4:0]     [10000]User    [10001]FIQ      [10010]IRQ       [10011]SVC    

                     [10111]Abort   [11011]Undef   [11111]System  [10110]Monitor  

    Bit[5]     [0]ARM状态     [1]Thumb状态  

    Bit[6]     [0]开启FIQ     [1]禁止FIQ  

    Bit[7]     [0]开启IRQ     [1]禁止IRQ

  • 相关阅读:
    玩转代码|Google Map api国内正常使用该如何配置
    JDK下载,安装和配置环境变量
    redis方法 setIfAbsent
    MyBatis(中)
    c++11的一些新特性
    计算机网络-网络层(IPV4地址,网络转化技术NAT,子网划分和子网掩码,无分类编址CIDR,构成超网,最长前缀匹配)
    如何正确实现一个自定义 Exception
    【MySQL数据库原理】在MySQL Workbench界面运行SQL代码——学生管理系统
    一个简单HTML5期末考核大作业,学生个人html静态网页制作代码
    CURL
  • 原文地址:https://blog.csdn.net/m0_60718520/article/details/134322243