Coff – Wikipedia

before-content-x4

Akronim Uczczenie pamięci (z angielskiego C Ommon O Bject F z F Ormat ) Wskazuje specyfikacje niektórych typów plików używanych w systemach operacyjnych UNIX: pliki wykonywalne, pliki kodu obiektu i plik udostępnionych regałów. Coff został wprowadzony do systemu UNIX IV i była podstawą formatów rozszerzonych XCOFF i ECOFF, zanim została zastąpiona formatem ELF, wprowadzonym za pomocą systemu Unix V.
Jednak w niektórych systemach podobnych do systemów i jej warianty są nadal używane w systemach UNIX i w systemie Microsoft.

after-content-x4

Oryginalny format UNIX dla plików kodu obiektowego, nazywany A.out , miał bardzo prostą strukturę, nieodpowiednia dla technologii, takich jak symboliczne debugowanie i wspólne księgarnie. Od rozwoju Unix- tak jak Miało to miejsce w kilku lokalizacjach (wewnątrz i na zewnątrz AT&T) wdrożono różne rozwiązania, aby zrekompensować ograniczenia A.UUT.

Coff został wprowadzony w systemie UNIX V, wyprodukowanym przez AT&T, dla 32 -bitowych platform innych niż 3B20. [[[ bez źródła ] Ulepszenia w formacie AT&T A. Out obejmowało natywne wsparcie dla:

  • Informacje niezbędne do symbolicznego debugowania
  • Udostępnione regały
  • Mechanizm rozszerzenia

Jednak chociaż Coff była ulepszeniem w porównaniu do A.UUT, architektura była nadal zbyt ograniczona: istniała limit maksymalnej liczby sekcji, limit w długości nazw sekcji i obsługa wstawienia informacji Dla symbolicznego debugowania nie było kompatybilne z nowymi językami, takimi jak C ++. Aby przezwyciężyć te ograniczenia AT&T wraz z wydaniem systemu V Release 4 również wydało format ELF; IBM użył XCOFF w formacie AIX, DEC, SGI, a inne zastosowały format ECOFF; Inne systemy poprawiły formaty właścicieli wykonywalnych i nie przenośne na innych platformach.

Podczas gdy rozszerzone wersje Coff są nadal używane w wielu unix- tak jak , głównie wbudowane systemy, być może najbardziej masywnym zastosowaniem formatu myśli jest dziś wykonany w systemie Windows z formatem PE. Opracowany dla systemu Windows NT, format PE (czasami wspomniany jako PE/Coff) wykorzystuje siedzibę Coff do plików obiektowych i w plikach wykonywalnych, schemat nagłówka Coff jest zawarty w największym schemacie nagłówka PE. [[[ bez źródła ]

Główna poprawa Coff w porównaniu do A.out Było to wprowadzenie kilku sekcji wymienionych w pliku obiektu. Kilka plików obiektów może mieć różne ilości i typy sekcji.

Informacje dla debugowanie symboliczny [[[ zmiana |. Modifica Wikitesto ]

Informacje dla debugowanie Symboliczne pliki trumny składają się z symbolicznych nazw (ciągów) powiązanych z funkcjami i zmiennymi programu oraz informacji o numerach linii, używanych do ustawiania [punkt przerwania] oraz do śledzenia podczas wykonywania. Format A.out nie zapewniał natywnego wsparcia dla debugowanie symboliczne, nawet jeśli limit ten można częściowo przekroczyć mechanizmy użytkowania, takie jak dźgnięcia (Wpisy do tabeli symboli).

Nazwy symboliczne są zachowane w tabeli symboli. Każda pozycja tabeli symboli zawiera nazwę, klasę pamięci, typ, wartość i numer sekcji. Krótkie nazwy (ośmiu znaków lub nie) są zapisywane bezpośrednio w tabeli symboli; Długie nazwy są zapisywane w formie adresu, który ma na celu przy stoliku ciągu obecnym na końcu obiektu Coff.

after-content-x4

Klasa przechowywania opisuje rodzaj encji, którą reprezentuje symbol, który może być c_ext (zmienna zewnętrzna), c_auto (zmienna automatyczna stos ), C_REG (zmienna rejestru), c_fcn (funkcja)) i wiele innych. Typ przewiduje, jak ma być interpretowany wartość powiązana z symbolem, i możliwe jest rozpoznanie każdego z typów C.

Po skompilowaniu odpowiednich opcji plik obiektowy COFF zawiera informacje o numerze linii dla każdego możliwego punkt przerwania obecne w sekcji tekst pliku obiektu. Informacje o liczbach online są w dwóch formach: w pierwszym dla każdego możliwego punkt przerwania Pozycja w wierszu numerów linii zawiera adres punktu przerwania i odpowiedni numer wiersza. W drugiej formie element z kolei wskazuje pozycję tabeli symboli, która reprezentuje początek funkcji, umożliwiając w ten sposób skonfigurowanie punkt przerwania używając nazwy samej funkcji.

Należy zauważyć, że format Coff nie był w stanie przedstawić numerów wiersza ani symboli debugowania dla źródła zawartych w plikach nagłówkowych, tworząc informacje o debugowaniu pliku Coff praktycznie bezużyteczne bez użycia niekompatybilnych rozszerzeń.

Względne adresy wirtualne (RVA) [[[ zmiana |. Modifica Wikitesto ]

Po wygenerowaniu pliku pochylenia zwykle nie wiadomo, w której części pamięci zostanie załadowana. Wirtualny adres, w którym pierwszy bajt Plik zostanie załadowany, nazywa się podstawowym adresem pliku obrazu. Reszta pliku niekoniecznie będzie obecna w ciągłym bloku pamięci, ale w różnych sekcjach pamięci.

Adres RVA ( Względny adres wirtualny ) Nie można mylić ze wspólnymi adresami wirtualnymi. Adres RVA jest wirtualnym adresem obiektu pliku po załadowaniu w pamięci, mniej podstawowym adresem pliku obrazu. Jeśli plik musi być wiernie zmapowany z dysku na pamięć, RVA będzie identyczne z przesunięciem w pliku, ale jest to w rzeczywistości dość niezwykłe.

Zauważ, że termin RVA jest używany tylko dla obiektów w pliku obrazu. Po załadowaniu w pamięci dodaje się podstawowy adres pliku obrazu i używane są zwykłe adresy wirtualne.

after-content-x4