下载 >  课程资源 >  专业指导 > linkers and loaders 英文版
4

linkers and loaders 英文版

linkers and loaders 英文版。清晰版本。请下载。
2009-10-13 上传大小:3.52MB
想读
分享
收藏 举报
linkers and loaders(中文版&英文版

基础课程系列——<br>linkers and loaders,包括中文和英文两个版本。

立即下载
Linkers and Loaders.pdf

Linkers and Loaders 英文PDF 版本,带目录标签。可以添加注释

立即下载
Linkers&Loaders中文版pdf

编译链接的相关书籍,对于程序员高级进阶相当有用

立即下载
linker and loader 中文版+英文版

几乎从有计算机以来,链接器和加载器就是软件开发工具包中的一部分,因为他们是<br>允许使用模块(而不是一个单独的大文件)来构建程序的关键工具。<br>早在1947年,程序员们就开始使用原始的加载器:将程序的例程存储在多个不同的磁<br>带上,并将他们合并、重定位为一个程序。在上世纪60年代早期,这些加载器就已经发展<br>的相当完善了。由于那时内存很贵且容量有限,计算机的速度(以今天的标准)很慢,为了<br>创建复杂的内存覆盖策略(将大容量的程序加在到少量的内存中),以及重复编辑之前链接<br>过的文件(节省重新创建程序的时间),这些链接器都包含了很多复杂的特性。<br>上世纪70到80年代,链接技术几乎没有什么进展。链接器趋向于更加简单,虚拟内存<br>技术将应用程序和覆盖机制中的大多数存储管理工作都转移给了操作系统,越来越快的计算<br>机和越来越大的磁盘也使得重新链接一个程序或替换个别模块比仅仅链接改变过的地方更加<br>容易了。从上世纪90年代起,由于增加了诸如动态链接共享库和C++的诸多现代特性,链接<br>器又开始变得复杂起来。像IA64这样具有长指令字和编译时访存调度等特性的先进处理器<br>架构,也需要将一些新的特性加入到链接器中以确保在被链接的程序中可以满足代码的这些<br>复杂需求。<br><br>Table of Contents<br>Chapter 0: Front Matter ........................................................ 1<br>Dedication .............................................................................................. 1<br>Introduction ............................................................................................ 1<br>Who is this book for? ......................................................................... 2<br>Chapter summaries ............................................................................. 3<br>The project ......................................................................................... 4<br>Acknowledgements ............................................................................ 5<br>Contact us ........................................................................................... 6<br>Chapter 1: Linking and Loading ........................................... 7<br>What do linkers and loaders do? ............................................................ 7<br>Address binding: a historical perspective .............................................. 7<br>Linking vs. loading .............................................................................. 10<br>Two-pass linking .............................................................................. 12<br>Object code libraries ........................................................................ 15<br>Relocation and code modification .................................................... 17<br>Compiler Drivers .................................................................................. 18<br>Linker command languages ............................................................. 19<br>Linking: a true-life example ................................................................. 20<br>Exercises .............................................................................................. 25<br>Chapter 2: Architectural Issues ........................................... 27<br>Application Binary Interfaces .............................................................. 27<br>Memory Addresses .............................................................................. 28<br>Byte Order and Alignment ............................................................... 28<br>Address formation ................................................................................ 30<br>Instruction formats ............................................................................... 31<br>Procedure Calls and Addressability ..................................................... 32<br>Procedure calls ................................................................................. 33<br>2 Table of Contents<br>Data and instruction references ............................................................ 36<br>IBM 370 ........................................................................................... 37<br>SPARC ............................................................................................. 40<br>SPARC V8 ................................................................................... 40<br>SPARC V9 ................................................................................... 42<br>Intel x86 ........................................................................................... 43<br>Paging and Virtual Memory ................................................................. 45<br>The program address space .............................................................. 48<br>Mapped files ..................................................................................... 49<br>Shared libraries and programs ......................................................... 51<br>Position-independent code ............................................................... 51<br>Intel 386 Segmentation ........................................................................ 53<br>Embedded architectures ....................................................................... 55<br>Address space quirks ........................................................................ 56<br>Non-uniform memory ...................................................................... 56<br>Memory alignment ........................................................................... 57<br>Exercises .............................................................................................. 57<br>Chapter 3: Object Files ........................................................ 59<br>What goes into an object file? .............................................................. 59<br>Designing an object format .............................................................. 60<br>The null object format: MS-DOS .COM files ...................................... 61<br>Code sections: Unix a.out files ............................................................. 61<br>a.out headers .................................................................................... 64<br>Interactions with virtual memory ..................................................... 65<br>Relocation: MS-DOS EXE files ........................................................... 72<br>Symbols and relocation ........................................................................ 74<br>Relocatable a.out .................................................................................. 75<br>Relocation entries ............................................................................. 78<br>Symbols and strings ......................................................................... 80<br>a.out summary .................................................................................. 82<br>Unix ELF ............................................................................................. 82<br>Relocatable files ............................................................................... 85<br>ELF executable files ......................................................................... 92<br>ELF summary ................................................................................... 94<br>Table of Contents 3<br>IBM 360 object format ......................................................................... 94<br>ESD records ..................................................................................... 95<br>TXT records ..................................................................................... 97<br>RLD records ..................................................................................... 97<br>END records ..................................................................................... 98<br>Summary .......................................................................................... 98<br>Microsoft Portable Executable format ................................................. 99<br>PE special sections ......................................................................... 105<br>Running a PE executable ............................................................... 107<br>PE and COFF ................................................................................. 107<br>PE summary ................................................................................... 108<br>Intel/Microsoft OMF files .................................................................. 108<br>OMF records .................................................................................. 110<br>Details of an OMF file ................................................................... 111<br>Summary of OMF .......................................................................... 114<br>Comparison of object formats ............................................................ 114<br>Project ................................................................................................ 115<br>Exercises ............................................................................................ 117<br>Chapter 4: Storage allocation ............................................ 119<br>Segments and addresses ..................................................................... 119<br>Simple storage layout ......................................................................... 120<br>Multiple segment types ...................................................................... 121<br>Segment and page alignment ............................................................. 124<br>Common blocks and other special segments ..................................... 125<br>Common ......................................................................................... 125<br>C++ duplicate removal ................................................................... 127<br>Initializers and finalizers ................................................................ 130<br>IBM pseudo-registers ..................................................................... 131<br>Special tables ................................................................................. 134<br>X86 segmented storage allocation ................................................. 134<br>Linker control scripts ......................................................................... 136<br>Embedded system storage allocation ................................................. 138<br>Storage allocation in practice ............................................................. 138<br>Storage allocation in Unix a.out linkers ......................................... 139<br>4 Table of Contents<br>Storage allocation in ELF .............................................................. 141<br>Storage allocation in Windows linkers .......................................... 144<br>Exercises ............................................................................................ 146<br>Project ................................................................................................ 147<br>Chapter 5: Symbol management ....................................... 149<br>Binding and name resolution ............................................................. 149<br>Symbol table formats ......................................................................... 150<br>Module tables ................................................................................. 153<br>Global symbol table ....................................................................... 154<br>Symbol resolution .......................................................................... 157<br>Special symbols ............................................................................. 158<br>Name mangling .................................................................................. 158<br>Simple C and Fortran name mangling ........................................... 158<br>C++ type encoding: types and scopes ............................................ 160<br>Link-time type checking ................................................................ 163<br>Weak external and other kinds of symbols ........................................ 164<br>Maintaining debugging information .................................................. 164<br>Line number information ............................................................... 164<br>Symbol and variable information ................................................... 165<br>Practical issues ............................................................................... 166<br>Exercises ............................................................................................ 167<br>Project ................................................................................................ 167<br>Chapter 6: Libraries ........................................................... 169<br>Purpose of libraries ............................................................................ 169<br>Library formats .................................................................................. 169<br>Using the operating system ............................................................ 169<br>Unix and Windows Archive files ................................................... 170<br>Unix archives ............................................................................. 170<br>Extension to 64 bits ........................................................................ 174<br>Intel OMF libraries ........................................................................ 174<br>Creating libraries ................................................................................ 176<br>Searching libraries ............................................................................. 177<br>Table of Contents 5<br>Performance issues ............................................................................. 179<br>Weak external symbols ...................................................................... 179<br>Exercises ............................................................................................ 181<br>Project ................................................................................................ 181<br>Chapter 7: Relocation ......................................................... 183<br>Hardware and software relocation ..................................................... 183<br>Link time and load time relocation .................................................... 184<br>Symbol and segment relocation ......................................................... 185<br>Symbol lookups ............................................................................. 186<br>Basic relocation techniques ................................................................ 186<br>Instruction relocation ..................................................................... 188<br>X86 instruction relocation .......................................................... 189<br>SPARC instruction relocation .................................................... 189<br>ECOFF segment relocation ............................................................ 191<br>ELF relocation ............................................................................... 193<br>OMF relocation .............................................................................. 193<br>Relinkable and relocatable output formats ........................................ 194<br>Other relocation formats .................................................................... 194<br>Chained references ......................................................................... 195<br>Bit maps ......................................................................................... 195<br>Special segments ............................................................................ 196<br>Relocation special cases ..................................................................... 197<br>Exercises ............................................................................................ 197<br>Project ................................................................................................ 198<br>Chapter 8: Loading and overlays ...................................... 201<br>Basic loading ...................................................................................... 201<br>Basic loading, with relocation ............................................................ 202<br>Position-independent code ................................................................. 203<br>TSS/360 position independent code ............................................... 203<br>Per-routine pointer tables ............................................................... 206<br>Table of Contents ........................................................................... 207<br>ELF position independent code ..................................................... 208<br>6 Table of Contents<br>PIC costs and benefits .................................................................... 212<br>Bootstrap loading ............................................................................... 213<br>Tree structured overlays ..................................................................... 214<br>Defining overlays ........................................................................... 217<br>Implementation of overlays ........................................................... 220<br>Overlay fine points ......................................................................... 222<br>Data ............................................................................................ 222<br>Duplicated code ......................................................................... 222<br>Multiple regions ......................................................................... 223<br>Overlay summary ........................................................................... 223<br>Exercises ............................................................................................ 223<br>Project ................................................................................................ 224<br>Chapter 9: Shared libraries ............................................... 227<br>Binding time ...................................................................................... 230<br>Shared libraries in practice ................................................................. 231<br>Address space management ............................................................... 231<br>Structure of shared libraries ............................................................... 232<br>Creating shared libraries .................................................................... 233<br>Creating the jump table .................................................................. 234<br>Creating the shared library ............................................................. 235<br>Creating the stub library ................................................................. 235<br>Version naming .............................................................................. 237<br>Linking with shared libraries ............................................................. 238<br>Running with shared libraries ............................................................ 238<br>The malloc hack, and other shared library problems ......................... 240<br>Exercises ............................................................................................ 243<br>Project ................................................................................................ 244<br>Chapter 10: Dynamic Linking and Loading .................... 247<br>ELF dynamic linking ......................................................................... 248<br>Contents of an ELF file ...................................................................... 248<br>Loading a dynamically linked program ............................................. 253<br>Starting the dynamic linker ............................................................ 253<br>Table of Contents 7<br>Finding the libraries ....................................................................... 254<br>Shared library initialization ............................................................ 255<br>Lazy procedure linkage with the PLT ................................................ 256<br>Other peculiarities of dynamic linking .............................................. 258<br>Static initializations ........................................................................ 258<br>Library versions ............................................................................. 259<br>Dynamic loading at runtime ............................................................... 260<br>Microsoft Dynamic Link Libraries .................................................... 260<br>Imported and exported symbols in PE files ................................... 261<br>Lazy binding .................................................................................. 266<br>DLLs and threads ........................................................................... 267<br>OSF/1 pseudo-static shared libraries ................................................. 267<br>Making shared libraries fast ............................................................... 268<br>Comparison of dynamic linking approaches ...................................... 270<br>Exercises ............................................................................................ 271<br>Project ................................................................................................ 271<br>Chapter 11: Advanced techniques ..................................... 273<br>Techniques for C++ ........................................................................... 273<br>Trial linking .................................................................................... 274<br>Duplicate code elimination ............................................................ 276<br>Database approaches ...................................................................... 278<br>Incremental linking and relinking ...................................................... 278<br>Link time garbage collection ............................................................. 281<br>Link time optimization ....................................................................... 282<br>Link time code generation ................................................................. 284<br>Link-time profiling and instrumentation ........................................ 284<br>Link time assembler ....................................................................... 285<br>Load time code generation ............................................................. 285<br>The Java linking model ...................................................................... 287<br>Loading Java classes ...................................................................... 288<br>Exercises ............................................................................................ 290<br>Project ................................................................................................ 291<br>8 Table of Contents<br>Chapter 12: References ...................................................... 293<br>Perl books ....................................................................................... 295

立即下载
Linkers_and_Loaders Linkers & Loaders Linkers & Loaders 中文版

Linkers_and_Loaders Linkers & Loaders Linkers & Loaders 中文版

立即下载
Linkers and loaders 中文、英文完整版

Linkers and loaders 中文、英文完整版 国外经典名著。

立即下载
Linkers & Loaders 英文版原著

不错的系统学习文档,详细描述乐elf文件格式的原理 对想更深入了解软件的同学有很大的帮助

立即下载
Linkers & Loaders

Linkers & Loaders

立即下载
Linkers and Loaders(链接器和加载器 )

Linkers and Loaders

立即下载
连接器和加载器

LINKERS & LOADERS 中文版

立即下载
Linkers and Loaders

我们需要弄清楚LINKER的运行机理,将对移植工作很有帮助.

立即下载
linkers and loaders

linkers and loaders,深入理解连接器和加载器的经典书籍。

立即下载
加载器和连接器(Linkers and Loaders)(中文版+英文版

加载器和连接器(Linkers & Loaders)(中文版+英文版),pdf格式,清晰,有目录

立即下载
Linkers & Loaders write by John R. Levine

Linux 编译工具Linkers and loaders 是John R. Levine所著。

立即下载
linkers and loaders and Executable and Linkable Format中文

经典著作linkers and loaders中文版 还有Executable and Linkable Format 的中文版

立即下载
Linkers and loaders 英文完整版

Linkers 英文完整版 国外经典名著。

立即下载
Assemblers, Linkers & Loaders

讲解程序编译,连接,加载细节

立即下载
linkers and loaders(链接器和加载器)

只此一份,自己做的pdf,中英文双语版,外面绝对找不到PDF版(英文版)

立即下载
Linkers and Loaders 链接器和加载器

Whatever your programming language, whatever your platform, you probably tap into linker and loader functions all the time. But do you know how to use them to their greatest possible advantage? Only now, with the publication of Linkers & Loaders, is there an authoritative book devoted entirely to these deep-seated compile-time and run-time processes.

立即下载
链接器和加载器linkers and loaders

学生:由于链接过程看起来似乎是微不足道和显而易见的,编译器构建和操作系统 课程通常对链接和加载都缺乏重视。这对于以前讨论Fortan,Pascal,C,和不使 用内存映射或共享库的操作系统而言可能是对的,但是现在就不那么正确了。 C++,Java和其它的面向对象语言需要更加完善的链接环境。使用内存映射的可执 行程序,共享库,和动态链接影响了一个操作系统的很多部分,一个忽略链接问题 的操作系统设计者将承担巨大的风险。  实习程序员也需要知道链接器都做了什么,尤其是对现代语言。C++在链接器中放 置了不少独特的特性,而大型C++程序容易发生难以诊断的bug也是由于在链接时 发生了不可预料的事情(最常见的情况是静态构造函数没有按照程序员预计的顺序 执行 )。 当正确使用时,诸如共享库和动态链接此类的链接器特性将(给程序员的工作)带来很大的灵活性和强大支持。  语言设计者和开发人员应该在构建语言和编译器时了解链接器会做什么和能做什么。 由于可以由链接器处理某些细节,那些手工进行了30多年的编程任务今天在C++中 可以自动处理了(想一想在C语言中为了获取和C++中的模板相同的功能,或为了 保证在程序主体执行之前使成百个C源文件中的初始化例程可以执行,程序员不得 不做的那堆事情)。有了功能更强大的链接器的支持,未来的语言将更加自动化而 不仅限于程序范畴内的常规任务。由于链接是编译过程中将整个程序的代码放在一 起处理并可对程序作为一个整体施加影响的唯一阶段,因此链接器还将被加入更多 的全局程序优化功能。 (编写链接器的人员当然都需要本书。但是全球所有的链接器设计者大概只能坐满一个 房间,而且其中有半数因为审阅手稿已经拥有本书了。 )

立即下载
关闭
img

spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip

资源所需积分/C币 当前拥有积分 当前拥有C币
5 0 0
点击完成任务获取下载码
输入下载码
为了良好体验,不建议使用迅雷下载
img

linkers and loaders 英文版

会员到期时间: 剩余下载个数: 剩余C币: 剩余积分:0
为了良好体验,不建议使用迅雷下载
VIP下载
您今日下载次数已达上限(为了良好下载体验及使用,每位用户24小时之内最多可下载20个资源)

积分不足!

资源所需积分/C币 当前拥有积分
您可以选择
开通VIP
4000万
程序员的必选
600万
绿色安全资源
现在开通
立省522元
或者
购买C币兑换积分 C币抽奖
img

资源所需积分/C币 当前拥有积分 当前拥有C币
5 4 45
为了良好体验,不建议使用迅雷下载
确认下载
img

资源所需积分/C币 当前拥有积分 当前拥有C币
5 0 0
为了良好体验,不建议使用迅雷下载
VIP和C币套餐优惠
img

资源所需积分/C币 当前拥有积分 当前拥有C币
5 4 45
您的积分不足,将扣除 10 C币
为了良好体验,不建议使用迅雷下载
确认下载
下载
您还未下载过该资源
无法举报自己的资源

兑换成功

你当前的下载分为234开始下载资源
你还不是VIP会员
开通VIP会员权限,免积分下载
立即开通

你下载资源过于频繁,请输入验证码

您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:webmaster@csdn.net!

举报

若举报审核通过,可返还被扣除的积分

  • 举报人:
  • 被举报人:
  • *类型:
    • *投诉人姓名:
    • *投诉人联系方式:
    • *版权证明:
  • *详细原因: