永发信息网

push ebp mov ebp,esp sub esp,4C mov dword ptr ss:[ebp-4],0 push 8 那位师傅帮我理解一下 ,在下跪拜~~~

答案:1  悬赏:30  手机版
解决时间 2021-04-20 20:17
push ebp mov ebp,esp sub esp,4C mov dword ptr ss:[ebp-4],0 push 8 那位师傅帮我理解一下 ,在下跪拜~~~
最佳答案
1,push ebp;保存ebp内容以便调用完后恢复;此时esp <- esp - 4;
2,move ebp esp; 保存调用前栈顶地址以便调用完后恢复 此时,esp ebp 都指向栈顶,esp作为段寄存器访问堆栈段,ebp作为基址寄存器访问堆栈段中的堆栈帧即稍后要分配的 0x4c个字节;
3,sub esp 4c 即2里面所说的给调用函数分配0x4c字节的局部变量空间堆栈帧;
4,mov dword ptr ss:[ebp - 4], 0; 把立即数0x0保存到 ss:[ebp -4]地址里,即 ss 前缀就是说你所要使用的是ss即堆栈段,ebp可以说是基址,ebp-4即是步骤三分配的04c空间的第一个双字地址,也就是把0扩展成32位然后保存到堆栈帧里面,一般作为调用函数的第一个参数;相应后面如果还有类似mov dword ptr ss:[ebp - n*4] n = 1 ,2,3 等 都是作为函数的参数1,2 ,3.......;
5,push 8;这是立即数入栈, 具体是 esp <- esp - 4; mov dword ptr [ esp ]; 一般也是作为函数的静态参数使用。
函数调用部分就不说了,给你讲下函数调用完后返回的操作
1,mov esp ebp; 这就是步骤2的恢复,使得esp指向步骤二的栈顶;
2, pop ebp; 这就是把开始保存在堆栈中的ebp 恢复到ebp里面;此时esp <- esp + 4;就是恢复步骤一的状态,此次函数调用完毕;追问大侠 第5条 能再说具体一下么 ?追答这就是把8这个立即数压入堆栈哈。从步骤一之前假如esp地址开始是10FFH 那么步骤一后是10FBH ;而步骤二后esp和ebp保存的都是10FBH ;步骤三使得esp保存的是10AFH;步骤四就是把0这个数保存在10FBH - 10F8H这四个字节里面;步骤五就是把0压入10AFH - 10ACH里,它是不在10AF - 10FB这个堆栈帧里面的;所以它是作为函数常量还是作为嵌套函数的参数就不知道了,因为后面没有代码;不过这些代码就是个这么意思了。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
不是绿钻如何能让空间有背景音乐 急求
输错液怎么办
帮忙找几本小说!
冬天买什么衣服好
吃了甲鱼过敏怎么办,常吃甲鱼容易上火么?
一世情缘绵州映像店这个地址在什么地方,我要
丝路英雄联盟的等级会降低吗?
甲乙两站相距408千米,一慢车从甲站开出,每
太乙天尊见到孙悟空为什么还要下座相见
游戏大话西游2
海为什么那么蓝…
正大邵阳骨伤科医院-住院大楼怎么去啊,有知
为什么花瓶一个月只能装1000枝花?
唐伯虎点秋香二什么时候上映
谁有QQ西游的激活码?
推荐资讯
跪求一个游戏人生资格
LR饰品的问题
五月天的如烟歌词含义
女孩应找比自己年龄大的男孩做男朋友才可以是
天冷乐有衣服、那一颗心冷了该如何是好:
电脑老是出现这个怎么办
怎么样隐藏QQ图标?
1991年7月11日是什么意星座
nbalive08如何打2+1
当人伤心的时候会怎样解决
描写温馨的段落
汉章何地址在什么地方,想过去办事
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?