push ebp到底是什么意思

最近看汇编语言,开头全是 push ebp ; mov  ebp, esp

首先看两个寄存器 

ESP:extended stack pointer, 扩展栈指针寄存器,是指针寄存器, 用于存放函数栈顶指针。(我觉得)esp始终指向栈顶。

EBP:extended base pointer , 扩展基址指针寄存器,也叫帧指针寄存器,用于存放函数栈底指针。

栈指针与帧指针标识出了当前活动记录的位置。

在x86里面,reg-reg(从寄存器到寄存器)的移动是可以的,但不可以mem-mem(从内存直接到内存)。

然后解释一下这两句是什么意思

push ebp是把ebp放到stack(栈)里。这步之后,esp的地址应该-4。理由是esp始终指向栈顶,ebp把它的东西放到栈里之后,栈里多的东西占了4个地址,而且栈向低地址增长的,所以地址减4。

mov ebp,esp是把esp里面的东西放到ebp里。这一步做完之后,ebp里面的东西就更新了。

多说一句,pop ebp的意思是:把栈里弹出来的值赋给ebp。(我曾经以为是把ebp从栈里弹出来...)

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值