A.out

a.out – format plików wykonywalnych

a.out (z ang. assembler output) to format plików wykonywalnych, który jest szczególnie używany w systemach operacyjnych typu Unix oraz ich pochodnych. Służy on jako format dla plików wykonywalnych, obiektowych oraz bibliotek dzielonych.

Format a.out zadebiutował w pierwszej wersji systemu Unix, która działała na komputerach PDP-7.

Wypieranie przez ELF

Format a.out został zastąpiony przez format COFF w wersji System V Release 3, a następnie w System V Release 4 przeszedł na format ELF.

W systemach GNU/Linux format a.out był domyślnym formatem plików wykonywalnych oraz bibliotek w wersji jądra 1.2 oraz dla biblioteki libc5. Od tego momentu, standardem stał się format ELF. System FreeBSD przeszedł z a.out na ELF w wersji 3.0, a NetBSD w wersji 1.5.

Odmiany

Istnieje kilka wariantów formatu a.out: OMAGIC, NMAGIC, ZMAGIC oraz QMAGIC:

  • OMAGIC – charakteryzuje się ciągłymi segmentami po nagłówku, bez separacji pomiędzy tekstem a danymi.
  • NMAGIC – jest podobny do OMAGIC, ale segment danych ładowany jest na następnej stronie po zakończeniu segmentu tekstu; segment tekstu jest tylko do odczytu.
  • ZMAGIC – wprowadza wsparcie dla stronicowania na żądanie.
  • QMAGIC – umożliwia złączenie nagłówka z pierwszą stroną segmentu tekstu, co zwykle oszczędza jedną stronę pamięci. Pliki wykonywalne QMAGIC są zazwyczaj ładowane jedną stronę przed końcem wirtualnej przestrzeni adresowej, co pozwala na wykrycie dereferencji wskaźnika zerowego poprzez błąd segmentacji.

a.out jako nazwa pliku

a.out to tradycyjna nazwa pliku generowanego przez kompilatory (a dokładniej: linkery). Obecnie, nazwa pliku („a.out”) nie ma związku z jego formatem (np. ELF). Można zmienić domyślną nazwę, stosując odpowiedni przełącznik dla danego kompilatora. Na przykład, w kompilatorach gcc/g++ używa się przełącznika -o :

gcc -Wall hello.cpp -o hello

(co skutkuje utworzeniem pliku wykonywalnego o nazwie „hello”).

Przypisy

Linki zewnętrzne

Pamięć wirtualna (pol.)