自动变量为什么不出现在符号表中?
程序:
1 #include<stdio.h>
2 int a;
3 int b=3;
4 int main()
5 {
6 static int c=4;
7 static int d;
8 int e,f;
9 int g=5;
10 printf("%d,%d,%d,%d,%d,%d\n",a,b,c,d,e,f,g);
11
12 }
符号表
[root@localhost file]# readelf -s com.o
Symbol table '.symtab' contains 14 entries:
Num: Value Size Type Bind Vis Ndx Name
0: 00000000 0 NOTYPE LOCAL DEFAULT UND
1: 00000000 0 FILE LOCAL DEFAULT ABS com.c
2: 00000000 0 SECTION LOCAL DEFAULT 1
3: 00000000 0 SECTION LOCAL DEFAULT 3
4: 00000000 0 SECTION LOCAL DEFAULT 4
5: 00000000 4 OBJECT LOCAL DEFAULT 4 d.1572
6: 00000004 4 OBJECT LOCAL DEFAULT 3 c.1571
7: 00000000 0 SECTION LOCAL DEFAULT 5
8: 00000000 0 SECTION LOCAL DEFAULT 7
9: 00000000 0 SECTION LOCAL DEFAULT 6
10: 00000000 4 OBJECT GLOBAL DEFAULT 3 b
11: 00000000 110 FUNC GLOBAL DEFAULT 1 main
12: 00000004 4 OBJECT GLOBAL DEFAULT COM a
13: 00000000 0 NOTYPE GLOBAL DEFAULT UND printf
在里面找不到e,f的信息
[ 本帖最后由 xdshting 于 2009-12-8 15:35 编辑 ]
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
存在栈里的局部变量,使用相对寻址或者模拟相对寻址方式,既然不是一个绝对的地址,就不用重新定位,那么符号表里有它存在的必要吗?符号表设计的初衷是什么呢?
其实不是空间,而是效率。
我觉得不光是效率,还有变量生存范围的问题
贵所的16核64位MIPS 3代什么时候量产啊?我都打算上x86的板子了。
局部变量在最后生成的优化代码中可能根本不存在。