logo

Proces zostavovania v c

Čo je to kompilácia?

Kompilácia je proces konverzie zdrojového kódu na objektový kód. Robí sa to pomocou kompilátora. Kompilátor skontroluje, či zdrojový kód neobsahuje syntaktické alebo štrukturálne chyby, a ak je zdrojový kód bezchybný, potom vygeneruje objektový kód.

Proces zostavovania v c

Proces kompilácie c konvertuje zdrojový kód prijatý ako vstup do objektového kódu alebo strojového kódu. Proces kompilácie možno rozdeliť do štyroch krokov, t. j. predbežné spracovanie, kompilácia, zostavenie a prepojenie.

Preprocesor vezme zdrojový kód ako vstup a odstráni všetky komentáre zo zdrojového kódu. Preprocesor vezme direktívu preprocesora a interpretuje ju. Napríklad, ak , Smernica je dostupná v programe, potom preprocesor interpretuje smernicu a nahradí ju obsahom 'stdio.h' súbor.

typy počítačov

Nasledujú fázy, ktorými náš program prechádza, kým sa pretransformuje do spustiteľnej podoby:

    Predprocesor Kompilátor Assembler Linker
Proces zostavovania v c

Predprocesor

Zdrojový kód je kód, ktorý je napísaný v textovom editore a súbor zdrojového kódu má príponu „.c“. Tento zdrojový kód sa najskôr odovzdá preprocesoru a potom tento kód rozšíri. Po rozšírení kódu sa rozšírený kód odovzdá kompilátoru.

Kompilátor

Kód, ktorý je rozšírený preprocesorom, je odovzdaný kompilátoru. Kompilátor prevedie tento kód na kód zostavy. Alebo môžeme povedať, že kompilátor C konvertuje predspracovaný kód na kód zostavy.

Assembler

Kód zostavy sa prevedie na objektový kód pomocou assembleru. Názov objektového súboru vygenerovaného assemblerom je rovnaký ako názov zdrojového súboru. Prípona objektového súboru v systéme DOS je „.obj“ a v systéme UNIX je prípona „o“. Ak je názov zdrojového súboru 'ahoj.c', potom názov súboru objektu bude 'hello.obj'.

Linker

Všetky programy napísané v C používajú predovšetkým funkcie knižnice. Tieto knižničné funkcie sú predkompilované a objektový kód týchto knižničných súborov je uložený s príponou '.lib' (alebo '.a'). Hlavnou úlohou linkera je kombinovať objektový kód súborov knižnice s objektovým kódom nášho programu. Niekedy nastane situácia, keď sa náš program odvoláva na funkcie definované v iných súboroch; potom v tomto zohráva veľmi dôležitú úlohu linker. Prepája objektový kód týchto súborov s naším programom. Preto sme dospeli k záveru, že úlohou linkera je prepojiť objektový kód nášho programu s objektovým kódom súborov knižnice a iných súborov. Výstupom linkera je spustiteľný súbor. Názov spustiteľného súboru je rovnaký ako názov zdrojového súboru, ale líši sa len v ich príponách. V systéme DOS je prípona spustiteľného súboru '.exe' av systéme UNIX môže byť spustiteľný súbor pomenovaný ako 'a.out'. Napríklad, ak v programe používame funkciu printf(), linker pridá svoj pridružený kód do výstupného súboru.

Poďme to pochopiť na príklade.

ahoj.c

 #include int main() { printf('Hello javaTpoint'); return 0; } 

Teraz vytvoríme vývojový diagram vyššie uvedeného programu:

Proces zostavovania v c

Vo vyššie uvedenom vývojovom diagrame sa vykonávajú nasledujúce kroky na spustenie programu:

  • Po prvé, vstupný súbor, tj. ahoj.c, sa odovzdá preprocesoru a preprocesor skonvertuje zdrojový kód na rozšírený zdrojový kód. Rozšírenie rozšíreného zdrojového kódu by bolo Ahoj ja.
  • Rozšírený zdrojový kód sa odovzdá kompilátoru a kompilátor prevedie tento rozšírený zdrojový kód na kód zostavy. Rozšírenie kódu montáže by bolo ahoj.s.
  • Tento kód zostavy sa potom odošle do assembleru, ktorý prevedie kód zostavy na objektový kód.
  • Po vytvorení objektového kódu linker vytvorí spustiteľný súbor. Zavádzač potom načíta spustiteľný súbor na vykonanie.