自动变量为什么不出现在符号表中?
程序:1 #include<stdio.h>
2 int a;
3 int b=3;
4 int main()
5 {
6 static intc=4;
7 static intd;
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 }
符号表
# readelf -s com.o
Symbol table '.symtab' contains 14 entries:
Num: ValueSize Type Bind Vis Ndx Name
0: 00000000 0 NOTYPELOCALDEFAULTUND
1: 00000000 0 FILE LOCALDEFAULTABS com.c
2: 00000000 0 SECTION LOCALDEFAULT 1
3: 00000000 0 SECTION LOCALDEFAULT 3
4: 00000000 0 SECTION LOCALDEFAULT 4
5: 00000000 4 OBJECTLOCALDEFAULT 4 d.1572
6: 00000004 4 OBJECTLOCALDEFAULT 3 c.1571
7: 00000000 0 SECTION LOCALDEFAULT 5
8: 00000000 0 SECTION LOCALDEFAULT 7
9: 00000000 0 SECTION LOCALDEFAULT 6
10: 00000000 4 OBJECTGLOBAL DEFAULT 3 b
11: 00000000 110 FUNC GLOBAL DEFAULT 1 main
12: 00000004 4 OBJECTGLOBAL DEFAULTCOM a
13: 00000000 0 NOTYPEGLOBAL DEFAULTUND printf
在里面找不到e,f的信息
[ 本帖最后由 xdshting 于 2009-12-8 15:35 编辑 ] 存在栈里的局部变量,使用相对寻址或者模拟相对寻址方式,既然不是一个绝对的地址,就不用重新定位,那么符号表里有它存在的必要吗?符号表设计的初衷是什么呢? 其实不是空间,而是效率。 我觉得不光是效率,还有变量生存范围的问题 贵所的16核64位MIPS 3代什么时候量产啊?我都打算上x86的板子了。
回复 #4 nicolas.shen 的帖子
局部变量在最后生成的优化代码中可能根本不存在。
页:
[1]