程序的装入与连接程序要经过编译,链接,装入才能运行绝对转入方式将程序装入事先指定的地址,程序装入以后逻辑地址与实际内存地址相同。要求程序员非常熟悉内存地址可重定位方式根据内存的具体情况将程序装入适当的位置,把装入时对程序和数据的地址修改过程称为重定位。动态运行时的装入方式程序对换的时候内存是改变的
可重定位不允许程序运行时在内存中移动位置。动态运行时的装入程序在把装入模块装入内存后,并不立即把装入...
分类:
其他好文 时间:
2015-05-31 20:12:30
阅读次数:
298
__linker_init() 在 begin.S 中被调用,并传入两个参数:sp(堆栈指针)、#0。 linker(动态链接器,也称解释器)本身也是一个 shared object,__linker_init() 负责初始化 linker,完成 linker 的重定位等工作。由...
分类:
移动开发 时间:
2015-05-30 19:50:23
阅读次数:
150
六星经典CSAPP-笔记(7)加载与链接1.对象文件(Object File)1.1 文件类型对象文件有三种形式:
可重定位对象文件(Relocatable object file):包含二进制代码和数据,能与其他可重定位对象文件在编译时合并创建出一个可执行文件。
可执行对象文件(Executable object file):包含可以直接拷贝进行内存执行的二进制代码和数据。
共享对象文件(Sh...
分类:
移动开发 时间:
2015-05-22 22:34:14
阅读次数:
186
注:本文章转载于网络,源地址为:http://blog.csdn.net/ithzhang/article/details/7051558本篇文章将介绍DLL显式链接的过程和模块基地址重定位及模块绑定的技术。 第一种将DLL映射到进程地址空间的方式是直接在源代码中引用DLL中所包含的函数或是变量,D...
链接分为静态目标文件链接,静态库链接,动态共享库链接,动态共享库加载四种。
1.1 静态目标文件链接
每个代码文本文件都生成一个.O文件,链接器链接所有的目标文件到一个可执行文件。
链接器完成的两个任务有:
1. 符号解析。就是为每一个未知的符号找到它的定义。
2. 重定位。编译阶段生成的目标文件都是从地址0开始的,链接器修改这些地址。
1.2 ...
分类:
其他好文 时间:
2015-05-09 11:46:36
阅读次数:
124
"标准库定义了4个IO对象,处理输入时使用命名为cin的istream类型对象,这个对象也成为标准输入。处理输出时使用命名为cout的ostream类型对象,这个对象也称为标准输出。标准库还定义了另外两个ostream对象,分别命名为cerr和clog。cerr对象又叫标准错误,通常用来输出警告和错...
分类:
编程语言 时间:
2015-05-08 01:31:41
阅读次数:
173
因为小可并非硬件编程出身,汇编基础又比较差。。。所以刚开始理解利用IOAPIC重定位技术的时候相当困难。何为IOAPIC?首先,必须认识到它是一个硬件,可编程的硬件。我理解的它在整个流程中的作用如图:首先,必须创建一个新的中断项,也就是在IDT表中搜索到一个空闲的项,代码如下P2C_U8 p2cGe...
一.ELF文件格式ELF(Executable and Linking Format)是x86 Linux系统下常用的目标文件格式,有三种主要类型:适于连接的可重定位文件,可与其他目标文件一起创建可执行文件和共享目标文件。适于执行的可执行文件,用于提供程序的进程映像,加载的内存执行。共享目标文件,连...
分类:
系统相关 时间:
2015-05-01 22:29:45
阅读次数:
525
存 储 管 理
一、基础概念:
什么是储存器?:在电脑中存储文件或其他东西的设备。
什么是存储管理?:即使对电脑的“主存器”进行管理,根据用户程序的要求为他分配
主存空间和实现重定位,同时还保护用户存放在主存储器中的程序和数据不被破坏。必
要是可以提供虚拟存储技术,扩充主存空间,为用户提供比实际容量大的虚拟储存空
间。...
分类:
其他好文 时间:
2015-04-29 19:53:05
阅读次数:
123
linux应用开发-设计动态库
一 制作动态库
1. gcc –c mylib.c –o mylib.o
2. gcc -shared -fPIC mylib.o -o libmylib.so
3. 将制作好的libmylib.so 复制到/usr/lib
4 -fpic 使输出的对象模块是按照可重定位地址方式生成
5 -shared 指明产生动态链接...
分类:
系统相关 时间:
2015-04-27 09:52:58
阅读次数:
167