《程序员的自我修养-链接、装载和库》
2013-09-21 18:06
363 查看
第一章.温故而知新
最近电脑出了点故障,到电脑城维修,说是桥芯片坏了,刚好看到本书中关于计算机体系结构介绍北桥芯片是为了协调CPU,内存和高速图形设备之间的访问,速度非常快,而南桥芯片主要负责处理外鼠标,键盘,打印机等低速设备,并汇总到北桥芯片中.
第二章
程序从源文件到可执行文件:预处理替换和去除预处理指令如:#define, #if #endif等, 编译进行词法分析语法分析语义分析生成目标文件(linux *.o文件, windows *.obj文件),最后将目标文件链接生成可执行文件.
windows下的PE文件格式和linux下的ELF文件格式都是在COFF基础上生成的,将文件分为几个段如代码段: .text, 数据段(初始化过): .data, 未初始化数据段: .bss, 只读数据段: .rodata
第六章.可执行文件的装载与进程
(1)检查ELF可执行文件格式的有效性, 比如魔数,程序头表中段的数量.
(2)寻找动态链接的".interp"段, 设置动态链接器路径.
(3)根据ELF可执行文件的程序头表的描述, 对ELF文件进行映射,比如代码,数据,只读数据.
(4)初始化ELF进程环境, 比如进程启动时EDX寄存器的地址应该是DT_FINI的地址.
(5)将系统调用的返回地址修改成ELF可执行文件的入口点,这个入口点取决于程序的链接方式, 对于静态链接的ELF可执行文件,这个程序入口就是ELF文件的文件头中e_entry所指的地址,对于动态链接的ELF可执行文件,程序入口点是动态连接器
当load_elf_binary()执行完毕,返回至do_execve()再返回至sys_execve()时,上面5补中已经把系统调用的返回地址改成了被装载的ELF程序的入口地址了,所以当sys_execve()系统调用从内核态返回用户态时, EIP寄存器直接跳转到了ELF程序的入口地址,于是新的程序开始执行, ELF可执行文件装载完成.
第七章.
动态库中的全局变量在加载时,在当前进程中会保存一个副本,防止不同进程进行访问时发生冲突.
最近电脑出了点故障,到电脑城维修,说是桥芯片坏了,刚好看到本书中关于计算机体系结构介绍北桥芯片是为了协调CPU,内存和高速图形设备之间的访问,速度非常快,而南桥芯片主要负责处理外鼠标,键盘,打印机等低速设备,并汇总到北桥芯片中.
第二章
程序从源文件到可执行文件:预处理替换和去除预处理指令如:#define, #if #endif等, 编译进行词法分析语法分析语义分析生成目标文件(linux *.o文件, windows *.obj文件),最后将目标文件链接生成可执行文件.
windows下的PE文件格式和linux下的ELF文件格式都是在COFF基础上生成的,将文件分为几个段如代码段: .text, 数据段(初始化过): .data, 未初始化数据段: .bss, 只读数据段: .rodata
第六章.可执行文件的装载与进程
(1)检查ELF可执行文件格式的有效性, 比如魔数,程序头表中段的数量.
(2)寻找动态链接的".interp"段, 设置动态链接器路径.
(3)根据ELF可执行文件的程序头表的描述, 对ELF文件进行映射,比如代码,数据,只读数据.
(4)初始化ELF进程环境, 比如进程启动时EDX寄存器的地址应该是DT_FINI的地址.
(5)将系统调用的返回地址修改成ELF可执行文件的入口点,这个入口点取决于程序的链接方式, 对于静态链接的ELF可执行文件,这个程序入口就是ELF文件的文件头中e_entry所指的地址,对于动态链接的ELF可执行文件,程序入口点是动态连接器
当load_elf_binary()执行完毕,返回至do_execve()再返回至sys_execve()时,上面5补中已经把系统调用的返回地址改成了被装载的ELF程序的入口地址了,所以当sys_execve()系统调用从内核态返回用户态时, EIP寄存器直接跳转到了ELF程序的入口地址,于是新的程序开始执行, ELF可执行文件装载完成.
第七章.
动态库中的全局变量在加载时,在当前进程中会保存一个副本,防止不同进程进行访问时发生冲突.
相关文章推荐
- [Mo]程序员的自我修养-链接、装载与库读书笔记【1】-gcc编译、链接
- 【读书笔记】程序员的自我修养:链接、装载与库 第一章 温故而知新
- 《程序员的自我修养--链接、装载与库》笔记--第二章 编译和链接
- 程序员的自我修养-链接、装载与库-7 动态链接
- 程序员的自我修养 -- 链接、装载与库
- 程序员的自我修养-链接、装载与库-1 计算机层次结构
- 程序员的自我修养-链接、装载与库-3 目标文件
- 《程序员的自我修养》读书笔记2 -- ELF目标文件和静态链接和装载
- 推荐书籍《程序员的自我修养--链接、装载与库》
- <程序员的自我修养-链接,装载与库> 阅读笔记
- 《程序员的自我修养——链接、装载与库》——装载
- 读书笔记之《程序员的自我修养--链接、装载与库》
- 【程序员的自我修养——链接、装载与库】笔记
- 程序员的自我修养-链接、装载与库-2 静态链接的过程
- 《程序员的自我修养——链接、装载与库》第一章笔记
- 《程序员的自我修养——链接、装载与库》 读书总结
- 程序员的自我修养 链接、装载、与库——读书笔记
- 程序员的自我修养——链接,装载与库(第1,2部分)
- 读书笔记之《程序员的自我修养--链接、装载与库》
- 《程序员的自我修养-链接、装载和库》序