加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

计算堆栈上的帧数

发布时间:2020-12-16 07:02:04 所属栏目:百科 来源:网络整理
导读:首先,我需要编写一个程序集(Intel IA-32)函数,它返回调用者帧指针的内容.我不认为我做得对,但我想出的是 pushl %ebpmovl %esp,%ebpmovl %eax,4(ebp)leaveret 但是,我应该在c函数中使用它来计算堆栈中的帧数,而我真的不确定它应该如何工作.我是否应该跳到旧eb
首先,我需要编写一个程序集(Intel IA-32)函数,它返回调用者帧指针的内容.我不认为我做得对,但我想出的是

pushl %ebp
movl %esp,%ebp
movl %eax,4(ebp)
leave
ret

但是,我应该在c函数中使用它来计算堆栈中的帧数,而我真的不确定它应该如何工作.我是否应该跳到旧ebp中的值,然后再次调用该函数?任何指导将不胜感激.

解决方法

不,您不需要跳转到任何地方,但是一旦将帧指针复制到局部变量,就可以将其视为链接列表.

int mymagicfunction(int a,int b){

     int *c = asm_copy_ebp();
     int *d = c;
     while ( it_makes_sense ) {
           c=*c;
           dump_memory_between(c,d);
           d=c;
     }

也许只有当c和d之间的距离很小时才有意义.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读