!TITLE Technical Aspects of Loading !KEY The following are a series of sections devoted to various aspects of loading and how the loader copes with them. It is appreciated that several of the topics covered are fairly technical and the average reader may have neither the background nor the interest to persevere with all of them. Before proceeding, however it might be sensible to define what exactly is meant by 'the loader' in this documentation. A loader is a piece of system software whose job it is to set up a suitable machine environment for executable files. There are several different types of loader, however the 2900 EMAS program loader, which is part of the subsystem, is an example of the class of loader known as a linking loader. As well as loading executable files, a linking loader handles external linkage between executable modules at load time. This eliminates the need for a separate link-edit step or for module collection or consolidation. !PAGE ! ! ! ! !256K) pd file and its CODE area straddles the segment boundary. In these circumstances, the loader will create a temporary file called T#CODEnn where nn is a unique suffix chosen by the system, and copy the CODE and SST areas into it. This is expensive and should be avoided if at all possible by suitable file organisation. Note that pd files can be checked for object code crossing segment boundaries by the command ANALYSE(pdfilename,M) which will print a warning. !PAGE 2. Code cannot be connected at its preferred site if the object file is a member of a pd file, even if the preferred site is free. This means that bound files should NEVER be collected into a pd file for running. Note that any T#CODE or T#GLA files created during loading will be destroyed when the file that gave rise to them is unloaded. !> !> ! !<'Dynamic' Single Word References. !KEY As the loader does not have any information as to the nature of single word references, then it cannot make them truly dynamic in the sense that code and data references can be made dynamic. The solution adopted has been to make them 'pseudo dynamic' by planting an impossible address (-1) in the single word location in the gla. The user is warned of the dire consequences of calling the reference but the program is allowed to run. However, if a dynamic single word reference is not called directly but happens to be in a module which is loaded to satisfy a different reference, then the single word reference will be fixed up correctly. A program is never allowed to run with an unresolved single word reference. !> ! ! !>