在32位机器上,栈的简单布局
在32位机器上函数在栈上的布局void h(int a,int b){ int cab; } int main(){ int a1,b2; h(a,b); }高地址abb 形参ba 形参aeip 当该函数执行结束后ip中存放的地址旧的ebp 存放调用该函数的函数的ebp ---ebp 新的ebp指向c 如果有输入esp会先分配空间之后输入内容从低地址到高地址填充空间leaveret leave指令mov espebp直接销毁函数的局部变量并pop ebp来恢复以 前函数的ebp再通过pop eip让ip继续调用h函数之后执行低地址tip:当函数执行完之后形参ab不需要h函数回收交给上一个函数leave直接处理程序是怎么访问数据的通过ebp0x**来访问数据比如访问局部变量c就是ebp-0x4假如ebp占4个字节ebp的地址为ebp0到ebp4
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2425644.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!