程序员的自我修养总结.doc_第1页
程序员的自我修养总结.doc_第2页
程序员的自我修养总结.doc_第3页
程序员的自我修养总结.doc_第4页
程序员的自我修养总结.doc_第5页
免费预览已结束,剩余93页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精品文档目录第一章 温故而知新 .6第二节 万变不离其宗 .6第 3 节 站得高看得远 .7第 4 节 操作系统的功能 .71.4.1不要让 CPU 打盹 .71.4.2设备驱动 .81.5内存不够怎么办? .81.5.1关于隔离 .81.5.2分段 .91.5.3分页 .91.6众人拾柴火焰高 .101.6.1线程基础 .101.6.2线程安全 .111.6.3多线程内部情况 .14第二章 编译和链接 .152.1被隐藏了的过程 .152.1.1预编译 .152.1.2编译 .152.1.3汇编 .152.1.4链接 .162.2编译器做了什么 .162.2.1词法分析 .162.2.2语法

2、分析 .162.2.3语义分析 .162.2.4中间语言生成 .172.2.5目标代码的生成与优化 .172.3链接器年龄比编译器长 .182.4模块拼接 静态链接 .18第三章目标文件里有什么 .183.1目标文件的格式 .193.2目标文件是什么样的 .193.3挖掘 SimpleSection.o .203.3.3BSS段 .203.3.4其他段 .203.4ELF文件结构描述 .203.4.1文件头 .213.4.2段表 .213.4.3重定位表 .223.4.4字符串表 .223.5链接的接口 符号 .223.5.1ELF符号表结构 .233.5.2特殊符号 .23.精品文档3.5.

3、3符号修饰与函数签名 .243.5.5弱符号和强符号 .243.6调试信息 .25第 4 章静态链接 .254.1空间与地址分配 .254.1.2相似段合并 .254.1.3符号地址的确定 .264.2符号解析与重定位 .264.2.2重定位表 .264.2.3符号解析 .274.2.4指令修正方式 .274.3 COMMON 块 .274.4.1重复代码消除 .284.4.2全局构造与析构 .294.4.3C+与 ABI .294.5静态库链接 .304.6链接过程控制 .304.6.1链接过程脚本 .304.6.2最“小”的程序 .314.6.3使用 ld 链接脚本 .314.6.4 ld

4、 链接脚本语法简介 .314.7 BFD库.31第 5 章 WINDOWS PE/COFF .315.1 Windows 的二进制文件格式 PE/COFF.315.2 PE的前身 COFF .325.3链接指示信息 .325.4调试信息 .325.5大家都有符号表 .325.6 WINDOWS 下的 ELFPE .32第 6 章 可执行文件的装载与进程 .336.1进程的虚拟地址空间 .336.2装载的方式 .336.2.1覆盖装入 .336.2.2页映射 .346.3从操作系统的角度看可执行文件的装载.346.3.1进程的建立 .346.4进程虚存空间的分布 .356.4.1ELF文件链接视

5、图和执行视图 .356.4.2堆和栈 .366.4.3堆的最大申请数量 .366.4.4段地址对齐 .366.4.5进程栈初始化 .376.5Linux 内核装载 ELF过程简介 .376.6 Windows PE 的装载 .38.精品文档第 7 章动态链接 .387.1为什么要动态链接 .387.2简单的动态链接例子 .397.3地址无关代码 .407.3.1固定装载地址的困扰 .407.3.2装载时重定位 .407.3.3地址无关代码 .407.3.4共享模块的全局变量问题 .427.3.5代码段地址无关性 .437.4延迟绑定 (PLT).437.5动态链接相关结构 .447.5.1“

6、.interp”段 .457.5.2“ dynamic”段 .457.5.3动态符号表 .457.5.4动态链接重定位表 .457.5.5动态链接时进程堆栈初始化信息.467.6动态链接的步骤和实现 .467.6.1动态链接器自举 .467.6.2装载共享对象 .477.6.3重定位和初始化 .477.6.4Linux 动态链接器的实现 .477.7显示运行时链接 .487.7.1打开动态库 .487.7.2 dlsym() .487.7.3 dlerror() .487.7.4 dlclose() .49第 8 章 Linux 共享库的组织 .498.1共享库版本 .498.1.1共享库兼容

7、性 .498.1.2共享库版本命名 .498.1.3 SO-NAME程序需要记录什么 .508.2符号版本 .508.2.1基于符号的版本机制 .508.2.3Linux 中的符号版本 .518.3共享库系统路径 .518.4共享库的查找过程 .518.5环境变量 .528.6共享库的创建与安装 .528.6.1共享库的创建 .528.6.3共享库的安装 .538.6.4共享库构造和析构函数 .538.6.5共享库脚本 .53第 9 章 Windows 下的动态链接 .549.1 dll 介绍 .54.精品文档9.1.2 基地址和 RVA .549.1.3 dll 共享数据段 .549.1.4 dll 的简单例子 .549.1.7使用模块定义文件 .559.1.8 DLL显示运行时链接 .559.2符号导出导入表 .559.2.1导出表 .559.2.2 EXP文件 .569.2.4导入表 .569.2.5导入函数的调用 .569.3 DLL优化 .579.3.1重定基地址 .579.3.2序号 .589.3.3导入函数绑定 .589.4 C+与动态链接 .589.5 DLL HELL .59第 4 部分 库

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论