- A modern program comprises several procedures or subroutines together with the main program module.
- Moreover, The translator, in such cases as a compiler, will translate them all independently into distinct object modules usually stored in the secondary memory.
- Execution of the program in such cases is performed by linking together these independent object modules and loading them into the main memory.
- Linking of various object modules is done by the linker.
- Special system program called linking loader gathers various object modules, links them together to produce single executable binary program and loads them into the memory.
- This category of loaders leads to a popular class of loaders called direct-linking loaders.
- Moreover, The loaders used in these situations are usually called linking loaders, which link the necessary library functions and symbolic references.
- Essentially, linking loaders accept and link together a set of object programs and a single file to load them into the core.
- Similarly, Linking loaders additionally perform relocation and overcome disadvantages of other loading schemes.
Relocating Linking Loaders
- Relocating linking loader combines together the relocating capabilities of relocating loaders and the advanced linking features of linking loaders and presents a more robust loading scheme.
- This necessarily eliminates the need to use two separate programs for linking and loading respectively.
- Moreover, These loaders can perform relocation and be linking both.
- These types of loaders are especially useful in a dynamic runtime environment, wherein the link and load origins are highly dependent upon the runtime situations.
- Similarly, These loaders can work efficiently with support from the operating system and utilize the memory and other resources efficiently.
- Productions of an operator grammar do not contain two or more consecutive nonterminal symbols in any RHS alternative. Thus, nonterminal symbols occurring in an RHS string separated by one or more terminal symbols.
<exp> → <exp> + <term> | <term>
<term> → <term> * <factor> | <factor>
<factor> → <factor> ↑ <primary> | <primary>
<primary> → <<id> | <constant> | (<exp>)
<id> → <letter> | <id> <letter> | <id> <digit>
<const> → *+|-] <digit> | <const> <digit>
<letter> → a|b|c|…|z
<digit> → 0|1|2|3|4|5|6|7|8|9