ELF文件格式是一个开放标准,各种UNIX系统的可执行文件都采用ELF格式,它有三种不同的类型:可重定位的目标文件(Relocatable,或者Object File)可执行文件(Executable)共享库(Shared Object,或者Shared Library) ELF格式提供了两种不同的...
分类:
其他好文 时间:
2015-04-22 10:55:20
阅读次数:
170
重定位决定引用(absolute reference relocation)
还是承接前面的程序,在swap.c中 “int *bufp0 = &buf[0];”bufp0被初始化为一个全局的数组地址,所以需要重定位,详细信息如图和, r.offset=0xc, r.symbol=buf, r.type=R_386_32 ,重定位条目告诉编译器,这是一个32位的绝对引用,必须重定位才能指...
分类:
其他好文 时间:
2015-04-14 13:02:28
阅读次数:
165
重定位PC相对引用(PC-relative reference relocation)
示例代码(main.c, swap.c )见之前的一篇文章,分析目标文件。
可以看到main中调用swap的call指令位于section offset 0x1d处,操作码是e8,操作数是32bit的引用0xfffffffc,即-4(little endian存储的),下一行显示的是swa...
分类:
其他好文 时间:
2015-04-14 11:13:29
阅读次数:
257
1、重定位 汇编器产生的目标程序至少包含三个区,即文本区,数据区和bss区。文本区一般包括程序的代码和常量,数据区通常存放全局变量等内容,bss区用于存放未初始化的变量或作为公共变量存储空间。在一个目标文件中,其text区从地址0开始,随后是data区,再后面是bss区。而要运行程序,必须装载到内....
分类:
其他好文 时间:
2015-04-13 16:12:08
阅读次数:
126
符号和符号表在ld等链接器的上下文中,有三种不同的符号。每一个可重定位目标模块m都有一个符号表,它包含m所定义的和引用的符号的信息。由m所定义的并且能够被其他模块所引用的全局符号。就是非静态的c函数和被定义为不带c static属性的全局变量。在其他模块定义并被模块m引用的全局符号。......
分类:
其他好文 时间:
2015-04-07 11:56:07
阅读次数:
144
由于静态链接会造成内存和磁盘空间的浪费,同时程序的更新存在问题。所以提出了动态链接的概念。具体来讲就是在程序真正运行的时候才进行链接操作,这个在一定成都上可能带来性能问题,不过这样增加了相同代码的共享,增加了内存的利用率。
动态链接的步骤:
1) 加载可执行文件(存在外部符号引用),过程与静态链接一样
2) 加载动态链接库ld.so
3) 操作系统将控制权交给动态链接器的入口地址
4...
分类:
其他好文 时间:
2015-04-06 11:34:57
阅读次数:
170
ELF文件格式
这一节文章的标题叫做,在这里就不得不说ELF文件的格式. 因为像.o , .so, .exe 为后缀名的文件都是elf格式的文件. ELF 文件格式是一种二进制的文件.它被叫做可执行链接的格式(Executable and Linking Format).
ELF格式文件标准被选作为一种可移植的目标文件被分为三种类型:
可重定位文件(Relocatable F...
分类:
其他好文 时间:
2015-04-03 23:58:42
阅读次数:
603
本博客讲述了gcc实现静态链接的过程,和其中几个重要的概念。...
分类:
其他好文 时间:
2015-04-02 09:15:16
阅读次数:
174
文件不落地,更隐蔽一些,但是加载c语言运行时的dll会有问题,需要静态链接的dll才行,不知为何。代码开源:https://github.com/xjp342023125/Code测试代码路径:Code\trunk\Src\Test\MemLoadDll就是导入表手动加载和重定位表的修复。
分类:
其他好文 时间:
2015-03-01 23:46:30
阅读次数:
259
K-Means 是一种基于距离的排他的聚类划分方法。K-Means 基本原理:给定划分数量 k。创建一个初始划分,从数据集中随机地选择 k 个对象,每个对象初始地代表了一个簇中心(Cluster Centroid)。对于其他对象,计算其与各个簇中心的距离,将它们划入距离最近的簇。采用迭代的重定位技术...
分类:
编程语言 时间:
2015-02-06 23:05:35
阅读次数:
540