Loaders and Linkers
Introduction: In this chapter we will understand the concept of linking and loading. As discussed earlier the source program is converted to object program by assembler. The loader is a program which takes this object program, prepares it for execution, and loads this executable code of the source into memory for execution. Definition of Loader: Loader is utility program which takes object code as input prepares it for execution and loads the executable code into the memory. Thus loader is actually responsible for initiating the execution process. Functions of Loader: The loader is responsible for the activities such as allocation, linking, relocation and loading 1) It allocates the space for program in the memory, by calculating the size of the program. This activity is called allocation. 2) It resolves the symbolic references (code/data) between the object modules by assigning all the user subroutine and library subroutine addresses. This activity is called linking. 3) There are some address dependent locations in the program, such address constants must be adjusted according to allocated space, such activity done by loader is called relocation. 4) Finally it places all the machine instructions and data of corresponding programs and subroutines into the memory. Thus program now becomes ready for execution, this activity is called loading. Loader Schemes: Based on the various functionalities of loader, there are various types of loaders: 1) “compile and go” loader: in this type of loader, the instruction is read line by line, its machine code is obtained and it is directly put in the main memory at some known address. That means the assembler runs in one part of memory and the assembled machine instructions and data is
1 ﺻﻔﺤﺔ Dr.Shaimaa H.Shaker
directly put into their assigned memory locations. After completion of assembly process, assign starting address of the program to the location counter. The typical example