3. Tworzenie programów w języku C

Dokument: pdf (157.9 KB)
  • 6 stron
Opublikowany 2017-07-23 02:07:03

29.03.2017, 00*36Systemy Operacyjne - Lekcja 5 - Segment 1 Strona 1 z 6http://oldwww.imio.pw.edu.pl/wwwvlsi/cad/teaching/soe/materialy/LEKCJA5/SEGMENT1/MAIN.HTM 1. Tworzenie programów w języku C Język C jest językiem programowania ogólnego przeznaczenia jest szczególnie związany z system Unix (przez "system Unix" rozumieny tu różne warianty systemu Unix, takich jak np. SUN Solaris czy HP-UX). Wynika to z faktu, że język C został opracowany specjalnie dla potrzeb tego systemu. System operacyjny Unix, kompilatory C i niemal wszystkie programy usługowe zostały napisane w C (lub C++). W starszych wersjach systemu Unix (np. w SunOS 4.x) kompilator języka C standardowo wchodził w skład programów użytkowych dostarczanych przez producenta i nosił nazwę cc. Powodem tego była budowa systemu, która w przypadku zmiany konfiguracji jądra wymagała jego rekomplilacji. Obecnie, nowoczesne wersje systemów Unix nie wymagają takich operacji i w związku z tym kompilator języka C nie jest standardowym elementem systemu. Również w przypadku systemu Linux występują bardzo silne związki z językiem C/C++. Stąd też przy omawianiu środowiska programistycznego Linux-a ograniczymy się do kompilatora tego języka. Szczegółowe informacje o kompilatorach innych języków można znaleźć w dokumentacji. Wszystkie przykładowe programy zamieszczone w podręczniku zostały napisane w języku C. Pliki z kodami źródłowymi programów zostały zebrane w katalogu PRZYKLADY (z uwzględnieniem podziału na lekcje i segmenty). Zamieszczono tam również odpowiednie pliki dla programu make ułatwiające kompilację programów. (1.1) Etapy komplilacji programu w języku C Proces tworzenia binarnego kodu wykonywalnego, zwany zwyczajowo kompilacją, składa się z kilku odrębnych etapów. Są to: prekompilacja - stworzenie ostatecznego tekstu źródłowego programu poprzez włączenie plików wskazanych dyrektywą preprocesora #include, wykonanie podstawie makrodefinicji #define i opcjonalne usunięcie komentarzy, kompilacja właściwa - wyszukanie tokenów (słowa kluczowe, operatory) i przekształcenie ich na wewnętrzną reprezentację; reprezentacja wewnętrzna jest następnie przekształcana na kod asemblera, optymalizacja kodu asemblera - opcjonalna modyfikacja kodu asemblera w celu zwiększenia jego efektywności (np.: zmiana sposobu obliczania adresów względnych, eliminacja nieużywanych fragmentów kodu, optymalizacja przydziału rejestrów), asemblacja - przetworzenie kodu asemblera w relokowalny kod w języku maszynowym, który umieszczany jest w pliku obiektowym (ang. object file); etap ten wykonywany jest przez program as (systemowy) lub gas (z pakietu GNU), konsolidacja - konsolidator (ang. link editor), dokonuje szeregu operacji w celu stworzenia pliku binarnego z kodem wykonywalnym w tym : przeszukanie standardowego zestaw bibliotek oraz bibliotek wskazanych w linii wywołania w celu włączenia do programu kodu funkcji niezdefiniowanych w modułach stworzonych przez użytkownika, 29.03.2017, 00*36Systemy Operacyjne - Lekcja 5 - Segment 1 Strona 2 z 6http://oldwww.imio.pw.edu.pl/wwwvlsi/cad/teaching/soe/materialy/LEKCJA5/SEGMENT1/MAIN.HTM przypisanie kodu maszynowego do ustalonych adresów, utworzenie wykonywalnego pliku binarnego w formacie ELF (ang. Executable and Linking Format) Konsolidacja wykonywana jest przez program ld. (1.2) Kompilator języka C Wywołanie kompilatora Polecenie wywołania kompilatora ma następującą postać : gcc [opcje] plik [plik]... Do najczęściej używanych opcji kompilatora gcc należą: -o nazwa - powoduje utworzenie programu wynikowego o nazwie podanej przez użytkownika, -E - powoduje zatrzymanie po etapie prekompilacji, wyniki są wypisywane na ekran, -S - powoduje zatrzymanie po etapie generowania kodu asemblera, wyniki są umieszczane w pliku z rozszerzeniem .s, -c - powoduje zatrzymanie po etapie asemblacji, wyniki są umieszczane w pliku z rozszerzeniem .o, -Dmakro - użycie opcji jest równoznaczne z umieszczeniem linii #define makro naśpoczątku pliku zawierającego tekst źródłowy, -Umakro - użycie opcji jest równoznaczne z umieszczeniem linii #undef makro naśpoczątku pliku zawierającego tekst źródłowy, -O - powoduje wykonanie optymalizacji, -Opoziom - powoduje wykonanie bardziej złożonej optymalizacji, o zakresie wskazanym przez parametr poziom, -g - powoduje włączanie do pliku wynikowego informacji (numery linii, typ i rozmiar identyfikatorów, tablica symboli) umożliwiających śledzenie wykonywania programu wynikowego, -Ikatalog - powoduje włączenie katalogu katalog do zestawu katalogów, w których należy poszukiwać plików nagłówkowych, -Lkatalog - powoduje włączenie katalogu katalog do ścieżki poszukiwań bibliotek; w linii wywołania opcja ta musi poprzedzać opcję -l (wyjaśnienie poniżej), -lident - polecenie dla konsolidatora powodujące, że biblioteka libident.a jest przeszukiwana w celu znalezienia kodu funkcji zewnętrznych, -pipe - powoduje, że kompilator gcc zamiast tworzyć pliki pośrednie do komunikacji pomiędzy programami wykonującymi kolejne etapy kompilacji w...

Tagi:

Komentarze do: 3. Tworzenie programów w języku C • 0