大家好,欢迎来到IT知识分享网。
1.pushl和popl
pushl和popl指令来说操作的是栈,栈的基地址由%ebp来指定,栈顶元素由%esp来指定,%esp指向的就是栈顶元素。将一个双字压入栈中,首先要将%esp减4,然后将双字写入%esp指向的栈顶位置;弹出一个双字,首先要将%esp加4,然后将%esp指向的栈顶元素取出
2.call和ret指令
call lable //函数调用,会把call指令下一条指令push到栈
leave //函数调用返回前的准备,也就是movl %ebp, %esp; popl %ebp
ret//从栈中pop出地址,并跳转到这个地址继续执行
从以上可以看出每个函数栈顶保存上一级函数的栈顶值,
从进程栈中解析backtrace,也可以根据ebp解析出局部变量
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/147895.html