Rozdział 25
Łączenie z
Programista, pisząc jakiś program ma problem z wyborom 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 |xidlegają kompilacji bezpośrednio do kodu maszynowego (Asembler, Fortran czy też C+4-). Ponadto dzięki specjalnym bibliotekom można go łączyć z językami liardzo wysokiego poziomu (takimi jak np. Python czy też Huby). Ten rozdział ma ził zadanie wytłumaczyć Ci, w jaki sposób można mieszać różne języki prognunowiuiia w jednym programie.
Informacje zawarte w tym rozdziale odnoszą się do komputerów z procesorem 1386 i pokrewnych.
Łą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 niskopozknnowo komunikuje się z jądrem systemu operacyjnego komputera. Ponieważ zarówno asembler jak i C są językami tłumaczonymi do |>oziomu kodu maszynowego, za ich łączenie odpowiada program zwany linkereni (popularny Id). 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 kcal wstawi w miejsce tychże wstawek <>d|xiwiedni kod maszynowy, który jest efektem przetłumaczenia kodu asemblera, zawartego w takiej wstawce. Opiszę tu oba sposoby łączenia obydwu języków.
W naszym przykładzie założymy, że w pliku fl.S zawarty liędzie kod, napisany w asemblerze, a f2.c to kod z programem w języku C. Program w języku C liędzie wykorzystywał jedną funkcję, napisaną w języku asemblera, która wyświetli prosty napis “Hello worki”. 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 liędzie AT&T (domyślna dla asemblera GNU) Oto plik fl.S:
.globl _fl
177