就是类似于反汇编器的命令
把你的目标代码生成一种类似于汇编代码的格式
假设代码文件code.c:
Int accum = 0;
Int sum(int x, int y)
{
Int t = x + y;
accum += t;
return t;
}
编译上面的code.c
unix>gcc -O2 -c code.c
这样就会产生目标代码文件 code.o,它是二进制格式的,所以无法直接读。
但通过下面的命令:可以生成汇编代码和对应的Byte和Offset.
Unix> objdump -d code.o
00000000 <sum>:
Offset Bytes Equivalent assembly language
0: 55 push %ebp
1: 89 e5 mov %esp,%ebp
3: 8b 45 0c mov 0xc(%ebp),%eax
6: 8b 55 08 mov 0x8(%ebp),%edx
9: 5d pop %ebp
a: 01 d0 add %edx,%eax
c: 01 05 00 00 00 00 add %eax,0x0
12: c3 ret
上面的offset是相对地址。如果你再写个main函数 然后生成可执行文件后,再用上面
的反汇编命令后 Offset就变成程序在内存中世纪的物理内存地址了。。。。。。。