区分 CPU 中的用户寄存器和控制寄存器。
用户寄存器可以通过机器指令读取或写入。用户寄存器分为数据寄存器和地址寄存器。
数据寄存器
这些寄存器保存数字数据值,如整数,在某些架构中,保存浮点值、字符、小位数组和其他数据。在低端CPU中,一个称为累加器的特殊数据寄存器隐式用于许多操作。
地址寄存器
这些寄存器保存地址并被指令用于间接访问主存储器。
一些处理器包含用于保存地址或保存数值的寄存器。在某些情况下,它用作索引寄存器,其值被添加为某个地址的偏移量。存在多种可能的寻址模式,用于指定操作数的有效地址。
堆栈指针用于管理运行时堆栈。并且它还管理由专用地址寄存器寻址的其他数据堆栈,请参阅堆栈机。
控制寄存器
它被称为处理器寄存器,用于更改或控制系统中CPU或其他服务的一般行为。
控制寄存器执行的常见任务有中断控制、切换寻址方式、分页控制和协处理器控制。
控制寄存器的类型
CR0-对于更高的处理器,它是32位长。如果我们在长模式下使用x64处理器,它和其他控制寄存器的长度都是64位。CR0具有各种控制标志,用于修改处理器的基本操作。
CR1-这是一个保留的。每当CPU试图访问它时,它都会抛出一个#UD异常。
CR2-它包含页面错误线性地址(PFLA)。每当发生页面错误时,地址和尝试访问的程序都存储在CR2寄存器中。
CR3-在启用虚拟寻址时使用,CR3使处理器能够通过定位当前任务的页目录和页表将线性地址转换为物理地址。
CR4-它在保护模式下用于控制虚拟8086等操作,启用I/O断点、页面大小扩展和机器检查异常。
CR5-7-保留,与CR1的情况相同。
附加控制寄存器-CR8、扩展功能启用寄存器(EFER)、XCR0和XSS