This book examines today's hardware platforms and gives a tour of how code is linked and executed on IBM mainframes, Unix, and Windows.
It is written for any programmer who works with compiled code. For anyone who wishes to comprehend how programs are created and executed on modern computing platforms, this useful book meets a valuable need.
This book stands out due to its cross-platform perspective. This book is a notable reference on the internals of linkers and program execution in each environment because of the author's broad perspective on IBM 370 mainframes, RISC platforms like the SUN SPARC, and, of course, Microsoft Windows.
A concise overview of each platform's computer architecture, including registers, instruction formats, and memory addressing, is also included. The book contains more material on non-Windows platforms than on Windows itself, which will please Unix programmers.)
This paper provides C++ programmers with an inside look at the internals of language features like macros, templates, and name mangling as well as how linkers handle them during build time.
The book concludes with helpful information on dynamic linking and static libraries, as well as a quick tour of Java and its class loader (which can resolve classes on the fly as they are downloaded over the Internet). Each chapter includes a few brief activities, making this a helpful tool for both classroom and independent study on this frequently ignored subject. Dragan, Richard
Topics covered: History of linkers and loaders, application binary interfaces (ABIs), computer architecture basics, big- and little-endian memory addresses, register and instruction formats for IBM 370, SPARC and Intel x86, paging and virtual memory, position independent code (PIC), Intel x86 segmentation, embedded architectures, object files for DOS COM and EXE files, Unix a.out, Unix ELF, IBM 360 object format, Microsoft Portable Executable (PE) format, Intel Object Module Format (OMF), storage allocation, linking details for C++, symbol management, name mangling, weak and strong references, debugging information, library formats, COFF and ELF formats, relocation, loading and overlays, bootstrap loading, shared libraries, dynamic linking for Unix ELF and Microsoft Windows DLLs, advanced linking techniques for C++, and linking in Java.