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