Àâòîðèçàöèÿ
Ïîèñê ïî óêàçàòåëÿì
Levine J.R. — Linkers and Loaders [compilers, ELF]
Îáñóäèòå êíèãó íà íàó÷íîì ôîðóìå
Íàøëè îïå÷àòêó? Âûäåëèòå åå ìûøêîé è íàæìèòå Ctrl+Enter
Íàçâàíèå: Linkers and Loaders [compilers, ELF]
Àâòîð: Levine J.R.
Àííîòàöèÿ: Written for any programmer who works with compiled code, Linkers and Loaders surveys today's hardware platforms with a tour of how code is linked and executed on IBM mainframes, Unix, and Windows. This handy title fills a valuable niche for anyone who wants to understand how programs are built and run on today's computing systems.
It's the cross-platform perspective that distinguishes this book. The author's wide-ranging perspective on IBM 370 mainframes, RISC platforms like the SUN SPARC and, of course, Microsoft Windows makes this book a commendable reference on the internals of linkers and program execution in each environment. There's also a digestible guide to the computer architecture (including registers, instruction formats, and memory addressing) for each platform. (Unix programmers will be pleased that the book has more information on non-Windows platforms than on Windows itself.) For C++ programmers, this text gives you a glimpse into the internals of such language features as macros, templates, and name mangling, and how linkers deal with them at build time.
The book closes with useful material on static libraries and dynamic linking, plus a short tour of Java and its class loader (which can resolve classes on the fly as they are downloaded over the Internet). Short exercises are provided for each chapter, making this a useful resource for both classroom and self-study on what is an often overlooked topic.
ßçûê:
Ðóáðèêà: Computer science /
Ñòàòóñ ïðåäìåòíîãî óêàçàòåëÿ: Ãîòîâ óêàçàòåëü ñ íîìåðàìè ñòðàíèö
ed2k: ed2k stats
Ãîä èçäàíèÿ: 2000
Êîëè÷åñòâî ñòðàíèö: 266
Äîáàâëåíà â êàòàëîã: 17.10.2010
Îïåðàöèè: Ïîëîæèòü íà ïîëêó |
Ñêîïèðîâàòü ññûëêó äëÿ ôîðóìà | Ñêîïèðîâàòü ID
Ïðåäìåòíûé óêàçàòåëü
EXTDEF records 87
External dummy (XD) relocation type 103 104—105
External Symbol IDs (ESIDs) 71 74
External symbols, weak 129 144—145
Fast Fourier transform (FFT) 44
Faults, page 34—35
File Mapping 188
Finalizers, in storage allocation 102—103
FINI pointers 209
Fixed-length instructions 24
FIXUPP records 87—89 159
Fixups in bitmaps 161
Fixups in DOS EXE files 56
Fixups in Microsoft Portable Executable (PE) format 82
Fixups, SECREL 162
Flags 60 63 143
Flags, COMDAT 101
Flags, storing 29
Flat model 43
Floating point 19
Formats, comparing 90
Formats, designing object 48—49
Formats, DOS COM 49
Formats, DOS EXE 56—58
Formats, ECOFF 139—140 142 157—158
Formats, ELF (Executable and Linking Format) 62—70
Formats, END 75
Formats, ESD 72
Formats, IBM 360 object 71—75
Formats, instruction 23—24
Formats, Microsoft Portable Executable (PE) 75—84
Formats, null object 49
Formats, OMF (Object Module Format) 84—89
Formats, relocatable a.out 58—62
Formats, RLD 74
Formats, tree-structured overlays 178
Formats, TXT 73
Formats, UNIX a.out files 50—55
FORTRAN programming language 3 98—99 183
Fortran programming language, name mangling in 124—126
Fortran programming language, subset compiler for 99
Frames, page 34
Free routines 199—200
Garbage collection, link-time 235—236
Global destructors 229
Global initializers 229
Global offset tables (GOTs) 172—176 207 213—215
Global static data, storing 25
Global symbol tables 120 122—123 146 149 222
Global symbols 13 117 152
Glue code 7 181—182
GNU linkers 12 101 108—109
GOTs see "Global offset tables (GOTs)"
GPREL (global pointer relocation) for MIPS 162
graphical user interfaces (GUIs) 4
GRPDEF records 87
Hacking, SETHI absolute address 156
Hardware relocation 3—4 150
HASH pointers 208
HASH type sections 65
Header information 47
Header information for a.out files 51—52
Header information for COFF 78—80
Header information for ELF files 64
Header information for Microsoft Portable Executable (PE) format 78—80
Header information, program 69
Header information, section 65
Heap storage management 143
I/O see "Input/output (I/O) routines"
IBM 360 object format 71—75
IBM 360 object format, end records in 71—73
IBM 360 object format, ESD records in 71—73
IBM 360 object format, RLD records in 73—74
IBM 360 object format, support for 75
IBM 360 object format, TXT records in 73
IBM 360/370/390 architecture 23 28
IBM 370, data and instruction references 28—30
IBM 370, instruction addressing 30
IBM 370, instruction formats 24
IBM MVS see "MVS"
IBM pseudo-registers, relocation in 162
IBM pseudo-registers, storage allocation in 103—105
Immediate operands 23
Imports in Microsoft Portable Executable (PE) format 81
Imports, delay-loaded 221
INCLUDE commands 180
Incremental linking and relinking 233—235
Indexed addressing 23
indirect calls 221
Indirect register 23
INIT pointers 209
Initialization routines 242
Initialization routines and bootstrapping 27
Initialization routines for dynamically linked libraries (DLLs) 212—213
Initialization routines in storage allocation 102—103
Initialization routines, code sets 10
Initialization routines, global 229
Initialization routines, library-specific 197
Initialization routines, standard startup 14
inline functions 230
Input files 6
Input segments 111
Input/output (I/O) routines 19 144 167
Instruction encoding 23—24
Instruction formats 19 23—24
Instruction references 28—34
Instruction relocation 154—157
Instruction relocation, SPARC 155—157
Instruction relocation, x86 155
Instruction sets, adding new instructions to 46
Instructions, fixed-length 24
Instructions, hardware return 25
Instructions, jump 22
Instructions, variable-length 24
Intel 386/486/Pentium see "Intel x86"
Intel OMF see "OMF (Object Module Format) files"
Intel TIS documents 85
Intel x86, code 8—10
Intel x86, data and instruction references 32—34
Intel x86, DOS on 37
Intel x86, hardware stack 25
Intel x86, instruction formats 24 33
Intel x86, instruction relocation in 155
Intel x86, program instructions 45—46
Intel x86, segmented 41—43
Intel x86, storage allocation in segmented 106—107
Interlibrary references 194
Intermediate languages 239—240
Interpretive systems 17
Intersegment jump 152 155
Java linking model 241—244
Java Virtual Machine 17
JMPREL pointers 208
Jump and link instruction 32
Jump instructions 22 169
Jump instructions, conditional 31 34
Jump instructions, intersegment 155
Jump instructions, relative 40
Jump instructions, unconditional 34
Jump tables, compatibility problems with 201
Jump tables, creating 192 193—194
Language libraries, growth of 187
Languages see "Command languages" "Individual
Large model code 42
Lazy binding 213 221—222 226
Lazy just-in-time resolution 244
Lazy procedure linkage, in DLLs 213—215
LD see "GNU linkers"
LD (label definition) type symbols 72
ld.so 209
ld.so.conf 211—212
LD_LIBRARY_PATH 211
LEDATA records 87—88 159
LIBDIC records 140—141
LIBHED records 140—141
LIBLOC records 140—141
LIBNAM records 140—141
Libraries 135—148 see "Interlibrary "Language "Shared
Libraries and weak external symbols 144—145
Libraries, creating 141—142
Libraries, finding 211—212
Libraries, formats 136—141
Libraries, multiple 143
Libraries, object code 8—9
Libraries, performance issues 144
Libraries, purpose of 135
Libraries, searching 142—143 144
Libraries, stub 195
Libraries, symbol directory 146
Libraries, system call 187
Libraries, versions of 196
Library cache files 211—212 216 223
Library code 2 26
Library routines, redefining 199
Library semantics 205—206
LIDATA records 87—88 159
Line number information 118 130
Link-time code generation 238—240
Link-time code generation, assembler 239—240
Link-time code generation, profiling and instrumentation 239
Link-time garbage collection 235—236
Link-time optimization 237—238 244
Link-time relocation 151
Link-time type checking 128—129
Linkable files 48—49
Linkage, lazy procedure in DLLs 213—215
Linker commands in tree-structured overlays 180
Linker commands, languages of 11—12
Linker control scripts, in storage allocation 107—108
Linkers see "Dynamically linked shared libraries"
Linkers and loaders 1—17
Linkers and loaders, combined 167
Linkers and loaders, function of 1
Linkers and loaders, separating 17
Linkers, dynamic 205—227
Linkers, example 12—17
Linkers, GNU 12
Linkers, growth of 3 17
Linkers, incremental 233—235
Linkers, modifying 19
Linkers, multitarget 46
Linkers, one-pass 8
Linkers, patching object code 6
Linkers, resolving references to symbols 6
Linkers, retargetable 46
Linkers, specifying addresses in 11
Linkers, supporting multiple code segments 11
Linkers, trial 230—231
Linkers, two-pass 6—8
Linkers, versus loading 5—10
Linkers, writing 21 24 39
Linking process, diagrammed 7
Linux 190 195 197—198 239
LITERAL, for Alpha 162
LNAMES records 85 86—87
Load-time code generation 240—241
Load-time relocations 151 212
Loadable files 48
Loadable segments 69 111
loaders 167—177
Loaders with relocation 168—169
Loaders, basic 167—168
Loaders, bootstrap 176—177
loaders, classes 242
Loaders, combined with linkers 167
Loaders, patching object code 6
Loaders, position-independent code in 169—176
Loaders, program 5
Local static data, referencing 173
Local static data, storing 25
Local variables, allocating 25
Lower-level page tables 36 171
Machine language 1—2
Machine registers, rules about 20
make program 11
Malloc hack, to shared libraries 199—200
Mapped files, writing to 38
Mapping see "File mapping"
Mapping, libraries 212
Mapping, pages 35 168
Mauchly, John 2
Medium model code 42
memory addresses 20—22
Memory addresses, byte order and alignment in 20—22 44
Memory addresses, listing for libraries 40
Memory addresses, rules about 20
Memory addresses, stack frame layout 26
Memory, byte-addressable 21
Memory, main 20
Memory, non-uniform 44
Memory, virtual 3 34—40
Microsoft Portable Executable (PE) format 75—84 90
Microsoft Portable Executable (PE) format and COFF 83
Microsoft Portable Executable (PE) format, directories in 80
Microsoft Portable Executable (PE) format, DLLs in 217—222 224—225
Microsoft Portable Executable (PE) format, example 77
Microsoft Portable Executable (PE) format, exports in 81 218—221
Microsoft Portable Executable (PE) format, features of 84
Microsoft Portable Executable (PE) format, fixups in 82
Microsoft Portable Executable (PE) format, headers for 78—80
Microsoft Portable Executable (PE) format, imports in 81 218—221
Microsoft Portable Executable (PE) format, linker libraries in 139—140
Microsoft Portable Executable (PE) format, resources in 82
Microsoft Portable Executable (PE) format, running 82—83
Microsoft Portable Executable (PE) format, section table for 80
Microsoft Portable Executable (PE) format, special sections in 81—82
Microsoft Portable Executable (PE) format, storage allocation in 113—114
Microsoft Portable Executable (PE) format, thread local storage in 82
Microsoft Windows see "MS Windows"
MINIX 239
MIPS processor 157—158 163
mmap() system call 198
MODEND records 87 89
Modification process 10
Module tables 120—121
Modules 135
Motorola 56000 series 43—44
MS Windows 4 12 37 43 90 169 see
MS Windows, DLLs in 217—222
MS Windows, NT 75
Multibyte data 21—22
Multiflow VLIW machine 238
Multiple directories, shared libraries in 196
Multiple libraries 143
Multiple regions, in overlays 183
Multiple segments, in storage allocation 96—98
Multiple symbol tables 118
MVS 136
MVS, archives in 141
MVS, relocation in 169
Name conflicts 201
Name mangling, in symbol management 124—129
Name resolution, in symbol management 117—118
NEEDED files 208 211
NMAGIC scheme 52 110—111
NOBITS type sections 64 66
Non-uniform memory 44
Nonglobal symbols 118
NT see "MS Windows"
Null object format, DOS COM files in 49
Ðåêëàìà