General-Purpose Registers

IA-32架构提供了8个32位通用寄存器用于临时存储指令的操作数或指针;它们分别是EAX/EBX/ECX/EDX/EBP/ESP/ESI/EDI,可用于如下用途:

  • 逻辑与算术操作的操作数
  • 地址计算的操作数
  • 存储器指针

尽管这几个寄存器都可以用于存储操作数,计算结果,和存储器指针,但是使用ESP寄存器时要格外小心。ESP寄存器保存栈指针,作为一条通用规则,ESP寄存器不应该被用于其它目的。

许多指令会使用特定的寄存器来保存操作数。例如,字符串指令使用ECX,ESI和EDI寄存器作为操作数。当使用存储器分段模型时,某些指令会假设特定寄存器中的指针与特定的段相关联。例如,一些指令会假定EBX寄存器中的指针执行DS段中的位置。

下面是这些寄存器的一些特殊用法:

寄存器

特殊用法

EAX

累加器accumulator。操作数的累加器/计算结果数据

EBX

基址寄存器base。指向DS段中的数据

ECX

计数器counter。字符串/循环操作的计数器

EDX

I/O指针

ESI

指向DS段中的数据;字符串操作时的源操作数指针

EDI

指向ES段中的数据(目标);字符串操作时的目的操作数指针

ESP

指向SS段栈顶

EBP

指向SS段栈中的数据

如下图所示,通用寄存器的低16位映射到早先的8086/Intel286处理器中的16位通用寄存器:AX/BX/CX/DX/BP/SP/SI/DI。而且AX/BX/CX/DX又可以进一步使用AH/BH/CH/DH来分别引用高8位字节,AL/BL/CL/DL来分别引用低8位字节。

Intel 64/x86_64/IA-32/x86处理器通用寄存器 (1) - 32位通用寄存器相关推荐

  1. Intel 64/x86_64/IA-32/x86处理器基本执行环境 (1) - 32位执行环境概述

    Basic Execution Environment Overview IA-32处理器提供了一套完整的资源,在处理器上运行的程序/任务可以执行指令,存储代码,数据以及状态信息.这些资源(如下简要的 ...

  2. Intel 64/x86_64/IA-32/x86处理器通用寄存器 (2) - 64位通用寄存器

    General-Purpose Registers in 64-mode 在64位模式下,有16个64位宽通用寄存器(32位模式是8个通用寄存器),默认的操作数宽度是32位(注:与32位模式相同).但 ...

  3. Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - SSE扩展(1) - 概述/历史/新数据类型/XMM寄存器组

    SSE Instructions SSE Overview & History Intel SSE技术的全称是Streaming SIMD Extension,中文译作流式单指令多数据指令扩展 ...

  4. Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - MMX技术(1) - 概述 传输指令

    MMX™ Instructions IA-32架构引入了4个指令集扩展,使得IA-32处理器可以执行单指令多数据SIMD操作.这些扩展包括MMX技术,SSE扩展,SSE2扩展,SSE3扩展. MMX指 ...

  5. Intel 64/x86_64/IA-32/x86处理器 - 锁原子操作(2) - 总线封锁/缓存封锁

    Bus Locking Intel 64和IA-32处理器提供了LOCK#信号,在某些关键的访存操作时会自动地激活assert这个信号,用于封锁系统总线或类似的链接.当这个输出信号被激活时,就会阻塞来 ...

  6. Intel 64/x86_64/IA-32/x86处理器 - 锁原子操作(1) - 处理器保证的原子操作

    Locked Atomic Operations 32位的IA-32处理器支持对系统内存中的位置执行"加锁的原子操作".这些操作通常用于管理共享的数据结构(例如信号量,段描述符,系 ...

  7. Intel 64/x86_64/IA-32/x86处理器 - 通用指令(1) - 数据传输指令

    General-Purpose Instructions 通用指令执行基本的数据搬移,算术/逻辑计算,程序流控制,字符串操作等.这些指令被频繁地用于运行在IA-32与Intel 64架构的系统软件与应 ...

  8. Intel 64/x86_64/x86/IA-32处理器操作模式/运行模式

    Processor Operation Mode IA-32架构支持3种操作模式,和一种类操作模式(quasi-operating mode): 实地址模式/实模式(real-address mode ...

  9. Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - SSE扩展(6) - 逻辑指令 比较指令

    SSE Logical Instructions SSE的逻辑指令执行与,或,非,以及与非操作.操作数是组合的单精度浮点数. 指令 描述 ANDPS 格式:xmm1, xmm2/m128 对操作数执行 ...

最新文章

  1. loadrunner另类玩法【测试帮日记公开课】
  2. 2015快捷键在哪里设置_炒股软件的选择通达信软件的基本设置
  3. 扩展虚拟机Ubuntu磁盘容量空间
  4. 我是如何成功准备VUE项目之前的开发环境?
  5. 你可能对电灯泡一无所知
  6. uva 11275 3D Triangles (3D-Geometry)
  7. dubbo kryo序列化_为什么如此高效?解密kryo各个数据类型的序列化编码机制,强...
  8. 动态添加TemplateField列
  9. pip更新导致ImportError: cannot import name ‘InvalidSchemeCombination‘ from ‘pip._internal.exceptions‘
  10. 10负3次方计算机语言,10的负3次方等于多少?
  11. 电子计算机出现的背景,世界第一台电子计算机产生的背景是什么
  12. keras-segmentation-master代码详解
  13. 带大家读python数据分析一书(三)
  14. 软件体系结构层次风格
  15. 适合后台管理系统开发的前端框架
  16. ue4 玩家控制器APlayerController
  17. 直播带货系统,带货直播系统中发布商品的逻辑处理流程
  18. windows 下 用 dos 备份 oracle 数据库,并删除七天前的备份
  19. 通过google地图来查看台湾街景
  20. 程序员最全职业技能知识体系图谱

热门文章

  1. pandas使用笔记(一)导入,查看,读取数据
  2. pycharm运行时出现错误解决方法(持续更新中)
  3. 科普:Windows下Netcat使用手册
  4. Ajax的简单使用方法
  5. HTML标签的书写和嵌套规范
  6. jsp中post提交和get提交乱码解决_统一请求编码
  7. integer java 随机_如何在Java中生成随机BigInteger值?
  8. Java中的常量Constant
  9. php饿死,中国第一懒人:父母去世后,23岁的他饿死家中
  10. 每天一个小异常——ssh整合空指针异常