CPU中的通用寄存器

news/2024/10/30 13:26:43/

CPU内部有若干个通用寄存器,它们除了具有与自己名字含义相对应的专用功能外,还具有通用功能,比如传递数据,暂存数据,参与计算等。因此为CPU中的寄存器取名为通用寄存器。16位CPU有14个通用寄存器,32位CPU有16个通用寄存器。下面以32位CPU为例介绍各个通用寄存器的作用。

  • 数据寄存器
    • EAX EBX ECX EDX
    • 数据寄存器主要用于保存运算的操作数和运算结果,从而节省读取操作数所需的占用的总线以及访问存储器的时间
    • AX寄存器:通常称为累加寄存器(Accumulater Register)。累加器可用于乘、除、输入/输出等操作,它们的使用频率很高
    • BX寄存器:基址寄存器(BaseRegister)。用来作为存储器指针使用
    • CX寄存器:计数寄存器(CounterRegister)。在循环和字符串操作时,要用它来控制循环次数;在位操作中,当移多位时,要用CL来指明移位的位数
    • DX寄存器:数据寄存器(DataRegister)。在进行乘、除运算时,它可作为默认的操作数参与运算,也可用于存放I/O的端口地址
    • 在16位CPU中,AX、BX、CX和DX不能作为基址和变址寄存器来存放存储单元的地址,但在32位CPU中,其32位寄存器EAX、EBX、ECX和EDX不仅可传送数据、暂存数据保存算术逻辑运算结果,而且也可作为指针寄存器,所以,这些32位寄存器更具有通用性
  • 变址寄存器
    • ESI EDI SI DI。前两个32为,后两个16位,后两个可以看做是前两个的低16位
    • SI寄存器:SourceIndex
    • DI寄存器:DestinationIndex
    • 寄存器ESI、EDI、SI和DI称为变址寄存器(IndexRegister),它们主要用于存放存储单元在段内的偏移量,用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便
    • 变址寄存器不可分割成8位寄存器。作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果
    • 它们可作一般的存储器指针使用。在字符串操作指令的执行过程中,对它们有特定的要求,而且还具有特殊的功能
  • 指针寄存器
    • EBP ESP
    • EBP ESP BP SP。前两个32为,后两个16位,后两个可以看做是前两个的低16位
    • 寄存器EBP、ESP、BP和SP称为指针寄存器(PointerRegister),主要用于存放堆栈内存储单元的偏移量,用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便。
    • 指针寄存器不可分割成8位寄存器。作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果
    • 它们主要用于访问堆栈内的存储单元,并且规定:BP为基指针(BasePointer)寄存器,用它可直接存取堆栈中的数据;SP为堆栈指针(StackPointer)寄存器,用它只可访问栈顶
  • 段寄存器
    • 段寄存器是根据内存分段的管理模式而设置的。内存单元的物理地址由段寄存器的值和一个偏移量组合而成的,这样可用两个较少位数的值组合成一个可访问较大物理空间的内存地址
    • CS:代码段寄存器(CodeSegmentRegister),其值为代码段的端值
    • DS:数据段寄存器(DataSegmentRegister),其值为数据段的段值
    • ES:附加段寄存器(ExtraSegmentRegister),其值为附加数据段的段值
    • SS:堆栈段寄存器(StackSegmentRegister),其值为堆栈段的段值
    • FS:附加段寄存器(ExtraSegmentRegister),其值为附加数据段的段值
    • GS:附加段寄存器(ExtraSegmentRegister),其值为附加数据段的段值
    • 在16位CPU系统中,它只有4个段寄存器,所以,程序在任何时刻至多有4个正在使用的段可直接访问;在32位微机系统中,它有6个段寄存器,所以,在此环境下开发的程序最多可同时访问6个段
    • 32位CPU有两个不同的工作方式:实方式和保护方式。在每种方式下,段寄存器的作用是不同的。有关规定简单描述如下:
      • 实方式:前4个段寄存器CS、DS、ES和SS与先前CPU中的所对应的段寄存器的含义完全一致,内存单元的逻辑地址仍为“段值:偏移量”的形式。为访问某内存段内的数据,必须使用该段寄存器和存储单元的偏移量。
      • 保护方式:在此方式下,情况要复杂得多,装入段寄存器的不再是段值,而是称为“选择子”(Selector)的某个值。 选择子包含访问控制等属性。
  • 指令指针寄存器
    • 指令指针EIP、IP(InstructionPointer)是存放下次将要执行的指令在代码段的偏移量。在具有预取指令功能的系统中,下次要执行的指令通常已被预取到指令队列中,除非发生转移情况。所以,在理解它们的功能时,不考虑存在指令队列的情况
  • 标志寄存器
    • CF:CarryFlag
    • PF:ParityFlag
    • AF:Auxiliary CarryFlag
    • ZF:ZeroFlag
    • SF:SignFlag
    • OF:OverflowFlag
      在这里插入图片描述

http://www.ppmy.cn/news/815439.html

相关文章

CPU使用率和负载区别及分析

当我们使用top命令查看系统的资源使用情况时会看到 load average,如下图所示。它表示系统在1、5、15分钟的平均工作负载。那么什么是负载(load)呢?它和CPU的利用率又有什么关系呢? load average:系统平均负载是CPU的Load,它所包含…

5G工业路由器赋能无人驾驶技术发展,无线车联网应用方案

随着无人驾驶技术进入大众视野,5G技术已广泛应用在各行各业中,无人驾驶也成了汽车自动化发展的核心趋势。无人驾驶技术需要满足低时延、高效率、大带宽、稳定性等硬性要求,工业路由器IR2730采用5G网络快速接入,拥有广泛连接能力&a…

仿真的硬件选型原则:CPU

做各类仿真工作,硬件条件是最基础的部分。如今主流仿真应用(结构有限元、流体CFD等)是基于CPU运行的,因此CPU的性能直接决定了仿真求解速度。本文就自身的理解,简单讲述CPU选型的几个基本原则。 1 架构与制程 基本原则…

深度学习之选择GPU或CPU方法

1 TensorFlow设置方法 1.1 指定GPU 法1 import os os.environ["CUDA_DEVICE_ORDER"] "PCI_BUS_ID" os.environ["CUDA_VISIBLE_DEVICES"] "1"上边表示使用第二块GPU运行程序,如果要使用多块,如第一块和第三…

【装机必看】CPU该怎么选

CPU有四大重要参数:架构、核心、频率、缓存 一、架构 CPU架构是CPU商给CPU产品定的一个规范,主要目的是为了区分不同类型的CPU。目前市场上的CPU分类主要分有两大阵营,一个是intel、AMD为首的复杂指令集CPU,另一个是以IBM、ARM为…

网络编程5——TCP协议的五大效率机制:滑动窗口+流量控制+拥塞控制+延时应答+捎带应答

文章目录 前言一、TCP协议段与机制TCP协议的特点TCP报头结构TCP协议的机制与特性 二、TCP协议的 滑动窗口机制 三、TCP协议的 流量控制机制 四、TCP协议的 拥塞控制机制 五、TCP协议的 延时应答机制 六、TCP协议的 捎带应答机制 总结 前言 本人是一个普通程序猿!分享一点自己的…

如何从事区块链开发?

目录 第一部分:区块链基础知识第二部分:准备工作和环境设置第三部分:学习智能合约开发第四部分:实践项目开发第五部分:持续学习和跟踪行业发展第六部分:资源和工具 从事区块链开发是一个广泛的领域&#xf…

第二周复习

练习题 一、盒子模型&#xff08;登录窗口&#xff09; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>QQ登录窗口</title><style>.box{width: 450px;height: 350px;background-color:…