• Kurs języka C - część 1

20.02.2005 13:51, autor artykułu: Grzegorz "Y-Greg" Tarka
odsłon: 14619, powiększ obrazki, wersja do wydruku,

Język C jest językiem szeroko stosowanym zarówno na Amidze, jak i na innych platformach sprzętowych, gdyż nie jest związany z jakimś konkretnym systemem. Tym artykułem chciałbym rozpocząć cykl traktujący właśnie o ANSI C i postaram się opisać ten język tak, aby zrozumiały go osoby początkujące.

HISTORIA

Język C został opracowany przez Dennisa Ritchie`go z Bell Laboratories w 1972 r. dla systemów operacyjnych Unix, działających na mikrokomputerach DEC PDP-11. Pierwowzoren dla języka C był język B opracowany w 1970 r. przez Kena Thomsona. Z kolei język B był inną wersją języka BCPL dla pierwszej wersji instalacji systemu Unix. BPCL zdefiniowano w 1969 r. przez Martina Richardsa z University of Mathematical Laboratories w Cambridge.

JAK TO WYGLĄDA?

Kurs C Język C jest językiem niskiego poziomu, więc jest w miarę prosty do nauczenia, ale stanowi on w połączeniu z funkcjami systemu Amigi potężne narzędzie. Ktoś może powiedzieć że jest AMOS, ale on nie korzysta z systemu Amigi i przez to np: nie zmusimy go do działania na karcie graficznej, czy choćby otwierać systemowe okienka. Prawda, są dodatki do Amosa, które przybliżają go do amigowego systemu, ale to nie to samo co C, który z amigowym systemem pracuje idealnie. Ponadto kompilatory C na Amigę potrafią generować kod dla procesorów PowerPC, czego w tej chwili nie potrafi np. osławiony język E, dzięki czemu sami możemy tworzyć oprogramowanie dla tych, nie ma co mówić, szybkich procesorów. Możemy także pokusić się o pisanie programów na MorphOSa, a w przyszłości na AmigaOS 4. Oczywiście amigowe kompilatory świetnie generują też kod dla procesorów 68k. Dzięki poznaniu tego języka łatwo pisać programy, które potem można przenosić między platformami sprzętowymi, co też nie jest bez znaczenia.

KOMPILATORY

Kurs C Na Amigę powstało dużo kompilatorów C (jak i C++), niektóre są komercyjne, niektóre darmowe. Do najbardziej popularnych należą: Sas C, Storm C, GCC oraz VBCC. Dwa ostanie są darmowe i można je ściągnąć z Aminetu. Wszystkie potrafią generować kod dla procesorów PPC. StormC to dzieło firmy Haage & Partner, jest to kompilator drogi, ale przez niektórych ceniony. Posiada zintegrowany edytor i na pewno jest łatwiejszy w instalacji niż np: gcc, czy vbcc. Ja korzystam z VBCC i właśnie na nim się skupimy. VBCC to darmowy kompilator, potrafi generować kod dla procesorów 68k, PowerPC (PowerUp, WarpUP, MorphOS), ale można np: wygenerować na nim program, który uruchomimy na procesorach x86 czy alpha. Program można pobrać z Aminetu lub ze strony domowej autora.

INSTALACJA

Instalację rozpoczniemy od rozpakowania archiwum z vbcc gdzieś na dysk. Po rozpakowaniu mamy katalog vbcc, a w nim katalogi:

  • bin - zawierający pliki wykonywalne,
  • config - zawierający pliki konfiguracyjne,
  • doc - zawierający dokumentację,
  • targets - zawierający pliki include i lib dla danych maszyn (68k, ppc, warpos, morphos) (na razie nie musimy wiedzieć co to są pliki include i lib).

Do prawidłowej pracy vbcc potrzebuje jeszcze paru przypisań, czyli assignów:
assign >NIL: vbcc: (miejsce gdzie rozpakowane jest archiwum z vbcc)
assign >NIL: C: vbcc:bin add

assign >NIL: vbccm68k: vbcc:targets/m68k-amigaos
assign >NIL: vincludem68k: vbccm68k:include
assign >NIL: vincludem68k: (miejsce gdzie masz systemowe pliki include dla 68k) ADD
;assign >NIL: ixinclude: (miejsce do potrzebnych plików ixemul)
assign >NIL: vlibm68k: vbccm68k:lib

assign >NIL: vbccppc: vbcc:targets/ppc-powerup
assign >NIL: vincludeppc: vbccppc:include
assign >NIL: vlibppc: vbccppc:lib
assign >NIL: vincludeppc: (miejsce gdzie masz systemowe pliki include dla PowerUp) ADD

assign >NIL: vbccwos: vbcc:targets/ppc-warpos
assign >NIL: vincludewos: vbccwos:include
assign >NIL: vlibwos: vbccwos:lib
assign >NIL: vincludewos: (miejsce gdzie masz systemowe pliki include dla WarpOS) ADD

assign >NIL: vbccmos: vbcc:targets/ppc-morphos
assign >NIL: vincludemos: vbccmos:include
assign >NIL: vlibmos: vbccmos:lib
assign >NIL: vincludemos: (miejsce gdzie masz systemowe pliki include dla MorphOS-a) ADD


Ponadto przy większych projektach trzeba zwiększyć stos komendą stack. Wróćmy jednak do przypisań. Dla vbcc: przypisujemy miejsce w które rozpakowaliśmy archiwum, np. Dh1:Programowanie/vbcc/

Systemowe include`y są dostępne np. na AmigaDeveloperCD, na razie nie będą nam potrzebne. Kiedy będziemy zaczynać programować z wykorzystaniem funkcji AmigaOSu, powrócimy do include`ów. Jeśli chodzi o przypisanie ixinclude, to także możemy sobie je na razie darować. W katalogu vbcc znajdziemy przykładowe skrypty które po lekkich modyfikacjach możemy umieścić w user-startup.

Po dodaniu przypisań do user-startup możemy już zacząć używać vbcc.

ZACZYNAMY

Co nam będzie potrzebne? Po pierwsze jakiś edytor tekstowy. Ja polecam GoldEd-a. Jest to edytor komercyjny, ale naprawdę dobry. W katalogu config mamy pliki konfiguracyjne dla różnych maszyn. Będziemy ich używać do kompilacji naszych programów. Jak to zrobić? Użyjemy opcji '+',np:

vc +m68k_warpos ...


vbcc będzie uruchomiony na maszynie z WarpOS-em (ppc), ale będzie kompilował program dla AmigaOS (68k).

vc +warpos_warpos ...


vbcc będzie uruchomiony na maszynie z WarpOS-em (ppc) i będzie kompilował program dla AmigaOS/WarpOS (ppc).

vc +m68k_ppc ...


vbcc będzie uruchomiony na maszynie z PowerUp (ppc) i będzie kompilował program dla AmigaOS (68k).

TYLE NA DZISIAJ?

Jeżeli wszytko gra, to można skompilować następujący program.

#include <stdio.h>
main()
{
   printf("Pierwszy program napisany w C, pod VBCC\n");
   return(0);
}


Jak to zrobić? Piszemy nasz program w jakimś edytorze tekstowym. Zapisujemy go na dysk pod nazwą hello.c. Teraz kompilujemy nasz program komendą:

vc hello.c


Plik wykonywalny będzię utworzony w katalogu z plikiem hello.c

vc hello.c -o hello


Plik wykonywalny będzie utworzony w katalogu z plikiem hello.c, ale będzie miał nazwę hello.

vc +warpos_m68k hello.c -o hello


Plik wykonywalny będzie utworzony w katalogu z plikiem hello.c, będzie mial nazwę hello i będzie programem dla WarpOS.

Kompilator vbcc posiada wiele opcji które opiszę w dalszej części kursu, na razie wystarczą nam te podstawowe. Pełny spis komend vbcc znajduje się w dokumentacji (katalog doc/vbbc.html).

Przykładowo:
Jeżeli nasz program zapiszemy do DH1:C to:

vc +m68k_warpos dh1:c/hello.c -o dh1:hello


skompiluje nasz program do dh1:c pod nazwą hello. Program użyje pliku konfiguracyjnego warpos_warpos, czyli vbcc uruchomiony zostanie na maszynie z zainstalowanym WarpOSem (ppc), a plik wykonywalny zostanie wygenerowany dla AmigaOS 68k.

Proponuje skompilować nasz program. Nie musimy wiedzieć jeszcze co on robi i jak działa. Tym zajmiemy się w nastepnym odcinku.

Kurs C Aby ułatwić wam kompilowanie programów załączam przycisk do DOpusa, który robi to bardzo wygodnie. W listerze Opusa zaznaczamy interesujacy nas plik źródłowy i naciskamy "Compile", badź naciskamy F10. Plik wykonywalny zostanie wygenerowany do tego samego katalogu co plik źródłowy i będzie nosił nazwę "program". Vbcc w tym przycisku korzysta z pliku konfiguracyjnego m68k_m68k, czyli generuje kod dla AmigaOSu 68k na tej samej maszynie. PPC jest zbędny. W przycisku użyta jest opcja -v (verbose), której zadaniem jest wypisanie więcej informacji o przebiegu kompilacji...

Oczywiście nic nie stoi na przeszkodzie, aby odpowiednio zmienić przycisk tak, aby generował kod dla WarpOS-a, PowerUP, czy MorphOS-a.

I to by było na tyle, zapraszam do następnego odcinka... W razie problemów proszę o kontakt.

 głosów: 3   
komentarzy: 6ostatni: 05.03.2007 13:29
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem