
Porovnávacia tabuľka
Základ pre porovnanie | spojovacie | loader |
---|---|---|
základné | Generuje spustiteľný modul zdrojového programu. | Spúšťa spustiteľný modul do hlavnej pamäte. |
vstup | Zaberá ako vstup, kód objektu generovaný assemblerom. | Vyžaduje spustiteľný modul generovaný linkerom. |
funkcie | Kombinuje všetky objektové moduly zdrojového kódu a generuje spustiteľný modul. | Prideľuje adresy spustiteľnému modulu v hlavnej pamäti na vykonanie. |
Typ / Approach | Link editor, dynamický linker. | Absolútne zaťaženie, Relokovateľné zaťaženie a Dynamické zaťaženie. |
Definícia odkazu
Assembler generuje objektový kód zdrojového programu a odovzdá ho linkeru. Linker prevezme tento objektový kód a vygeneruje spustiteľný kód pre program a odovzdá ho nakladačovi.
Jazykové programy na vysokej úrovni obsahujú niektoré zabudované knižnice a hlavičkové súbory . Zdrojový program môže obsahovať niektoré funkcie knižnice, ktorých definícia je uložená v zabudovaných knižniciach. Linker spája tieto funkcie s vstavanými knižnicami. V prípade, že vstavané knižnice nie sú nájdené, oznámi to kompilátorovi a kompilátor potom vygeneruje chybu.
Niekedy sú veľké programy rozdelené na podprogramy, ktoré sa nazývajú moduly . Teraz, keď sú tieto moduly zostavené a zostavené, generujú sa objektové moduly zdrojového programu. Linker je zodpovedný za spojenie / prepojenie všetkých objektových modulov na vytvorenie jediného spustiteľného súboru zdrojového programu. Máme dva typy linkerov.
Editor odkazov : Je to linker, ktorý generuje premiestniteľný spustiteľný modul.
Dynamic Linker : Odstraňuje / odkladá spojenie niektorých externých modulov, kým sa nevygeneruje modul na načítanie / spustiteľný modul. Tu sa prepojenie vykonáva počas zaťaženia alebo času spustenia.
Definícia nakladača
Keďže program, ktorý sa má vykonať v súčasnosti, musí byť umiestnený v hlavnej pamäti počítača. Je povinnosťou načítača, programu v operačnom systéme, načítať spustiteľný súbor / modul programu, generovaného linkerom, do hlavnej pamäte na vykonanie. Prideľuje pamäťový priestor spustiteľnému modulu v hlavnej pamäti.
Existujú tri druhy nakladacích prístupov:
- Absolútne zaťaženie
- Relokovateľné zaťaženie
- Dynamické načítanie po spustení
Absolútne načítanie : Tento prístup zaťažuje spustiteľný súbor programu vždy na rovnakú pozíciu hlavnej pamäte . Má však určité nevýhody, ako je to, že programátor si musí byť vedomý stratégie priradenia modulov do hlavnej pamäte. V prípade, že program má byť upravený s určitým vložením a odstránením do programu, všetky adresy programu musia byť zmenené.
Relokovateľné zaťaženie: V tomto prístupe kompilátor alebo assembler nevytvára skutočnú adresu hlavnej pamäte . Vytvára relatívne adresy.
Dynamické načítanie : Pri tomto prístupe sa generuje absolútna adresa pre program, keď sa skutočne vykoná inštrukcia spustiteľného modulu. Je veľmi flexibilný, načítateľný modul / spustiteľný modul je možné načítať do ľubovoľnej oblasti hlavnej pamäte . Vykonávací program možno medzičasom prerušiť a môže byť vymenený na disk a späť do hlavnej pamäte tentoraz na inej adrese hlavnej pamäte.
Kľúčové rozdiely medzi linkerom a nakladačom
- Kľúčovým rozdielom medzi linkerom a načítačom je to, že linker generuje spustiteľný súbor programu, zatiaľ čo načítač spustiaci súbor, ktorý získal z linkera, načíta do hlavnej pamäte na vykonanie .
- Spojovací prvok prijíma objektový modul programu generovaného assemblerom. Nakladač však prijme spustiteľný modul generovaný linkerom.
- Spojovací článok spája celý objektový modul programu a generuje spustiteľné moduly, ktoré tiež spája funkciu knižnice v objektovom module s vstavanými knižnicami programovacieho jazyka na vysokej úrovni. Na druhej strane nakladač alokuje priestor do spustiteľného modulu v hlavnej pamäti.
- Linker môže byť klasifikovaný ako editor prepojenia a dynamický linker, zatiaľ čo nakladač môže byť klasifikovaný ako absolútny nakladač, premiestniteľný nakladač a dynamický run-time loader .
záver:
Linker prevezme objektové moduly programu z assembleru a spojí ich na vytvorenie spustiteľného modulu programu. Spustitelný modul je potom načítaný nakladačom do hlavnej pamäte na vykonanie.