首页>>科技 >>内容

寄存器主要由什么组成,寄存器由什么组成

发布时间:2023-08-01 12:48:42编辑:温柔的背包来源:

很多朋友对寄存器主要由什么组成,寄存器由什么组成不是很了解,每日小编刚好整理了这方面的知识,今天就来带大家一探究竟。

寄存器主要由什么组成,寄存器由什么组成

寄存器概述寄存器是中央处理器不可或缺的一部分。寄存器是存储容量有限的高速存储部件,可用于暂时存储指令、数据和地址。在中央处理器的控制部分,有指令寄存器(IR)和程序计数器(PC)。在中央处理器的算术和逻辑部分,内存有一个累加器(ACC)。寄存器的原理寄存器的基本单元是D触发器,按用途分为基本寄存器和移位寄存器。

基本寄存器由D触发器组成。在CP脉冲的作用下,每个D触发器可以寄存一个二进制码。当D=0时,寄存器存储为0,当D=1时,寄存器存储为1。当低电平为0,高电平为1时,需要在信号源和D之间连接一个反相器,这样才能存储数据。移位寄存器按移位方向可分为单向移位寄存器和双向移位寄存器。

单向移位寄存器由多个D触发器串联而成。输入要存储在串口Di的数据,触发器FF0可以存储当前数据。当CP发出时钟控制脉冲时,串口Di同时输入要存储的第二个数据,第一个数据存储在触发器FF1中。设置双向移位寄存器,改变连接端子的顺序,可以控制寄存器向左移位,增加控制电路可以向右移位,形成双向移位寄存器。

ARM寄存器处于ARM状态,任何时候都可以看到16个通用寄存器(R0-R15)和一个状态寄存器。在特权(非用户)模式下,它将切换到指定模式的内存库寄存器。(PS。组寄存器的概念可以在下面看到)

在ARM状态下,该寄存器设置为包含16个可直接访问的寄存器:R0至R15。除R15外,所有其他寄存器都是通用寄存器,可用于存储数据或地址值。此外,还有第17个寄存器用于存储状态信息。

R8 ~ R1 R8~R14、SPSR寄存器在各种模式下切换到私有寄存器组,对应的私有寄存器可以在不同的模式下访问。表1显示了每种模式下的有效寄存器(阴影部分为私有寄存器)。表1 ARM状态下的寄存器组织结构从表1中我们可以看到,寄存器组R0 ~ R:010 R0 ~ R7、 R15、 cpsr在任何模式下都是共享可访问的;

R8 ~ R12寄存器组对应快速中断模式(fiq)下的一组私有寄存器组R8 _ fiq ~ R12 _ fiq,其他模式下共享另一组寄存器组;

R13、R14寄存器在用户和系统模式下共用一套;在其他模式下(管理(svc)、中止(abt)、未定义(und)、中断(irq)和快速中断(fiq)),有两个专用寄存器R13和R14。这使得每种模式都有自己的堆栈寄存器指针R13和链接寄存器R14,分别用于堆栈处理和异常退出。

SPSR寄存器可用于存储CPSR的值,在用户和系统模式下不能访问。在其他模式下,有一个私人SPSR登记册。表1中的第二列列出了汇编语言中寄存器的名称,其中括号中的内容是昵称。下面我们来介绍一下这些寄存器的功能。1、通用寄存器R0 ~ R12是用于存储数据或地址值的通用寄存器。其中,寄存器R0 ~ R7为未分组寄存器,R8 ~ R12为分组寄存器。

未分组的寄存器意味着对于任何处理器模式,它们中的每一个都对应于相同的32位物理寄存器。它们是完全通用的寄存器,分组寄存器是指同一个寄存器名对应多个物理寄存器,具体对应的物理寄存器取决于当前的处理器模式。参考表1,寄存器R8-R12具有两个分组的物理寄存器。一组用于除FIQ模式(r8 ~ R12)之外的所有寄存器模式,另一组用于FIQ模式(r8 _ fiq ~ R12 _ fiq)。

寄存器R8 ~ R12在ARM架构中没有特定用途。但是对于只能用R8 ~ R14处理的简单中断,FIQ单独使用的这些寄存器可以实现快速中断处理。2、堆栈指针R13寄存器R13(也称为堆栈指针或SP)有六个成组的物理寄存器,如表2-1所示。一个用于用户和系统模式,另外五个分别用于五种异常模式。

寄存器R13通常用作堆栈指针SP。在ARM指令集中,R13多用于各种模式下的堆栈操作。每个异常模式都有一个专用的R13寄存器,它通常指向专用于异常模式的堆栈。在入口,寄存器值通常被保存到这个堆栈中。

在模式转换之前将当前寄存器的值保存在堆栈中,然后将这些值从堆栈中重新加载到模式堆栈中的切换模式寄存器中,以确保程序状态在异常发生时不会被破坏。

3、链接寄存器R14寄存器R14(也称为链接寄存器或LR)有六个分组的物理寄存器,如表2-1所示。一个用于用户和系统模式,另外五个分别用于五种异常模式。相应的专用寄存器是R14_svc、R14_irq、R14_fiq、R14_abt和R14_und。寄存器R14有三个用途:当异常发生时,设置为异常的返回地址;执行分支链接(BL)指令时,用于保存子程序的返回地址;

在其他时候,它可以被视为一个通用寄存器。4、程序计数器R15寄存器R15(也称为程序计数器或PC)总是用于特殊目的,它总是指向要读取的下一条指令的地址。您可以将R15用作通用寄存器,但是在使用它时有一些与指令相关的限制或特殊情况。如果R15的使用方式超出这些限制,指令将无法预测。

由于ARM7采用3级流水线结构,在ARM状态下,读取R15的值是当前执行指令地址+ 8。ARM指令以字为单位,读取R15结果的bit1:0总是为0b00。

对R15进行写时,如果这条写指令没有超过对R15使用的限制,那么写入R15的正常结果值被当成一个指令地址,程序会从这个地址处继续执行(相当于执行无条件跳转指令)。因为ARM指令以字为边界,所以写入R15值的bit1:0通常为0b00。

5、CPSR和SPSR

所有模式共享一个程序状态寄存器CPSR。在异常模式中,程序状态保存寄存器SPSR可以被访问,每种异常具有自己私有的SPSR。在进入异常时,它保存CPSR的当前值;在异常退出时,可通过它(SPSR)恢复CPSR。

寄存器的用途1.可将寄存器内的数据执行算术及逻辑运算。

2.存于寄存器内的地址可用来指向内存的某个位置,即寻址。

3.可以用来读写数据到电脑的周边设备。

以上知识分享希望能够帮助到大家!