《程序员的自我修养-链接、装载与库》笔记
文章平均质量分 83
Allblues57
这个作者很懒,什么都没留下…
展开
-
《程序员的自我修养》读书笔记:Windows PE/COFF
#pragma data_seg("FOO")int global = 1;#pragma data_seg(".data")将“global”放到“FOO”段里面,然后再换回来,恢复到“.data”。"cl"是VISUAL C++的编译器。/c 表示只编译不链接,即将.c文件编译成.obj。如果不加这个参数,cl会在编译 .c后再调用link将 .obj与默认的C运行...原创 2015-03-11 10:48:17 · 722 阅读 · 0 评论 -
《程序员的自我修养》读书笔记:可执行文件的装载与进程
每个程序被运行起来后,它将拥有自己独立的虚拟地址空间,这个虚拟地址空间的大小由计算机的硬件平台决定。一般来说,C语言指针大小的位数与虚拟空间的位数相同。Linux OS 对进程虚拟地址空间的分配: Operating System 1GB0xC0000000 -------------...原创 2015-03-11 11:07:47 · 842 阅读 · 0 评论 -
《程序员的自我修养》读书笔记:静态链接
空间与地址分配1.按序叠加将输入的目标文件按照次序叠加起来,但浪费空间。2.相似段合并(采用)相同性质的段合并在一起。“.bss”段在目标文件和可执行文件中并不占用文件的空间,但是它在装载时占用地址空间。所以链接器在合并各个段的同时也将“.bss”合并,并且分配虚拟空间。“链接器为目标文件分配地址和空间”,此处的“地址和空间”有两个含义: 在...原创 2015-03-10 14:07:33 · 709 阅读 · 0 评论 -
《程序员的自我修养》读书笔记:链接的接口——符号
在链接中,目标文件之间相互拼合实际上是目标文件之间对地址的引用,即对函数和变量的地址的引用(Reference)。我们将函数和变量统称为符号(symbol),函数名或变量名即符号名。每一个目标文件都有一个相应的符号表,记录了该目标文件中用到的所有符号。每个定义的符号有一个对应的值,即符号值,对于变量和函数来说,符号值即它们的地址。类型:(以SimpleSection.o为例)1...原创 2015-03-09 21:50:39 · 850 阅读 · 2 评论 -
《程序员的自我修养》读书笔记:动态链接
为了解决空间浪费和更新困难问题,动态链接把程序的模块相互分割开,形成独立的文件。即不对那些组成程序的目标文件进行链接,等到程序要运行时才进行链接。------------------------------------------------------------------------------------程序可扩展性和兼容性程序在运行时可以动态地选择加载各种程序模块,这个特...原创 2015-03-11 17:55:11 · 909 阅读 · 1 评论 -
《程序员的自我修养》读书笔记:ELF文件结构描述
用readelf命令详细查看ELF文件Entry point address: 0x0入口地址,规定ELF程序的入口虚拟地址,OS在加载完该程序后从这个地址开始执行进程的指令。可重定位文件(Type: REL)一般没有入口地址,则这个值为0.Start of section headers: 280(bytes into file)段表在文件中的偏移。--------...原创 2015-03-09 16:38:14 · 942 阅读 · 0 评论 -
挖掘SimpleSection.o
挖掘SimpleSection.o原创 2015-03-09 11:24:13 · 1001 阅读 · 0 评论