汇编ESP与EBP的使用(Intel x86)

汇编ESP与EBP的使用(Intel x86)

ESP与EBP使用

概念:存在缘由:

概念:

(1)ESP:栈指针寄存器(extended stack pointer),其内存放着一个指针,该指针永远指向系统栈最上面一个栈帧的栈顶。ESP的值会随PUSH与POP指令的使用改变其值,从而永远指向栈顶。 (2)EBP:基址指针寄存器(extended base pointer),其内存放着一个指针,该指针永远指向系统栈最上面一个栈帧的底部。

存在缘由:

为了使用堆栈框架 ,堆栈框架(stack frame)也称活动记录(activation record),它是为传递参数,子例程的返回值,局部变量和保存的寄存器保留的对堆栈空间。他按以下步骤创建: (1). 如果有传递的参数,则压入堆栈 (2).子例程被调用,子例程的返回地址压入堆栈 (3).子例程开始执行,EBP被压入堆栈 (4).EBP被设为ESP的值,从这时开始,EBP就被作为寻址所有子例程参数的基址指针使用了 (5).如果有局部变量,ESP减去一个数值,以便在堆栈上为局部变量保留空间 (6).如果任何寄存器需要保存,则压入堆栈

注意第四步。在第四步,ESP与EBP的使用联系在一起。EBP正好处在子例程局部变量(C语言函数的{ }之内,函数体内的变量)与非局部变量(函数的返回值,型参)的分界线上。传递完参数后,以后需要修改型参的值,都是通过[EBP+OFFSET]来实现。

相关推荐

电饭煲煮面
365bet体育在线娱乐场

电饭煲煮面

📅 07-06 👁️ 4231
映客直播APP跑车价格分享
365bet体育在线娱乐场

映客直播APP跑车价格分享

📅 07-02 👁️ 2451
固特异轮胎质量怎么样?避坑终极指南一篇就够!
365赌网app官网

固特异轮胎质量怎么样?避坑终极指南一篇就够!

📅 07-02 👁️ 2671