Chinaunix首页 | 论坛 | 博客
  • 博客访问: 939093
  • 博文数量: 403
  • 博客积分: 27
  • 博客等级: 民兵
  • 技术积分: 165
  • 用 户 组: 普通用户
  • 注册时间: 2011-12-25 22:20
文章分类

全部博文(403)

文章存档

2016年(3)

2015年(16)

2014年(163)

2013年(222)

发布时间:2013-06-10 17:18:38

x86比较可爱的地方是刚刚提到的两点,就是可以用栈基址和栈指针明确标示栈帧的位置,同时压栈的顺序有一定的规律,一个栈空间内的地址前面,必然有一个代码地址(lr)明确标示着调用函数位置内的某个地址。......【阅读全文】

阅读(510) | 评论(0) | 转发(0)

发布时间:2013-06-10 17:18:25

......【阅读全文】

阅读(458) | 评论(0) | 转发(0)

发布时间:2013-06-10 17:18:15

      这次来看看PowerPC体系架构CPU的栈帧布局和操作方法。PowerPC用得不多,有不对的地方大家拍砖啊~~ 1.  PowerPC的栈帧    先来看看PowerPC的栈帧布局图:        上图描述的是PowerPC的栈帧布局方式,PowerPC的栈生长方向也是由高到低,caller是调用者,current是被调用者。压栈的顺序依次是FPR、GPR、CR、Local Variable、Function Parameter......【阅读全文】

阅读(621) | 评论(0) | 转发(0)

发布时间:2013-06-10 17:18:08

出现异常的可能原因是exec file的symbol不存在或不匹配。根据之前对x86栈帧布局图的分析,bp-ra(即栈帧基址-返回地址)必定在栈帧顶端的固定位置,可以利用这个分布特点进行栈回溯。从当前的bp0开始,找到上一个bp1=*bp0,ra1=*(bp这0 + 4),ra1就是调用函数的地址。继续回溯,bp2=*bp1,ra2=*(bp1 + 4),ra2应该是再上一级调用函数的地址。如此循环,同时用info symbol $ra* 打印出来每一级函数,就找到实际的call trace信息了。
......【阅读全文】

阅读(683) | 评论(0) | 转发(0)

发布时间:2013-06-10 17:18:03

一个函数通常会定义一些局部变量,我们知道这些局部变量是在当前函数的栈帧上来分配,那么栈上变量的分配顺序,是不是跟局部变量的定义顺序一样呢?一次偶然的coredump,证明了至少在x86中未必如此。......【阅读全文】

阅读(925) | 评论(0) | 转发(0)
给主人留下些什么吧!~~
留言热议
请登录后留言。

登录 注册