proces kompilacji w c

co to jest kompilacja?

kompilacja jest procesem konwersji kodu źródłowego na kod obiektowy. Odbywa się to za pomocą kompilatora. Kompilator sprawdza kod źródłowy pod kątem błędów składniowych lub strukturalnych, a jeśli kod źródłowy jest wolny od błędów, generuje kod obiektowy.

proces kompilacji w c

proces kompilacji w c konwertuje kod źródłowy pobrany jako wejściowy do kodu obiektowego lub kodu maszynowego. Proces kompilacji można podzielić na cztery etapy, tj., Pre-processing, Compiling, Assembling, and Linking.

preprocesor pobiera kod źródłowy jako wejście i usuwa wszystkie komentarze z kodu źródłowego. Preprocesor pobiera dyrektywę preprocesora i interpretuje ją. Na przykład, jeśli <stdio.H>, dyrektywa jest dostępna w programie, następnie preprocesor interpretuje dyrektywę i zastępuje tę dyrektywę zawartością ” stdio.akta H.

poniżej przedstawiono etapy, przez które przechodzi nasz program, zanim zostanie przekształcony w formę wykonywalną:

  • preprocesor
  • kompilator
  • Assembler
  • Linker

proces kompilacji w języku c

preprocesor

kod źródłowy to kod napisany w edytorze tekstu i Kod źródłowy plik kodu ma rozszerzenie “.c”. Ten kod źródłowy jest najpierw przekazywany do preprocesora, a następnie preprocesor rozszerza ten kod. Po rozwinięciu kodu Rozszerzony kod jest przekazywany do kompilatora.

kompilator

kod rozwijany przez preprocesor jest przekazywany do kompilatora. Kompilator konwertuje ten kod na kod asemblacji. Albo możemy powiedzieć, że kompilator C konwertuje wstępnie przetworzony kod na kod asemblacji.

asembler

kod asemblera jest konwertowany na kod obiektowy za pomocą asemblera. Nazwa pliku obiektowego wygenerowanego przez asembler jest taka sama jak w pliku źródłowym. Rozszerzeniem pliku Obiektowego w DOS jest ‘.obj, ‘a w Uniksie rozszerzeniem jest ‘o’. Jeśli nazwa pliku źródłowego to ” hello.c’, wtedy nazwa pliku obiektowego będzie ‘ hello.obj”.

Linker

głównie Wszystkie programy napisane w C używają funkcji bibliotecznych. Te funkcje biblioteczne są wstępnie skompilowane, a kod obiektowy tych plików bibliotecznych jest przechowywany z ‘.lib “(lub”.a’) rozszerzenie. Głównym działaniem linkera jest łączenie kodu obiektowego plików bibliotecznych z kodem obiektowym naszego programu. Czasami pojawia się sytuacja, gdy nasz program odwołuje się do funkcji zdefiniowanych w innych plikach; wtedy linker odgrywa w tym bardzo ważną rolę. Łączy kod obiektowy tych plików z naszym programem. Dlatego wnioskujemy, że zadaniem linkera jest połączenie kodu obiektowego naszego programu z kodem obiektowym plików bibliotecznych i innych plików. Wyjściem linkera jest plik wykonywalny. Nazwa pliku wykonywalnego jest taka sama jak plik źródłowy, ale różni się tylko rozszerzeniami. W DOS rozszerzenie pliku wykonywalnego to ‘.exe’, a w Uniksie plik wykonywalny może być nazwany jako ‘a. out’. Na przykład, jeśli używamy funkcji printf () w programie, to łącznik dodaje swój powiązany kod do pliku wyjściowego.

zrozummy to na przykładzie.

Witam.c

teraz utworzymy schemat powyższego programu:

proces kompilacji w c

w powyższym schemacie, następujące kroki są podejmowane w celu wykonania programu:

  • po pierwsze, plik wejściowy, czyli hello.c, jest przekazywany do preprocesora, a preprocesor konwertuje kod źródłowy na Rozszerzony kod źródłowy. Rozszerzeniem rozszerzonego kodu źródłowego byłoby hello.i.
  • Rozszerzony kod źródłowy jest przekazywany do kompilatora, a kompilator konwertuje ten rozszerzony kod źródłowy na kod zespołu. Rozszerzenie kodu assembly byłoby hello.s.
  • ten kod złożenia jest następnie wysyłany do asemblera, który konwertuje kod złożenia na kod obiektowy.
  • po utworzeniu kodu obiektowego łącznik tworzy plik wykonywalny. Program ładujący załaduje następnie plik wykonywalny do wykonania.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.