欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > 汇编(cpu寄存器描述)

汇编(cpu寄存器描述)

2025/6/14 0:14:21 来源:https://blog.csdn.net/weixin_43754657/article/details/148554811  浏览:    关键词:汇编(cpu寄存器描述)

寄存器


什么是寄存器?

寄存器(Register)是CPU内部的高速存储单元,用于临时存放数据、指令或地址。它们的访问速度远快于内存(RAM),是CPU执行计算和控制流程的关键组件

通用寄存器

x86

  1. EAX, EBX, ECX, EDX, ESI, EDI, ESP, EBP 都是32位通用寄存器
  2. 参数通常通过栈传递

x64

  1. 将原有8个寄存器扩展为64位(如RAX, RBX等,都是64位通用寄存器)
  2. RAX, RBX, RCX, RDX, RSI, RDI, RSP, RBP
  3. 新增8个64位寄存器(R8~R15)
  4. x64引入新的指令(如MOVSXD符号扩展指令)和优化,支持更大数据量和更高效操作
  5. 优先使用寄存器传递参数(如Windows用RCX, RDX, R8, R9),减少栈操作开销
  6. x64兼容x86指令集

虽然通通用寄存器可以随意使用,但是一般情况下,它们都自己的特殊用途

rsprbp分别是栈顶指针和栈底指针
rax一般用作存储方法的返回值
rcx一般用作存储程序计数器
rsirdi一般用作内存复制,一个目标地址,一个起始地址
eip用于存放cpu下一条要执行指令的地址

在这里插入图片描述

堆栈


一般在程序的运行过程中,会产生很多中间数据,这些中间数据就可以保存在栈空间中,栈是由操作系统在运行程序时自动创建的

常用指令:

PUSH:把一个内存地址中的数据,或者是立即数,寄存器中的值存入到栈空间,这时ESP的地址-4(x86)
POP:把当前栈顶指针ESP的值取出来,然后ESP+4(x86)

EIP


EIP寄存器存放着CPU要执行的下一条指令的地址

我们之前在更改通用寄存器时,可以使用 mov 指令来修改,但是在eip寄存器面前,并不允许使用mov指令来直接修改里面的值

可以使用JMP指令来变相的修改eip寄存器,jmp指令是无条件跳转指令,jmp后面跟着的地址就表示要跳转到后面地址上去执行,然而eip是存放cpu下一条指令要执行的地址,这样以来eip的值也会跟着改动(jmp指令做的事情仅仅只是修改eip中的值

常用指令:

JMP:jpm 寄存器/立即数/内存

特殊指令:CALL

call指令用来跳转到某一函数的执行位置,它同时修改esp和eip的值,把它的下一条指令压入栈,同时修改eip的值到要跳转的地址,esp-4

特殊指令:RET

ret指令用来返回当前执行的函数,esp+4,eip中的值就改为了esp中的值,也就是call指令的下一条地址

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词