A.out
a.out ist das ursprüngliche Dateiformat für ausführbare Dateien und Objektdateien von Unix-ähnlichen Betriebssystemen. In der Praxis wurde dieses Format weitgehend durch seine Nachfolger Common_Object_File_Format_(COFF) und Executable_and_Linking_Format_(ELF) verdrängt, obwohl es auch heute noch unterstützt wird.
Viele unixoide C-Compiler oder Assembler erzeugen auch eine Ausgabedatei mit dem voreingestellten Dateinamen a.out, sofern der Benutzer nicht ausdrücklich einen anderen Namen wählt.
Ein Programm im a.out-Format besteht aus mehreren Teilen:
* Der Kopfdatenbereich enthält Metainformationen über die Datei, wie z.B. die Größe der folgenden Segmente.
* Text: Das eigentliche Programm als Maschinencode (nicht zu verwechseln mit dem Quelltext des Programms)
* Data: Initialisierte Daten, wie Konstanten und Variablen, die beim Programmstart bereits einen definierten Anfangswert haben.
* BSS: Uninitialisierte Daten. Das Akronym BSS steht für Block Started by Symbol und ist auf den gleichnamigen Pseudo-Operator zurückzuführen, mit dem in der Assemblersprache des Großrechners IBM 7090 Speicherplatz für uninitialisierte Daten reserviert wurde (Lit.: Bach, S. 25). Während die Text- und Data-Segmente aus der Datei in den Speicher kopiert werden, ist das BSS-Segment nur als Größenangabe in den Kopfdaten der Datei vorhanden. Der Programmlader legt das Segment in der gewünschten Größe an und initialisiert es meist byteweise mit dem Wert 0.
* Weitere optionale Informationen wie Symboltabelle und allenfalls Relokationstabelle.
Das a.out-Format ist betriebssystemspezifisch, d.h. verschiedene Unix-Versionen verwenden leicht unterschiedliche Dateiformate. Mit der Weiterentwicklung von UNIX wurden die Mängel von a.out immer offensichtlicher, unterstützt das Format doch weder Debugging-Informationen (die deshalb in der Symboltabelle untergebracht werden mussten) noch dynamische_Bibliotheken. Mit der Einführung von UNIX_System_V Release 3 wurde deshalb mit dem Common_Object_File_Format ein zusätzliches, erweitertes Dateiformat für Objectdateien eingeführt.
Literatur
Brian W. Kernighan, M. D. McIlroy: UNIX Programmer's Manual, Seventh Edition, Bell_Telephone_Laboratories,_Incorporated, Murray Hill, NJ 1979
* Maurice J. Bach: The Design of the UNIX Operating System, Prentice-Hall International, Englewood Cliffs, NJ 1986, ISBN 0-13-201757-1

