počítačový program, ktorý prevádza zdrojový kód do objektového kódu From Wikipedia, the free encyclopedia
Kompilátor alebo kompilujúci program (anglicky: compiler) je počítačový program, ktorý dokáže preložiť zdrojový kód napísaný v jednom programovacom jazyku (tzv. zdrojovom jazyku) do iného programovacieho jazyka (tzv. cieľového jazyka). Kompilátory sú špecifickým typom prekladačov (príkladom iného typu prekladaču je napr. interpreter). Pojem kompilátor sa najčastejšie používa pre prekladače, ktorých zdrojovým jazykom je vysokoúrovňový jazyk a cieľovým jazykom je nízkoúrovňový jazyk (napr. jazyk symbolických inštrukcií, objektový kód alebo strojový kód) za účelom vytvorenia spustiteľného programu.[1]
Existuje však mnoho rôznych typov kompilátorov. Pokiaľ zkompilovaný program môže bežať na počítači, ktorého CPU alebo operačný systém sú odlišné od počítača, na ktorom beží kompilátor, hovoríme o krížovom kompilátore. Program, ktorý prekladá z jazyka nižšej úrovne do jazyka vyššej úrovne, sa nazýva dekompilátor. Program, ktorý prekladá medzi dvoma vysokoúrovňovými jazykmi sa zvyčajne nazýva transpliter.
Kompilátor musí vykonávať dve základné činnosti: analýzu zdrojového kódu a vytváranie ekvivalentného cieľového kódu (syntéza). Cieľom analýzy je získať informácie o stavbe programu, ktoré sa počas syntézy použijú na zostavenie cieľového kódu. Analýza sa najčastejšie vykonáva na troch úrovniach: lexikálna analýza, syntaktická analýza a sémantická analýza. Výstupom týchto procesov môže byť tzv. intermediárny kód. Analytická časť kompilátoru sa niekedy nazýva aj prednou časťou (angl.: front end). Samotné generovanie cieľového kódu môže byť doplnené (prípadne predchádzané) optimalizačnými operáciami.
Program preložený do strojového kódu len málokedy obsahuje všetky procedúry a funkcie potrebné na jeho spustenie. Mnohé funkcie a procedúry sa nachádzajú vo vopred preložených súboroch, ktoré nazývame knižnice. Aby bolo možné program spustiť, je potrebné prepojiť relatívne odkazy na procedúry a funkcie so skutočnými adresami. Túto činnosť vykonáva spájací program, ktorý tiež nazývame linker.
Alternatívnym spôsobom vykonávania kódu je interpretácia zdrojového kódu v čase behu programu. Program, ktorý tento preklad zabezpečuje, sa nazýva interpreter. Existujú aj kombinované riešenia, kedy sa najprv prekladá do pomocného kódu, ktorý sa interpretuje v čase behu (napr. Java).
Bez ohľadu na konkrétne fázy prekladu kompilátoru, je bežné sa stretnúť s rozdelením týchto fáz na tri časti: predná časť (angl. front end), stredná časť (angl. middle end) a zadná časť (angl. back end).
Motiváciou za rozdelením prekladu kompilátora do vyššie uvedených troch častí bola možnosť znovupoužitia jednotlivých častí pre rôzne zdrojové jazyky (je možné použiť rovnakú strednú a zadnú časť) a rôzne cieľové procesory (je možné použiť rovnakú prednú a strednú časť).
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.