函数调用时的栈信息

在看到《C专家编程》中关于运行时的数据结构这一节时,
使用gdb测试的一个小程序,
观察函数调用时栈的排列帮助理解。

..............
214  804843d:   e8 82 ff ff ff          call   80483c4 <add>
215  8048442:   89 45 fc                mov    %eax,-0x4(%ebp)
........
250  804847c:   e8 8f ff ff ff          call   8048410 <b>
251   8048481:   a3 30 97 04 08          mov    %eax,0x8049730
.............
281  80484c7:   e8 7e ff ff ff          call   804844a <a>
282 
283     return 0;   
284   80484cc:   b8 00 00 00 00          mov    $0x0,%eax

堆栈情况:
(gdb) p &p
$14 = (char **) 0xbffff400
(gdb) x/8 0xbffff430
0xbffff430:     0x00000001     0x00000002     0x00000003     0x00000004
0xbffff440:     0x080496fc     0x080496fd     0xbffff458     0x080484a4
(gdb) x/32 0xbffff3f0
0xbffff3f0:     0x00000000     0xbffff418      0x08048442     0x00000000
0xbffff400:     0xbffff430     0x0000001e     0x00000000     0x00000000
0xbffff410:     0x00000000     0x00000000     0xbffff448      0x08048481
0xbffff420:     0xbffff430     0x00000000     0x00000000     0x009c08ab
0xbffff430:     0x00000001     0x00000002     0x00000003     0x00000004
0xbffff440:     0x0804971c     0x0804971d     0xbffff458      0x080484cc
0xbffff450:     0x009ce6d0     0xbffff470     0xbffff4c8      0x009f96d5
0xbffff460:     0x080484f0     0x08048310     0xbffff4c8      0x009f96d5
(gdb) p __libc_start_main
$3 = {<text variable, no debug info>} 0x9f95f0 <__libc_start_main>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值