CPU通用寄存器 eax ebx ecx edx esp ebp esi edi

本文详细介绍了x86和x64架构下的通用寄存器,如eax/rax、ebx/rbx、ecx/rcx等在程序执行和函数调用中的作用。在X86时代,参数主要通过栈传递,而x64时代,寄存器资源增加,更多参数通过寄存器直接传递,提高了效率。同时,x64新增了r8-r15通用寄存器,进一步扩展了处理能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 通用寄存器就是最基础的寄存器,在程序执行的过程中,绝大部分时间多在操作这些寄存器实现指令功能
  2. eax(32位)/rax(64位):
    通常用来执行加法,函数调用的返回值一般也放在这里面
  3. ebx(32位)/rbx:
    通常用来数据存取
  4. ecx(32位)/rcx:
    通常用作for循环的计数器
  5. edx(32位)/rdx(64位):
    读取I/O端口时,存放端口号
  6. esp(32位)/rsp(64位):
    栈顶指针,指向栈的顶部
  7. ebp(32位)/rbp(64位):
    栈底指针,指向栈的底部,用ebp+偏移量的形式来定位函数存放在栈中的局部变量
  8. esi(32位)/rsi(64位):
    字符串操作时,用于存放数据源的地址
  9. edi(32位)/rdi(64位):
    字符串操作时,用于存放目的地址的,和esi两个经常搭配一起使用,执行字符串的复制等操作
  10. x64架构比X86多了8个新的通用寄存器:分别为r8-r15通用寄存器
    在X86时代,函数调用时,通用寄存器少,参数绝大多数时候是通过线程的栈来进行传递(当然也有使用寄存器传递的, 比如著名的C++ this指针使用ecx寄存器传递,不过能用的寄存器毕竟不多)
    进入x64时代,寄存器资源富裕了,参数传递绝大多数都是用寄存器来传了。寄存器传参的好处是速度快,减少了对内存的读写次数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值