COFF

Common Object File Format (COFF) ist eine Spezifizierung eines Formats für den rechtskräftigen, den Gegenstand-Code und die geteilten auf Systemen von Unix verwendeten Bibliothekscomputerdateien. Es wurde in Unix System V eingeführt, hat das vorher verwendete A.out-Format ersetzt, und hat die Basis für verlängerte Spezifizierungen wie XCOFF und ECOFF gebildet, bevor es durch den ELFEN größtenteils ersetzt wird, der mit SVR4 vorgestellt ist.

COFF und seine Varianten setzen fort, auf einigen Unix ähnlichen Systemen auf Windows von Microsoft in EFI Umgebungen und in einigen eingebetteten Entwicklungssystemen verwendet zu werden.

Geschichte

Das ursprüngliche Gegenstand-Dateiformat von Unix a.out ist unfähig, geteilte Bibliotheken, Auslandsformat-Identifizierung oder ausführliche Adressverbindung entsprechend zu unterstützen. Als die Entwicklung von Unix ähnlichen Systemen sowohl innerhalb als auch außerhalb AT&T weitergegangen hat, sind verschiedene Lösungen dieser und anderen Probleme erschienen.

COFF wurde in AT&T UNIX System V für non-VAX 32-Bit-Plattformen solcher als 3B20 eingeführt. Verbesserungen über das vorhandene AT&T a.out Format haben willkürliche Abteilungen, ausführliche Verarbeiter-Behauptungen und ausführliche Adressverbindung eingeschlossen.

Jedoch wurde das COFF Design sowohl zu beschränkt und unvollständig angegeben: Es gab eine Grenze auf der maximalen Zahl von Abteilungen, eine Grenze auf der Länge von Abteilungsnamen, hat Quelldateien eingeschlossen, und die symbolische Beseitigen-Information war unfähig, echte Weltsprachen wie C, viel weniger neuere Sprachen wie C ++, oder neue Verarbeiter zu unterstützen. Alle echten Weltdurchführungen von COFF waren notwendigerweise Übertretungen des Standards infolgedessen. Das hat zu zahlreichen COFF Erweiterungen geführt. IBM hat das Format von XCOFF in AIX verwendet. DEZ haben SGI und andere ECOFF verwendet; und zahlreiche Häfen von SysV und Werkzeug-Ketten, die eingebettete Entwicklung ins Visier nehmen, hat jeder ihr eigenes, unvereinbares, Schwankungen geschaffen.

Mit der Ausgabe von SVR4, AT&T hat COFF durch den ELFEN ersetzt.

Während verlängerte Versionen von COFF fortsetzen, für einige UNIX-Plattformen ähnlich in erster Linie in eingebetteten Systemen verwendet zu werden, vielleicht ist der weit verbreitetste Gebrauch des COFF-Formats heute im Format von Portable Executable (PE) des Microsofts. Entwickelt für Windows NT verwendet das PE-Format (manchmal schriftlich als PE/COFF) einen COFF Kopfball für Gegenstand-Dateien, und als ein Bestandteil des PE Kopfballs für rechtskräftige Dateien.

Eigenschaften

Die Hauptverbesserung von COFF über a.out war die Einführung von vielfachen genannten Abteilungen in der Gegenstand-Datei. Verschiedene Gegenstand-Dateien konnten verschiedene Zahlen und Typen von Abteilungen haben.

Symbolische Beseitigen-Information

Die COFF symbolische Beseitigen-Information besteht aus symbolischen (Schnur) Namen für Programm-Funktionen und Variablen und Linienzahl-Information, die verwendet ist, um Unterbrechungspunkte zu setzen und Ausführung zu verfolgen.

Symbolische Namen werden im COFF Symbol-Tisch versorgt. Jeder Symbol-Tabellenzugang schließt einen Namen, Lagerungsklasse, Typ, Wert und Abteilungszahl ein. Kurzwörter (8 Charaktere oder weniger) werden direkt im Symbol-Tisch versorgt; längere Namen werden als ein Ausgleich in den Schnur-Tisch am Ende des COFF-Gegenstands versorgt.

Lagerungsklassen beschreiben die Typ-Entität, die das Symbol vertritt, und Außenvariablen (C_EXT), automatisch (Stapel) Variablen (C_AUTO), Register-Variablen (C_REG), Funktionen (C_FCN) und viele andere einschließen kann. Der Symbol-Typ beschreibt die Interpretation des Symbol-Entitätswerts, und schließt Werte für alle C Datentypen ein.

Wenn kompiliert, mit passenden Optionen wird eine COFF-Gegenstand-Datei Linienzahl-Information für jeden möglichen Unterbrechungspunkt in der Textabteilung der Gegenstand-Datei enthalten. Linienzahl-Information nimmt zwei Formen an: Im ersten, für jeden möglichen Unterbrechungspunkt im Code, registriert der Linienzahl-Tabellenzugang die Adresse und sein Zusammenbringen der Linienzahl. In der zweiten Form identifiziert der Zugang einen Symbol-Tabellenzugang, der den Anfang einer Funktion vertritt, einem Unterbrechungspunkt ermöglichend, mit dem Namen der Funktion gesetzt zu werden.

Bemerken Sie, dass COFF dazu nicht fähig war, Linienzahlen zu vertreten oder bei Symbolen für die eingeschlossene Quelle als mit Kopfball-Dateien die Fehler zu beseitigen, die den COFF das Beseitigen bei ohne unvereinbare Erweiterungen eigentlich nutzloser Information machen.

Virtuelle Verhältnisadresse

Wenn eine COFF Datei erzeugt wird, ist es nicht gewöhnlich bekannt, wo im Gedächtnis es geladen wird. Die virtuelle Adresse, wo das erste Byte der Datei geladen wird, wird Bildgrundadresse genannt. Der Rest der Datei wird in einem aneinander grenzenden Block, aber in verschiedenen Abteilungen nicht notwendigerweise geladen.

Virtuelle Verhältnisadressen (RVAs) sollen mit virtuellen Standardadressen nicht verwirrt sein. Eine virtuelle Verhältnisadresse ist die virtuelle Adresse eines Gegenstands von der Datei, sobald es ins Gedächtnis minus die Grundadresse des Dateiimages geladen wird. Wenn die Datei wörtlich von der Platte bis Gedächtnis kartografisch dargestellt werden sollte, würde der RVA dasselbe als dieser des Ausgleichs in die Datei sein, aber das ist wirklich ziemlich ungewöhnlich.

Bemerken Sie, dass der RVA-Begriff nur mit Gegenständen in der Bilddatei gebraucht wird. Einmal geladen ins Gedächtnis wird die Bildgrundadresse hinzugefügt, und gewöhnliche VAs werden verwendet.

Siehe auch

  • Der Vergleich der rechtskräftigen Datei formatiert

Zeichen

Links


Nan'yō, Yamagata / Fritten Bolkestein
Impressum & Datenschutz