push ebp mov ebp,esp sub esp,4C mov dword ptr ss:[ebp-4],0 push 8 那位师傅帮我理解一下 ,在下跪拜~~~
答案:1 悬赏:30 手机版
解决时间 2021-04-20 20:17
- 提问者网友:流星是天使的眼泪
- 2021-04-20 02:59
push ebp mov ebp,esp sub esp,4C mov dword ptr ss:[ebp-4],0 push 8 那位师傅帮我理解一下 ,在下跪拜~~~
最佳答案
- 五星知识达人网友:十年萤火照君眠
- 2021-04-20 04:30
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这个堆栈帧里面的;所以它是作为函数常量还是作为嵌套函数的参数就不知道了,因为后面没有代码;不过这些代码就是个这么意思了。
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这个堆栈帧里面的;所以它是作为函数常量还是作为嵌套函数的参数就不知道了,因为后面没有代码;不过这些代码就是个这么意思了。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯