Previous topic |
Next topic |
Contents |
Contact z/OS |
Library |
PDF
Assigning addresses z/OS MVS Program Management: User's Guide and Reference SA23-1393-00 |
|
Each object or load module processed by the binder has an origin that was assigned during assembly, compilation, or a previous execution of the binder or linkage editor. When several modules, each with an independently assigned origin, are to be processed by the binder, the sequence of the addresses is unpredictable. Two input modules can even have the same origin. Each input module can be made up of one or more sections. To produce an executable program object or load module, the binder assigns relative virtual storage addresses to each section. The addresses in a program module are consecutive, but are all relative to base zero. When a program is executed, the loading program prepares the module by loading it at a specific virtual storage location and then increasing each address in the program by this base address. Each address constant is also readjusted. This final readjustment is known as relocation. The preceding discussion describes linker actions in processing
load modules. When program objects are processed, the output may contain
more than one relocatable, loadable segment. In each segment, addresses
are relocated during binding relative to a zero base address for each
segment; when the segments are loaded, each address constant is relocated
relative the the loading address of the segment containing the referenced
address. Figure 1 illustrates how multiple
segments are created.
Figure 1. Multiple
segments
|
Copyright IBM Corporation 1990, 2014
|