hope_process
heixia108
全部博文(251)
oldlinux(3)
Perl(1)
学习资料(2)
Enhlish(2)
心情(31)
Windows(2)
硬件相关(1)
软件工程(0)
数据挖掘与AI(1)
OpenGL(4)
2009年(2)
2008年(86)
2007年(163)
kenvifir
ganwei06
prolj
cynthia
浪花小雨
我是小小
zhu_xian
gamelefe
onejacky
zwmeimei
miaosen8
分类:
2008-03-16 01:12:17
/* code.c */
int accum = 0; int sum( int x,int y ){ int t = x + y; accum += t; return t; }
;code.s (部分)
;注意参数x,y的进栈顺序:y 在先,x在后
sum: pushl %ebp movl %esp, %ebp movl 12(%ebp), %eax ; 12(%ebp) ==> y addl 8(%ebp), %eax ; 8(%ebp) ==> x addl %eax, accum popl %ebp ret
[heixia@localhost program]$ gcc -O2 -c code.c [heixia@localhost program]$ gdb code.o (gdb) x/19xb 0x0 <sum>: 0x55 0x89 0xe5 0x8b 0x45 0x0c 0x03 0x45 0x8 <sum+8>: 0x08 0x01 0x05 0x00 0x00 0x00 0x00 0x5d 0x10 <sum+16>: 0xc3 Cannot access memory at address 0x11 反汇编工具objdump [heixia@localhost program]$ objdump -d code.o code.o: file format elf32-i386 Disassembly of section .text: 00000000 <sum>: 0: 55 push %ebp 1: 89 e5 mov %esp,%ebp 3: 8b 45 0c mov 0xc(%ebp),%eax 6: 03 45 08 add 0x8(%ebp),%eax 9: 01 05 00 00 00 00 add %eax,0x0 f: 5d pop %ebp 10: c3 ret
上一篇:<深入理解计算机系统>
下一篇:理解switch的内部实现
登录 注册