链接器和加载器
全新正版 极速发货
¥
41.58
5.3折
¥
79
全新
库存12件
作者 (美)约翰·R.莱文
出版社 机械工业出版社
ISBN 9787111703723
出版时间 2022-04
装帧 平装
开本 16开
定价 79元
货号 1202626063
上书时间 2024-05-30
商品详情
品相描述:全新
商品描述
作者简介 约翰·R.莱文( John R. Levine )互联网和网络安全领域知名专家。著有Lex&Yacc、Programming for GraphicsFiles in C and C++以及The Internet forDummies等众多书籍,其中一些被翻译成几十种语言,靠前超过700万册。他是ICANN稳定与安全咨询委员会成员、互联网协会董事以及域名保证委员会的联合创始人。他还是Journal of C LanguageTranslation的荣休出版人、comp.compilers新闻组的长期仲裁员以及某款早期商用Fortran 77编译器的创建者。他拥有耶鲁大学计算机科学博士学位。 目录 译者序<br/>前言<br/>第1章 链接和加载1<br/>1.1 链接器和加载器做什么1<br/>1.2 从历史发展的角度分析地址绑定1<br/>1.3 链接与加载3<br/>1.3.1 两遍链接4<br/>1.3.2 目标代码库5<br/>1.3.3 重定位和代码修改6<br/>1.4 编译驱动器7<br/>1.5 链接:一个真实的例子9<br/>1.6 练习12<br/>第2章 体系结构相关问题13<br/>2.1 应用程序二进制接口13<br/>2.2 内存地址13<br/>2.3 地址构成规则15<br/>2.4 指令格式15<br/>2.5 过程调用和可寻址性16<br/>2.6 数据访问和指令引用19<br/>2.6.1 IBM 37019<br/>2.6.2 SPARC21<br/>2.6.3 Intel x8623<br/>2.7 分页和虚拟内存24<br/>2.7.1 程序的地址空间26<br/>2.7.2 文件映射27<br/>2.7.3 共享库和程序28<br/>2.7.4 位置无关代码28<br/>2.8 Intel 386分段29<br/>2.9 嵌入式体系结构31<br/>2.9.1 怪异的地址空间31<br/>2.9.2 非统一内存31<br/>2.9.3 内存对齐31<br/>2.10 练习32<br/>第3章 目标文件35<br/>3.1 目标文件中有什么35<br/>3.2 空目标文件格式:MS-DOS的.COM文件36<br/>3.3 代码分段:UNIX的a.out文件36<br/>3.3.1 a.out文件头37<br/>3.3.2 与虚拟内存的交互38<br/>3.4 重定位:MS-DOS的EXE文件41<br/>3.5 符号和重定位43<br/>3.6 可重定位的a.out格式43<br/>3.6.1 重定位项44<br/>3.6.2 符号和字符串44<br/>3.6.3 a.out格式小结45<br/>3.7 UNIX ELF格式45<br/>3.7.1 可重定位文件47<br/>3.7.2 ELF可执行文件51<br/>3.7.3 ELF格式小结52<br/>3.8 IBM 360目标文件格式52<br/>3.8.1 ESD记录53<br/>3.8.2 TXT记录54<br/>3.8.3 RLD记录54<br/>3.8.4 END记录55<br/>3.8.5 小结55<br/>3.9 微软的可移植可执行文件格式55<br/>3.9.1 PE特有区段59<br/>3.9.2 运行PE可执行文件60<br/>3.9.3 PE和COFF61<br/>3.9.4 PE文件小结61<br/>3.10 Intel/Microsoft的OMF文件格式61<br/>3.10.1 OMF记录62<br/>3.10.2 OMF文件的细节63<br/>3.10.3 OMF格式小结65<br/>3.11 不同目标文件格式的比较65<br/>3.12 练习66<br/>3.13 项目66<br/>第4章 存储空间管理69<br/>4.1 段和地址69<br/>4.2 简单的存储布局69<br/>4.3 多种类型的段70<br/>4.4 段与页面的对齐72<br/>4.5 公共块和其他特殊段72<br/>4.5.1 公共块72<br/>4.5.2 C++重复代码消除73<br/>4.5.3 初始化和终结75<br/>4.5.4 IBM伪寄存器76<br/>4.5.5 专用链接表78<br/>4.5.6 x86的存储分配策略78<br/>4.6 链接器控制脚本79<br/>4.7 嵌入式系统的存储分配81<br/>4.8 实际使用的存储分配策略81<br/>4.8.1 UNIX a.out链接器的存储分配策略81<br/>4.8.2 ELF文件中的存储分配策略82<br/>4.8.3 Windows链接器的存储分配策略83<br/>4.9 练习84<br/>4.10 项目85<br/>第5章 符号管理87<br/>5.1 符号名绑定和解析87<br/>5.2 符号表的格式87<br/>5.2.1 模块表89<br/>5.2.2 全局符号表90<br/>5.2.3 符号解析91<br/>5.2.4 特殊符号91<br/>5.3 名称修改92<br/>5.3.1 简单的C和Fortran名称修改92<br/>5.3.2 C++类型编码:类型和范围93<br/>5.3.3 链接时类型检查95<br/>5.4 弱外部符号和其他类型的符号95<br/>5.5 维护调试信息96<br/>5.5.1 行号信息96<br/>5.5.2 符号和变量信息96<br/>5.5.3 实际的问题97<br/>5.6 练习98<br/>5.7 项目98<br/>第6章 库99<br/>6.1 库的目的99<br/>6.2 库的格式99<br/>6.2.1 使用操作系统99<br/>6.2.2 UNIX和Windows的归档文件100<br/>6.2.3 扩展到64位102<br/>6.2.4 Intel OMF库文件102<br/>6.3 创建库文件103<br/>6.4 搜索库文件104<br/>6.5 性能问题105<br/>6.6 弱外部符号105<br/>6.7 练习106<br/>6.8 项目106<br/>第7章 重定位109<br/>7.1 硬件和软件重定位109<br/>7.2 链接时重定位和加载时重定位110<br/>7.3 符号重定位和段重定位110<br/>7.4 基本的重定位技术111<br/>7.4.1 指令重定位112<br/>7.4.2 ECOFF段重定位114<br/>7.4.3 ELF重定位115<br/>7.4.4 OMF重定位116<br/>7.5 可重链接和可重定位的输出格式116<br/>7.6 重定位项的其他格式117<br/>7.6.1 以链表形式组织的引用117<br/>7.6.2 以位图形式组织的引用117<br/>7.6.3 特殊段117<br/>7.7 特殊情况的重定位118<br/>7.8 练习118<br/>7.9 项目119<br/>第8章 加载和覆盖121<br/>8.1 基本的加载过程121<br/>8.2 带重定位的基本加载过程122<br/>8.3 位置无关代码122<br/>8.3.1 TSS/360的位置无关代码123<br/>8.3.2 为每个例程建立的指针表123<br/>8.3.3 目录表123<br/>8.3.4 ELF的位置无关代码124<br/>8.3.5 位置无关代码的开销和收益126<br/>8.4 自举加载127<br/>8.5 基于树状结构的覆盖技术128<br/>8.5.1 定义覆盖技术129<br/>8.5.2 覆盖技术的实现131<br/>8.5.3 覆盖技术的其他细节132<br/>8.5.4 覆盖技术小结132<br/>8.6 练习133<br/>8.7 项目133<br/>第9章 共享库135<br/>9.1 绑定时间136<br/>9.2 实际使用的共享库136<br/>9.3 地址空间管理137<br/>9.4 共享库的结构138<br/>9.5 创建共享库138<br/>9.5.1 创建跳转表139<br/>9.5.2 创建共享库139<br/>9.5.3 创建占位符库139<br/>9.5.4 版本命名140<br/>9.6 链接时使用共享库141<br/>9.7 运行时使用共享库141<br/>9.8 malloc的处理以及其他共享库问题142<br/>9.9 练习144<br/>9.10 项目144<br/>第10章 动态链接和加载147<br/>10.1 ELF动态链接147<br/>10.2 ELF文件的内容147<br/>10.3 加载动态链接的程序150<br/>10.3.1 启动动态链接器150<br/>10.3.2 库的查找150<br/>10.3.3 共享库的初始化151<br/>10.4 基于PLT的延迟过程链接152<br/>10.5 动态链接的其他特性153<br/>10.5.1 静态初始化153<br/>10.5.2 库的版本153<br/>10.6 运行时的动态链接154<br/>10.7 Microsoft动态链接库154<br/>10.7.1 PE文件中的导入符号和导出符号155<br/>10.7.2 延迟绑定157<br/>10.7.3 DLL库和线程157<br/>10.8 OSF/1伪静态共享库158<br/>10.9 让共享库快一些158<br/>10.10 几种动态链接方法的比较159<br/>10.11 练习160<br/>10.12 项目161<br/>第11章 高级技术163<br/>11.1 C++的链接技术163<br/>11.1.1 试错式链接164<br/>11.1.2 消除重复代码165<br/>11.1.3 基于数据库的方法166<br/>11.2 增量链接和重链接166<br/>11.3 链接时的垃圾收集167<br/>11.4 链接时优化168<br/>11.5 链接时代码生成169<br/>11.5.1 链接时采样和插桩170<br/>11.5.2 链接时汇编170<br/>11.5.3 加载时代码生成170<br/>11.6 Java的链接模式171<br/>11.7 练习174<br/>11.8 项目174<br/>参考文献175 内容摘要 本书讲述构建程序的关键工具——链接器和加载器,内容包括链接和加载、体系结构、目标文件、存储分配、符号管理、库、重定位、加载和覆盖、共享库、动态链接和加载、动态链接的共享库,以及着眼于成熟的现代链接器所做的一些变化;并介绍一个持续的实践项目,即使用Perl语言开发一个可用的小链接器。本书适合高校计算机相关专业的学生、实习程序员、语言设计者和开发人员阅读参考。
— 没有更多了 —
本店暂时无法向该地区发货
以下为对购买帮助不大的评价