zoukankan      html  css  js  c++  java
  • 三、ARM 寄存器及异常处理

    3.1 ARM 内部寄存器

    ARM920T 总共有 37 个寄存器,其中 31 通用 32 位寄存器和 6 个状态寄存器,但不能在同一时刻对所有的寄存器可见。处理器状态和运行模式决定了哪些寄存器对程序员可见 

    3.1.1 ARM 状态时内部寄存器

    ARM 状态,16 个通用寄存器和一个状态寄存器在任意时刻都可见。在特权(非用户)模式下,将切换到指定模式的分组(banked)寄存器。

    ARM 状态时寄存器被设为包含 16 个直接可以访问的寄存器:R0 R15。除了 R15,其他全部寄存器都为通用寄存器,如可能用于保存数据或地址值。除此之外,还有第 17 个寄存器用于存储状态信息。

      

    FIQ 模式包含 7 个分组寄存器,分别映射到 R8-14R8_fiq-R14_fiq)。在 ARM 状态,有很多不需要保存寄存器的 FIQ 处理程序。用户,IRQ,管理中止和未定义模式都包含两个分组寄存器映射到 R13 R14,允许这些模式都都包含私有堆栈指针和链接寄存器

      

    3.1.2 Thumb 状态时内部寄存器

    Thumb 状态时的寄存器集为 ARM 状态时的寄存器的分配的一个子集。程序员能够直接访问 8 个通用寄存器R0 R7,还有程序计数器(PC),一个堆栈指针寄存器(SP),一个链接寄存器(LR)和 CPSR

    各自特权模式还分别有分组堆栈指针,链接寄存器和进程保存状态寄存器(SPSR)
      

    3.1.3 ARM 状态寄存器和 Thumb 状态的寄存器之间的关系

      

      

    3.1.4 程序状态寄存器

    ARM920T 包含了一个当前程序状态寄存器(Current Program Status Register-CPSR),另外还有 5 个用于异常程序处理的程序状态保存寄存器(Saved Program Status Registers-SPSR)。

    • 这些寄存器的功能为:
      • 保存最近已处理的 ALU 操作的信息
      • 控制中断的使能与禁止
      • 设置处理器的运行模式 

      

    • NZC V 位为状态代码标志位。算术或逻辑操作结果可能会改变这些位,并检验以决定是否应该执行某条指令 

    3.2 特殊寄存器(SFR)

    IO 端口/寄存器-它属于外设的组成部分!ARM 是采用与存储器统一编址的方式

    使用软件编程控制某一硬件, 其实就是编程读写该硬件的寄存器。

  • 相关阅读:
    Laravel在不同的环境调用不同的配置文件
    Sphinx全文索引 第一节
    Eclipse 快捷键 (应用中自己总结)
    Ehcache计算Java对象内存大小
    计算Java对象内存大小
    HashMap
    CPU高的排查
    JVM-GC学习
    详细分析Java中断机制-转载
    GC知识记录
  • 原文地址:https://www.cnblogs.com/kele-dad/p/10914969.html
Copyright © 2011-2022 走看看