Gemeenschappelijk Object Bestandsformaat
| koffie | ||
|---|---|---|
| ontwikkelaar | ||
| AT&T Corporation | ||
| Algemene informatie | ||
| bestandsextensie |
ninguna, .o | |
| formaattype: | Binair , uitvoerbaar , object , gedeelde bibliotheken | |
| uitgebreid tot | XCOFF , ECOFF , Draagbaar uitvoerbaar bestand | |
| open formaat | ? | |
De COFF -indeling , ook wel de Common Object File Format genoemd , is een indelingsspecificatie voor uitvoerbare bestanden, objectcode en gedeelde bibliotheken die op Unix-systemen wordt gebruikt. Het werd geïntroduceerd in Unix System V , ter vervanging van het eerder gebruikte a.out -formaat , en vormde de basis voor uitgebreide specificaties zoals XCOFF en ECOFF , voordat het grotendeels werd vervangen door ELF, geïntroduceerd door SVR4 . COFF en zijn varianten worden nog steeds gebruikt op sommige Unix-achtige systemen , in Microsoft Windows , in EFI -omgevingen en in sommige embedded ontwikkelingssystemen.
Geschiedenis
Het originele Unix -objectbestandsformaat - a.out - was niet in staat om gedeelde bibliotheken, identificatie van vreemde formaten of expliciete adresbinding adequaat te ondersteunen. Naarmate de ontwikkeling van Unix-achtige systemen zowel binnen als buiten AT&T voortduurde, ontstonden er verschillende oplossingen voor deze en andere problemen.
COFF is geïntroduceerd in AT&T's UNIX System V voor niet-VAX 32-bit platforms, zoals de 3B20. COFF omvatte verbeteringen ten opzichte van het a.out -formaat , inclusief willekeurige (geheugen) secties, expliciete processorverklaringen en expliciete adresbinding.
Het ontwerp van COFF was echter beperkt en onvolledig: er was een limiet op het maximale aantal secties, een limiet op de lengte van sectienamen inclusief bronbestanden, en symbolische foutopsporingsinformatie was niet in staat om talen zoals C , laat alleen nieuwere talen zoals C++ of ondersteuning van nieuwe processors. Als gevolg hiervan waren in de echte wereld alle COFF-implementaties noodzakelijkerwijs standaardovertredingen. Dit leidde tot tal van COFF-uitbreidingen. IBM gebruikte het XCOFF -formaat in zijn AIX -besturingssysteem . DEC , SGI en anderen gebruikten ECOFF . Talrijke SysV-poorten en ontwikkelingstools voor embedded systemen gebruikten hun eigen variaties, vaak incompatibel met elkaar.
Met de release van SVR4 vervangt AT&T COFF door ELF .
Hoewel uitgebreide versies van COFF nog steeds worden gebruikt op sommige Unix-achtige platforms , voornamelijk ingebedde systemen, is misschien wel het meest wijdverbreide gebruik van het COFF-formaat tegenwoordig in het Portable Executable -formaat (PE) van Microsoft. Het PE-formaat (soms geschreven als PE/COFF) is ontwikkeld voor Windows NT en gebruikt een COFF-header voor objectbestanden en als onderdeel van de PE-header voor uitvoerbare bestanden. [ 1 ]
Functies
De belangrijkste verbetering die COFF over a.out bracht, was de introductie van meerdere benoemde secties in het objectbestand . Verschillende objectbestanden kunnen verschillende aantallen en typen secties hebben.
Symbolische foutopsporingsinformatie
Symbolische foutopsporingsinformatie in COFF-bestanden bestaat uit (reeksen van) symbolische namen voor programmafuncties en variabelen, evenals regelnummerinformatie, die worden gebruikt om breekpunten in te stellen en uitvoering te traceren.
Symbolische namen worden opgeslagen in de COFF-symbooltabel. Elk item in de tabel bevat een naam, opslagklasse, type, waarde en sectienummer. Korte namen (8 tekens of minder) worden direct in de symbooltabel opgeslagen en lange namen worden als offset opgeslagen in de tekenreekstabel aan het einde van het COFF-object.
Relatief virtueel adres
Wanneer een COFF-bestand wordt gegenereerd, is het niet met zekerheid bekend waar het in het geheugen zal worden geladen. Het virtuele adres waarnaar het eerste octet van het bestand wordt geladen, wordt het basisadres van de afbeelding genoemd. De rest van het bestand wordt niet noodzakelijkerwijs in aaneengesloten blokken geladen, maar in verschillende secties.
Zie ook
- Addendum: Vergelijking van uitvoerbare bestandsformaten
Referenties
- ↑ Microsoft Corporation (2006b), Common Object File Format (COFF) (Revisie 4.1 editie) , opgehaald op 2 juni 2007 .
Bibliografie
- Gircys, Gintaras (1988). COFF begrijpen en gebruiken . O'Reilly en medewerkers. ISBN 0-937175-31-5 .