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

发布于 2022-09-18 10:30:41 字数 2580 浏览 11 评论 0

程序:
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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

染火枫林 2022-09-25 10:30:41

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

七七 2022-09-25 10:30:41

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

Hello爱情风 2022-09-25 10:30:41

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

め七分饶幸 2022-09-25 10:30:41

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

小梨窩很甜 2022-09-25 10:30:41

局部变量在最后生成的优化代码中可能根本不存在。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文