Movatterモバイル変換


[0]ホーム

URL:


Vai al contenuto
WikipediaL'enciclopedia libera
Ricerca

COFF

Da Wikipedia, l'enciclopedia libera.
Niente fonti!
Questa voce o sezione sull'argomento sistema operativonon cita le fonti necessarie o quelle presenti sono insufficienti.
Commento:ci sono troppo pochi rimandi a fonti

L'acronimoCOFF (dall'ingleseCommonObjectFileFormat) indica lespecifiche di alcuni tipi difile usati neisistemi operativiUnix:file eseguibili,file di codice oggetto efile di libreria condivisa. Il COFF fu introdotto nelloUNIX System IV e fu alla base dei formati estesiXCOFF eECOFF, prima di essere rimpiazzato dal formatoELF, introdotto con loUNIX System V.Tuttavia il COFF e le sue varianti continuano ad essere usati in alcuni sistemiUnix-like e inMicrosoft Windows.

Storia

[modifica |modifica wikitesto]

Il formato originale Unix per i file di codice oggetto, chiamatoa.out, aveva una struttura molto semplice, inadeguata per tecnologie quali ildebugging simbolico e lelibrerie condivise. Poiché lo sviluppo di sistemi Unix-like avveniva in diverse sedi (dentro e fuori laAT&T) furono implementate diverse soluzioni per sopperire alle limitazioni di a.out.

COFF fu introdotto nello UNIX System V, prodotto dalla AT&T, per piattaforme a32 bit nonVAX quali il3B20.[senza fonte] I miglioramenti all'esistente formato a.out di AT&T comprendevano supporto nativo per:

  • informazioni necessarie al debugging simbolico
  • librerie condivise
  • meccanismo di estensioni

Tuttavia, sebbene COFF fu un miglioramento rispetto ad a.out, l'architettura era ancora troppo limitata: c'era un limite nel numero massimo di sezioni, un limite nella lunghezza dei nomi delle sezioni e il supporto all'inserzione di informazioni per il debugging simbolico non era compatibile con nuovi linguaggi come ilC++. Per superare queste limitazioni AT&T con il rilascio diSystem V Release 4 rilasciò anche il formato ELF;IBM usò il formato XCOFF nelloAIX,DEC,SGI e altri usarono il formato ECOFF; altri sistemi migliorarono il loro formati di eseguibili proprietari e non portabili ad altre piattaforme.

Mentre versioni estese di COFF continuano ad essere usate in molte piattaforme Unix-like, principalmentesistemi embedded, forse l'uso più massiccio del formato COFF oggi è quello effettuato in Windows, con il suo formatoPE.Sviluppato perWindows NT, il formato PE (a volte citato come PE/COFF) usa uno schema di intestazione COFF per i file oggetto e nei file eseguibili lo schema di intestazione COFF è inserito nel più vasto schema di intestazione PE.[senza fonte]

Caratteristiche

[modifica |modifica wikitesto]

Il principale miglioramento di COFF rispetto ada.out fu l'introduzione di più sezioni nominabili nel file oggetto. Diversi file oggetto possono avere diverse quantità e tipi di sezioni.

Informazioni per ildebugging simbolico

[modifica |modifica wikitesto]

Le informazioni per ildebugging simbolico dei file COFF consistono in nomi simbolici (stringhe) associati a funzioni e variabili del programma, e informazioni sui numeri di linea, usati per impostare[breakpoint] e per iltracciamento durante l'esecuzione. Il formatoa.out non forniva supporto nativo per ildebugging simbolico, anche se questo limite poteva essere parzialmente superato usano meccanismi come lostabs (Symbol TAble entrieS).

I nomi simbolici sono conservati nella tabella dei simboli. Ogni voce della tabella dei simboli comprende nome, classe di memorizzazione, tipo, valore e numero di sezione. Nomi corti (di otto caratteri o meno) sono salvati direttamente nella tabella dei simboli; i nomi lunghi sono salvati in forma di indirizzo che punta alla tabella delle stringhe presente alla fine dell'oggetto COFF.

La classe di memorizzazione descrive il tipo di entità che il simbolo rappresenta, che può essere C_EXT (variabile esterna), C_AUTO (variabile automatica dellostack), C_REG (variabile diregistro), C_FCN (funzione)) e molte altre. Il tipo prescrive come sia da interpretare il valore associato al simbolo, ed è possibile riconoscere ognuno dei tipi delC.

Quandocompilato con le opzioni appropriate, un file oggetto COFF contiene informazioni sul numero di linea per ogni possibilebreakpoint presente nella sezionetext del file oggetto. Le informazioni sui numeri di linea sono in due forme: nella prima, per ogni possibilebreakpoint la voce nella tabella dei numeri di linea contiene l'indirizzo del breakpoint e il corrispondente numero di linea. Nella seconda forma, la voce indica a sua volta una voce della tabella dei simboli che rappresenta l'inizio di una funzione, rendendo così possibile l'impostazione di unbreakpoint usando il nome della funzione stessa.

Si noti che il formato COFF non era capace di rappresentare numeri di riga o simboli di debug per sorgente incluso con i file di header rendendo virtualmente inutili le informazioni di debug del file COFF senza l'uso di estensioni incompatibili.

Indirizzi virtuali relativi (RVA)

[modifica |modifica wikitesto]

Quando viene generato un file COFF, di solito non si sa in quale parte dellamemoria esso verrà caricato. L'indirizzo virtuale dove il primobyte del file sarà caricato è chiamato indirizzo di base del file immagine. Il resto del file non sarà necessariamente presente in un blocco di memoria contiguo, ma in sezioni di memoria differenti.

L'indirizzo RVA (Relative Virtual Address) non deve essere confuso con i comuni indirizzi virtuali. Un indirizzo RVA è l'indirizzo virtuale di un oggetto del file una volta che esso è stato caricato in memoria, meno l'indirizzo di base del file immagine. Se il file deve essere mappato fedelmente daldisco alla memoria, l'RVA sarà identico all'offset nel file, ma questo in realtà è piuttosto insolito.

Notare che il termine RVA è usato solo per gli oggetti nel file immagine. Una volta caricati in memoria, viene aggiunto l'indirizzo di base del file immagine, e sono usati gli ordinari indirizzi virtuali.

Bibliografia

[modifica |modifica wikitesto]

Collegamenti esterni

[modifica |modifica wikitesto]
Controllo di autoritàGND(DE4356762-9
  Portale Informatica: accedi alle voci di Wikipedia che trattano di informatica
Estratto da "https://it.wikipedia.org/w/index.php?title=COFF&oldid=125006441"
Categoria:
Categorie nascoste:

[8]ページ先頭

©2009-2025 Movatter.jp