我这里只有一个 GCC v4 用于测试,但我认为 binutils 的这个特殊功能最近没有改变。
测试.c:
int foo()
{
return 42;
}
Run Code Online (Sandbox Code Playgroud)
编译:
$ gcc -c test.c -o test.o
Run Code Online (Sandbox Code Playgroud)
拆解:
$ objdump -D test.o
...
0000000000000000 <foo>:
0: 55 push %rbp
1: 48 89 e5 mov %rsp,%rbp
4: b8 2a 00 00 00 mov $0x2a,%eax
9: c9 leaveq
a: c3 retq
...
Run Code Online (Sandbox Code Playgroud)
(我们看到foo位于地址 0,大小为 0x000b 字节。)
布丁中有证据:
$ nm -S test.o
0000000000000000 000000000000000b T foo
Run Code Online (Sandbox Code Playgroud)
地址为 0,大小为 0x000b。你在这。;-)
但是,要小心处理这些数字。这是函数的大小没问题,但可能需要更多(例如全局数据对象)才能使函数正确运行。
| 归档时间: |
|
| 查看次数: |
2905 次 |
| 最近记录: |