目录

X86CPU32位寄存器

通用寄存器

EAX 累加器(accumulator) EBX 基地址寄存器(base register) ECX 计数寄存器(count register) EDX 数据寄存器(data register) ESI EDI 变址寄存器(index register) ESP 堆栈指针(stack pointer) 始终指向栈顶 EBP 基址指针 始终指向新栈的栈底,可以说是在每次系统压栈的时候EBP总是保存当前ESP的值, ESP则充当新栈的栈顶,当退出当前栈的时候再恢复ESP的值,也就是EBP在C语言中用作记录当前函数的调用基址 具体见下图:

/images/register/2018-02-28.png

函数的返回值默认使用eax寄存器存储返回给上一级函数

段寄存器

CS 代码段 DS 数据段
ES FS GS 附加段(extra segment) SS 堆栈段

操作指令

movl %eax,%edx ;edx=eax
movl $0x123,%edx ;edx=0x123
movl 0x123,%edx ;edx=*(int32_t*)0x123 movl (%ebx),%edx ;edx=*(int32_t*)ebx movl 4(%ebx),%edx ;edx=*(int32_t*)(ebx+4)

b,w,l,q分别代表8位,16位,32位,64位