| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2651 人关注过本帖
标题:用gdb分析C的时候,碰到ebp寄存器,不太明白它到底指向哪里
只看楼主 加入收藏
zaixuexi
Rank: 12Rank: 12Rank: 12
来 自:上海
等 级:火箭侠
威 望:8
帖 子:858
专家分:3233
注 册:2010-12-1
收藏
得分:2 
程序代码:
(gdb) disass main
Dump of assembler code for function main:
   0x08048433 <+0>:    push   %ebp                   
   0x08048434 <+1>:    mov    %esp,%ebp                    ;create stack frame equal to instruction "enter"
   0x08048436 <+3>:    and    $0xfffffff0,%esp             ;esp align to 0x10
   0x08048439 <+6>:    sub    $0x10,%esp                   ;stack allocate memory size = 0x10 for function parameters
   0x0804843c <+9>:    movl   $0x4,0xc(%esp)               ;stack transfer parameters
   0x08048444 <+17>:   movl   $0x3,0x8(%esp)          
   0x0804844c <+25>:   movl   $0x2,0x4(%esp)
   0x08048454 <+33>:   movl   $0x1,(%esp)
   0x0804845b <+40>:   call   0x8048404 <test_function>    ;test_function(1, 2, 3, 4);
   0x08048460 <+45>:   leave                               ;(>386 instuction pair instruction to "enter") equal to mov esp,ebp pop ebp
   0x08048461 <+46>:   ret                                 ;return;
End of assembler dump.


(gdb) disass test_function
Dump of assembler code for function test_function:
   0x08048404 <+0>:    push   %ebp
   0x08048405 <+1>:    mov    %esp,%ebp
   0x08048407 <+3>:    sub    $0x28,%esp
   0x0804840a <+6>:    mov    %gs:0x14,%eax
   0x08048410 <+12>:   mov    %eax,-0xc(%ebp)
   0x08048413 <+15>:   xor    %eax,%eax
   0x08048415 <+17>:   movl   $0x6,-0x1c(%ebp)             ;flag = 6;
   0x0804841c <+24>:   movb   $0x41,-0x16(%ebp)            ;buffer[0] = 'A';
   0x08048420 <+28>:   mov    -0xc(%ebp),%eax
   0x08048423 <+31>:   xor    %gs:0x14,%eax
   0x0804842a <+38>:   je     0x8048431 <test_function+45>
   0x0804842c <+40>:   call   0x8048340 <__stack_chk_fail@plt>
   0x08048431 <+45>:   leave 
   0x08048432 <+46>:   ret   
End of assembler dump.
(gdb)
不明白就慢慢明白,急什么

技术问题,请不要以短消息方式提问
2012-01-13 22:11
madfrogme
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:21
帖 子:1160
专家分:1106
注 册:2009-6-24
收藏
得分:0 
非常感谢斑竹的注释,受教了

The quieter you become, the more you can hear
2012-01-13 23:51
wfoo
Rank: 3Rank: 3
等 级:论坛游侠
威 望:7
帖 子:120
专家分:134
注 册:2011-8-6
收藏
得分:2 
楼主还是找本介绍intel处理器的书看吧。真正说起来,汇编从语法上讲还是比c语言要简单些,但使用起来更麻烦。如果你了解处理器的工作流程,汇编基本上不用学就明白了。

[ 本帖最后由 wfoo 于 2012-1-14 00:13 编辑 ]
2012-01-14 00:10
快速回复:用gdb分析C的时候,碰到ebp寄存器,不太明白它到底指向哪里
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011978 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved