前言:
在/dev目录下存放着许多设备文件,这些设备对应的有些是字符设备,有些是块设备,每个设备都有主设备号,和次设备号。
正文:
/dev/null这个设备文件相当于黑洞,所有重定位到这个设备文件的内容都会消失,这个文件主要要在不必要输出的规避
/dev/zero这个设备文件稍微要难理解一点,这个设备文件提供无限个\0的字符,一般用它来初始化一些文件。我...
分类:
其他好文 时间:
2014-05-25 16:27:38
阅读次数:
324
1.程序的构建
在构建程序的时候,链接器都会给程序设置一个默认的加载地址,即首选基地址,它表示该模块被映射到进程地址空间时最佳的内存地址。默认情况下,对于EXE程序而言,windows链接器会将它的首选基地址设置为0X400000(四十万),而DLL程序的首选基地址则被设置为0X10000000(1千万),然后链接器将该地址以及一些相关数据和代码的地址写入到PE文件中。首选基地址的是为了系统程序...
分类:
其他好文 时间:
2014-05-10 04:39:44
阅读次数:
821
动态连接基本上分三步 启动动态连接器本身 装载所有需要的共享对象 重定位和初始化
动态连接器本身也是一个共享对象,但其不依赖于其他任何共享对象,其本身所需的全局和静态变量的重定位工作由它本身完成。动态链接器必须在启动时有一段非常精巧的代码可以完成这项工作而同时保证不用到全局和静态变量。这种具有一定限...
分类:
其他好文 时间:
2014-05-10 00:28:12
阅读次数:
265
前面有篇文章分析了ELF格式,也只是让我们对目标文件有了一个大概的了解,并没有说明一个十分重要的问题:重定位,今天重新看了下重定位的资料,终于弄懂了重定位的过程,下面来做一个分析。
我们将使用下面两个源代码中的文件a.c和b.c展开分析:
//a.c
extern int shared;
int main()
{
int a=100;
swap(&a,&shared);
}
//b.c
i...
分类:
其他好文 时间:
2014-05-07 22:35:28
阅读次数:
328