Kurs programowania w C cz. 157

Nasza ocena:

5
Pobrań: 7
Wyświetleń: 735
Komentarze: 0
Notatek.pl

Pobierz ten dokument za darmo

Podgląd dokumentu
Kurs programowania w C  cz. 157 - strona 1

Fragment notatki:

Rozdział 25 Łączenie z innymi językami Programista, pisząc jakiś program ma problem z wyborem najbardziej odpowiedniego ję- zyka do utworzenia tego programu. Niekiedy zdarza się, że najlepiej byłoby pisać program, korzystając z różnych języków. Język C może być z łatwością łączony z innymi językami programowania, które podlegają kompilacji bezpośrednio do kodu maszynowego  (Asembler, Fortran  czy też  C++).  Ponadto dzięki specjalnym bibliotekom można go łączyć z językami bardzo wysokiego poziomu (takimi jak np.  Python  czy też  Ruby).  Ten rozdział ma za za- danie wytłumaczyć Ci, w jaki sposób można mieszać różne języki programowania w jednym programie. Język C i Asembler Informacje zawarte w tym rozdziale odnoszą się do komputerów z procesorem i386 i po- krewnych. Łączenie języka C i języka asemblera jest dość powszechnym zjawiskiem. Dzięki możliwo- ści połączenia obu tych języków programowania można było utworzyć bibliotekę dla języka C, która niskopoziomowo komunikuje się z jądrem systemu operacyjnego komputera. Ponieważ zarówno asembler jak i C są językami tłumaczonymi do poziomu kodu maszynowego, za ich łączenie odpowiada program zwany  linkerem  (popularny ld). Ponadto niektórzy producenci kompilatorów umożliwiają stosowanie tzw.  wstawek asemblerowych , które umieszcza się bezpośrednio w kodzie programu, napisanego w języku C. Kompilator, kompilując taki kod wstawi w miejsce tychże wstawek odpowiedni kod maszynowy, który jest efektem przetłuma- czenia kodu asemblera, zawartego w takiej wstawce. Opiszę tu oba sposoby łączenia obydwu języków. Łączenie na poziomie kodu maszynowego W naszym przykładzie założymy, że w pliku f1.S zawarty będzie kod, napisany w asem- blerze, a f2.c to kod z programem w języku C. Program w języku C będzie wykorzystywał jedną funkcję, napisaną w języku asemblera, która wyświetli prosty napis “Hello world”. Z powodu ograniczeń technicznych zakładamy, że program uruchomiony zostanie w środowisku POSIX  na platformie i386 i skompilowany kompilatorem gcc. Używaną składnią asemblera będzie AT&T (domyślna dla asemblera GNU) Oto plik f1.S: .text .globl _f1 177 ... zobacz całą notatkę



Komentarze użytkowników (0)

Zaloguj się, aby dodać komentarz