   #Start Next Contents English version

                 Informacja dla uzytkownikow systemow *BSD

   Korzystanie z uslug systemowych (przerwania 80h) w systemach klasy BSD
   rozni sie nieco od sposobu uzywanego w "zwyczajnych" Linuksach.
   Mianowicie:
    1. numer funkcji przekazujemy w EAX
    2. parametry wkladamy na stos od prawej do lewej (od konca)
    3. przerwanie wywolujemy, wykonujac CALL do instrukcji int 80h, za
       ktora jest RET

   Zeby wszystko bylo jasne, podam teraz przyklad:
   Linux:
        ; wypisywanie tekstu na ekranie:

                mov     eax, 4
                mov     ebx, 1
                mov     ecx, tekst
                mov     edx, tekst_dlugosc
                int     80h

   BSD:
        ; wypisywanie tekstu na ekranie:

                mov     eax, 4
                push    dword tekst_dlugosc
                push    dword tekst
                push    dword 1
                call    jadro
                add     esp, 12
                ...
                ...
        jadro:
                int     80h
                ret

   Oczywiscie, ta sama procedura "jadro" moze sluzyc wiecej niz jednemu
   wywolaniu przerwania systemowego.

   Jesli przy probie uruchomienia programu dostajecie komunikat
   "Operation not permitted" ("Operacja niedozwolona"), to dodajcie do
   kodu programu nowa sekcje:
section .note.openbsd.ident align=4
   dd 8
   dd 4
   dd 1
   db 'OpenBSD', 0
   dd 0

   Teraz program mozna kompilowac i linkowac normalnie, to znaczy
   linkerem LD (tak jest pokazane dalej w kursie). Podziekowania dla
   'Fr3m3n' za zgloszenie tego sposobu.

   Innym wyjsciem jest skorzystanie z kompilatora GCC, zamiast linkera
   LD: gcc -o program program.o. Funkcja glowna programu (miejsce
   rozpoczecia wykonywania sie programu) musi sie wtedy nazywac main, a
   nie _start! Wada tego podejscia jest to, ze do programu zostaja
   dolaczone pewne specjalne pliki, co powieksza jego rozmiar.

   Kolejna czesc kursu (klawisz dostepu 4)
   Spis tresci off-line (klawisz dostepu 1)
   Spis tresci on-line (klawisz dostepu 2)
   Ulatwienia dla niepelnosprawnych (klawisz dostepu 0)
