Vitajte na [www.pocitac.win] Pripojiť k domovskej stránke Obľúbené stránky
1. Predspracovanie:
- Toto je voliteľná fáza, ktorá nastáva pred skutočným kompilovaním.
- Preprocesor spracováva makrá, podmienené príkazy a obsahuje smernice na prípravu zdrojového kódu na ďalšiu kompiláciu.
2. Lexikálna analýza (skenovanie):
- Zdrojový kód je rozdelený na jednotlivé tokeny, ako sú kľúčové slová, identifikátory, operátory a interpunkcia.
- Lexikálny analyzátor, tiež známy ako skener, identifikuje tieto tokeny a konvertuje ich na sekvenciu zmysluplných symbolov.
3. Analýza syntaxe (analýza):
- Analyzátor syntaxe alebo syntaktický analyzátor kontroluje, či postupnosť tokenov dodržiava gramatické pravidlá programovacieho alebo značkovacieho jazyka.
- Vytvára hierarchickú štruktúru reprezentujúcu syntax programu a kontroluje syntaktické chyby.
4. Sémantická analýza:
- Kompilátor vykonáva sémantickú analýzu, aby sa uistil, že program je sémanticky správny.
- Kontroluje kompatibilitu dátových typov, deklarácie premenných a referencie, ako aj logické chyby alebo nezrovnalosti v kóde.
5. Generovanie medzistupňového zastúpenia (IR):
- Kompilátor preloží zdrojový kód do strednej reprezentácie (IR), ako sú abstraktné syntaktické stromy (AST) alebo trojadresový kód.
- IR je jazykovo nezávislá reprezentácia štruktúry a sémantiky programu.
6. Optimalizácia:
- Na IR sa aplikujú optimalizácie kompilátora, aby sa zlepšila účinnosť generovaného kódu.
- Optimalizácie môžu zahŕňať neustále šírenie, odvíjanie slučky, prideľovanie registrov a elimináciu mŕtveho kódu.
7. Generovanie kódu:
- Optimalizované IR sa prevedie do jazyka symbolických inštrukcií, čo je symbolické znázornenie strojových inštrukcií na nízkej úrovni.
- Kód zostavy je špecifický pre architektúru cieľového procesora.
8. Prepojenie:
- Pri väčších programoch spája fáza spájania objektových súborov generovaných z rôznych zdrojových súborov a externých knižníc.
- Prepojenie rieši odkazy na symboly medzi modulmi a zabezpečuje, že sú splnené všetky závislosti.
9. Montáž:
- Assembler konvertuje kód jazyka symbolických inštrukcií na strojový kód, čo sú binárne inštrukcie, ktoré môže počítač vykonávať priamo.
10. Realizácia:
- Konečný strojový kód je načítaný do pamäte počítača a vykonávaný procesorom.
Proces kompilácie je séria transformácií, ktoré umožňujú, aby bol vysokoúrovňový jazykový program napísaný ľuďmi preložený do podoby, ktorú môže počítač priamo pochopiť. Každý krok v tomto procese približuje kód k rodnému jazyku stroja a zároveň zabezpečuje správnosť a efektivitu.