《深入理解计算机系统》第7章 链接 本章主要内容: 链接——静态链接、动态链接(链接又包括两个主要任务:符号解析和重定位) 符号——全局符号和本地符号、符号表、符号解析 链接文件的创建及引用——gcc、ar rcs、sharedj及fPIC命令参数 重定位——重定位条目、重定位符号引用(PC相对引用 ...
分类:
其他好文 时间:
2016-04-06 21:36:30
阅读次数:
197
可执行程序的装载 一,预处理、编译、链接和目标文件的格式 可执行程序是怎么来的? 预处理 把include里的宏定义替换 做字符串处理。 efl格式? 目标文件格式,Windows中用PE Linux中用efl。 静态链接、动态链接? ABI和文件格式的关系? 二进制兼容。 可重定位文件 可执行文件 ...
分类:
系统相关 时间:
2016-04-06 11:01:06
阅读次数:
212
《深入理解计算机系统》第七章读书笔记 第七章:连接 一、连接 PS:X86-64系统上用gcc -m32产生32位代码 7.1编译器驱动程序 7.2静态链接 ld静态链接器: 7.3目标文件 7.4可重定位目标文件 7.5符号和符号表 1.任何声明带有static属性的全局变量或者函数都是模块私有的 ...
分类:
其他好文 时间:
2016-04-04 19:38:12
阅读次数:
184
共享库载入时重定位
原作者:Eli Bendersky
http://eli.thegreenplace.net/2011/08/25/load-time-relocation-of-shared-libraries
本文的目的是解释现代操作系统如何使得共享库载入时重定位成为可能。它关注运行在32位x86的LinuxOS,但通用的原则也适用于其他OS与CPU。
共享库有许多名字——共享库,...
分类:
其他好文 时间:
2016-04-01 18:14:17
阅读次数:
274
程序在内存中加载好后 代码段和数据段的段地址在内存中的位置发生了变化 这个变化是随机的 因为内存中的空间占用也是动态的 所以程序加载好后需要重定位 需要把代码段的段地址和数据段的段地址 分别告诉 代码段寄存器(code segment) 和数据段寄存器(data segment) 让CPU 处理器 ...
分类:
其他好文 时间:
2016-03-29 23:53:41
阅读次数:
166
程序的加载和执行(三)——读书笔记23接着上次的内容说。
关于过程load_relocate_program的讲解还没有完,还差创建栈段描述符和重定位符号表。分配栈空间与创建栈段描述符462 ;建立程序堆栈段描述符
463 mov ecx,[edi+0x0c] ;4KB的倍率
464 mov ebx,0x000fff...
分类:
编程语言 时间:
2016-03-27 01:49:21
阅读次数:
324
编译系统的构成 1.预处理阶段:预处理器处理字符#开头的命令,展开头文件; 2.编译阶段:编译器将预处理过的源程序翻译成汇编语言程序; 3.汇编阶段:汇编器将汇编程序翻译成机器语言指令; 4.链接阶段:链接器合并我们的可重定位目标文件和程序库的目标文件最终生成可执行目标文件。
分类:
其他好文 时间:
2016-03-12 14:37:20
阅读次数:
152
接上篇文章,在尝试安装Exchange2016与现存的Exchange2010做混合部署的时候,上一篇文章中所提到的FederatedEmail丢失如果是第一个步问题的话,今天给大家讲的就是第二个连环问题。我们先看报错:同样是来自在部署Mailboxrole步骤出的错细看上面截图中的内容,提到了“systemMa..
分类:
其他好文 时间:
2016-02-15 16:41:22
阅读次数:
330
一、一般安装设置:http://my.oschina.net/jast90/blog/382688二、repository 地址重定位http://www.cnblogs.com/hemingwang0902/archive/2012/02/09/2343499.html
1、一个事实:大部分指令是位置有关编码位置无关编码(PIC,position independent code):汇编源文件被编码成二进制可执行程序时编码方式与位置(内存地址)无关。位置有关编码:汇编源码编码成二进制可执行程序后和内存地址是有关的。我们在设计一个程序时,会给这个程序指定一个运行地址(...
分类:
其他好文 时间:
2016-01-05 15:37:40
阅读次数:
224