符号和符号表

每个可重定位目标模块m都有一个符号表,它包含m所定义和引用的符号的信息。

有三种不同的符号:

  • 由m定义并能被其他模块引用的全局符号。对应非静态的C函数以及不带C static属性的全局变量
  • 由其他模块定义,并被m引用的全局符号。这些符号称为外部符号,对应定义在其他模块中的C函数和变量。
  • 只被模块m定义和引用的本地符号。对应带static属性的C函数和全局变量。这些符号不能不其他模块引用。

.symtab中的符号表不包含本地非静态变量。这些符号在运行时在栈中被管理。

定义为带有C static属性的本地过程变量不在栈中管理。编译器为其在.data和.bss中定义分配空间,并在符号表中创建一个有唯一名字的本地链接器符号。

例如:

int f()
{
static int x=0;
return x;
}
int g()
{
static int x=1;
return x;
}

编译器在.data中为两个整数分配空间,并export两个唯一的本地链接器符号给汇编器。编译器把初始化为0的变量放在.bss而不是.data中,所以函数f()中定义的x实例在.bss中而不是.data中。

《CSAPP》符号和符号表的更多相关文章

  1. ELF Format 笔记(十五)—— 符号哈希表

    ilocker:关注 Android 安全(新手) QQ: 2597294287 符号哈希表用于支援符号表的访问,能够提高符号搜索速度. 下表用于解释该哈希表的组织,但该格式并不属于 ELF 规范. ...

  2. CSAPP:信息的表和处理2

    CSAPP:信息的表和处理2 关键点:浮点数.浮点数运算. 二进制小数IEEE浮点数表示浮点数转换(单精度)参考 二进制小数   形如表示的二进制数,其中每个位的取值范围位0和1.这种表示方式的定义如 ...

  3. CSAPP:信息的表和处理1

    CSAPP:信息的表和处理1 关键点:寻址.内存.磁盘.虚拟地址.物理地址.整型数组. 信息存储中的几个概念整型数据类型无符号数有符号数几个概念有符号数与无符号数之间转换基于栈与基于寄存器的区别 信息 ...

  4. (js) 输入框只能输入中文、英文、数字、@符号和.符号

    只能输入中文.英文.数字.@符号和.符号<input type="text" onkeyup="value=value.replace(/[^\a-\z\A-\Z0 ...

  5. maven 在clean package时,出现:找不到符号 [ERROR] 符号: 方法 sqlDdlFilter(java.lang.String) 解决办法

    另一个项目中增加了,sqlDdlFilter 在调用的项目中clean package时,出现 找不到符号[ERROR] 符号: 方法 sqlDdlFilter(java.lang.String) 原 ...

  6. VS2013 warning C4018 "<” 有符号/无符号不匹配

    1, VS2013 warning C4018 "<” 有符号/无符号不匹配" 警告 出错代码: void show(const vector<int>& ...

  7. package.json中^符号和~符号前缀的区别

          开发中经常会使用npm install 安装依赖包,经常会看到^符号和~符号,现将二者的区别总结如下:     版本号 x.y.z : z :表示一些小的bugfix, 更改z的号, y ...

  8. 深入理解ES6之—符号与符号属性

    在js已有的基本类型(字符串,数值,布尔型,null和undefined)之外,es6引入了一种新的基本类型:==符号(Symbol)==.符号起初被设计用于创建对象私有成员. 符号没有字面量形式,你 ...

  9. java有符号无符号的转换

    数据处理中常常遇到基本数据类型的操作,java都是有符号的数据,而与下位机通信中常常遇到无符号的比如uint8, uint16,uint32等等 1.为了完成这个功能还专门采用ByteBuffer的方 ...

随机推荐

  1. 渲染标签 - v-html

    <!DOCTYPE html><html><head>    <meta charset="utf-8">    <title ...

  2. findHomography(src_points, dst_points, CV_RANSAC)

    Homography,即单应性,该函数用于求src_points转换为dst_poinsts的单应性矩阵: 为了理解单应性,必须先引入透视变换的概念:把空间坐标系中的三维物体或对象转变为二维图像表示的 ...

  3. 集合总结四(LinkedHashMap的实现原理)

    一.概述 按照惯例,先看一下源码里的第一段注释: Hash table and linked list implementation of the Map interface, with predic ...

  4. 理念的创新——从keep和得到app谈起

    浅谈keep创新之路 不得不说,这是一个健康越来越重要的时代,也是身体素质越来越被重视的一个年代.随着交通工具日新月异地发展,我们不太需要再徒步远行,甚至连骑自行车的机会也越来越少,这给我们的出行带来 ...

  5. 彻底卸载Windows 10中OneDrive

    批处理来源网上. @rem OneDrive Complete uninstaller batch process for Windows 10. @rem Run as administrator ...

  6. 删除iis日志(deliislogs.vbs)

    'path 目录 'ext 文件扩展名'expiredDays 保留多少天以内的文件Sub LogCleaner(path,ext,expiredDays) On Error Resume Next ...

  7. Windows不要使用记事本编辑文本文件

    摘自:廖雪峰 千万不要使用Windows自带的记事本编辑任何文本文件.原因是Microsoft开发记事本的团队使用了一个非常弱智的行为来保存UTF-8编码的文件,他们自作聪明地在每个文件开头添加了0x ...

  8. Faster R-CNN代码例子

    主要参考文章:1,从编程实现角度学习Faster R-CNN(附极简实现) 经常是做到一半发现收敛情况不理想,然后又回去看看这篇文章的细节. 另外两篇: 2,Faster R-CNN学习总结      ...

  9. redis集群设置密码

    redis集群密码设置 1.密码设置(推荐)方式一:修改所有Redis集群中的redis.conf文件加入:  masterauth passwd123 requirepass passwd123 说 ...

  10. Scrapy实战篇(二)之爬取链家网成交房源数据(下)

    在上一小节中,我们已经提取到了房源的具体信息,这一节中,我们主要是对提取到的数据进行后续的处理,以及进行相关的设置. 数据处理 我们这里以把数据存储到mongo数据库为例.编写pipelines.py ...