xdshting 发表于 2009-12-08 15:33

自动变量为什么不出现在符号表中?

程序:
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 编辑 ]

cjaizss 发表于 2009-12-08 20:06

存在栈里的局部变量,使用相对寻址或者模拟相对寻址方式,既然不是一个绝对的地址,就不用重新定位,那么符号表里有它存在的必要吗?符号表设计的初衷是什么呢?

prolj 发表于 2009-12-08 20:16

其实不是空间,而是效率。

nicolas.shen 发表于 2009-12-08 22:52

我觉得不光是效率,还有变量生存范围的问题

prolj 发表于 2009-12-09 15:55

贵所的16核64位MIPS 3代什么时候量产啊?我都打算上x86的板子了。

zuxy 发表于 2009-12-18 16:52

回复 #4 nicolas.shen 的帖子

局部变量在最后生成的优化代码中可能根本不存在。
页: [1]
查看完整版本: 自动变量为什么不出现在符号表中?