Transcript Document
Ştefan Stăncescu PART I SISTEM UTILITIES LECTURE 4.1 LINK_LOAD 1 LINK-LOAD Absolute loader Loading of an object file (asembled with a assembler, compiler, etc.) => object file prepare and transfer in machine memory Absolute loader when loading is direct, without preparing at address specified in the object file format specified address (Simple systems, embedded processors) 2 LINK-LOAD Absolute loader 3 LINK-LOAD Relocatability Relocatability ability, for an object file loaded (with minimum modifications) at any address in memory of being able to work well. 1. For linking more obj. file in a single compact obj. file 2. For dynamic memory management 4 LINK-LOAD Relocatable object file format Address modifier M separate section Name No. crt. byte Modifier 1 Field semantic Field character „M” 2-3 Modification size 4-35 Relative location addresses in object file format “C” section, which are needed to be modified before link-load for relocatability 5 LINK-LOAD Relocatable object file format Relocation mask in section “C” Name No. crt. byte Field semantic Content 16 Object field code, character „C” 17-18 Current stripe starting address 19-20 Current stripe length 21-36 Code length / 8 = relocation mask length 37-164 Assembled object code (128 bytes as example), 165-576 Repeat n(=3 times as example) the 17164 zone 6 LINK-LOAD References References symbolic names in link process, names transmitted between object files - modules defined in one single object module used in many (any other object modules). EXTERN references symbolic names defined in another object module than the object module in which they are used. PUBLIC references symbolic names defined in current object module but able to be used in another object modules 7 LINK-LOAD Relocatable object file format PUBLIC references Name No. crt. byte Field semantic PUBLIC 1 PUBLIC field code, character „D”, 2-9 PUBLIC symbolic name identifier 10-13 Relative address PUBLIC symbol name, in the originating object code 14-73 Repeat 2-13 positions, for any other PUBLIC name symbols (5 as example) 8 LINK-LOAD Relocatable object file format EXTERN references Name No. crt. byte Field semantic EXTERN 1 EXTERN field code, character „E”, 2-9 EXTERN symbolic name identifier 10-44 Repeat 2-9 positions, for any other EXTERN name symbols (5 as example) 9 LINK-LOAD Linking Link-editing or, shortly, linking, is the modify address process for a relocatable object file, in view to join another object files, with the aim to constitute a compact object file. The corresponding system utility is the link-editor (linker). Following a link, the obtained linked object file is relocatable and may be linked further to another object files 10 LINK-LOAD Linking Address expression calculus in source files issue: for arithmetic expressions with relative addresses the calculus must gives an relative address result that must not depend of real address location of the linked object file, loaded in real memory at an address determined at the load time. Not all arithmetic expressions are equally permitted A correct expression must have only invariants at loading time, (no + or * or /, only -) as in, LUNGIME_ZONA EQU END_ZONA – START_ZONA 11 LINK-LOAD Static link Static link generate a new relocatable object file, compact and remanent, to be loaded in any place in memory, established by the operating system before each run. Static link efficiency – when stable, repetitive general conditions and products in the process development at each run In such case, link time is only used at first run, others are for free. 12 LINK-LOAD Dynamic link Dynamic link postpone link work until the last moment before each run, only needed object files are chosen and linked taking in account about program run state determined by current processing values obtained from current input data. The memory space is optimized, spares, not needed object files are not linked, nor loaded in the memory 13 LINK-LOAD Linker and loader 14 LINK-LOAD Link-loader 15 LINK-LOAD LINK EDITOR - EXEMPLE LINK- EDITOR DATA STRUCTURES ESTAB - table with module names associated with address locations in the final object file, EXTERN and PUBLIC references names, for PUBLIC references, their addresses in the final linked module. PROGADR - address register for linked program module load address; CSADR - current module first code address register with the reference address for all relative addresses of the current object module in linking process. CSLTH - current module length register. EXECADR - execution address register with starting program address. 16 LINK-LOAD EDITOR DE LEGATURI - EXEMPLU - PAS I 17 LINK-LOAD EDITOR DE LEGATURI - EXEMPLU - PAS II 18