Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
come da titolo non ho ben chiara la differenza tra le informazioni che si trovano all'inteno della relocation information e quelli dela symbol table.
Nella relocation information troviamo tutti i dati e le informazioni che, quando il nostro programma viene caricato in memoria, fanno riferimento ad indirizzi assoluti.
Mentre la symbol table contiene tutte le etichette verso riferimenti che non sono stati trovati e che, di conseguenza, fanno riferimento a moduli esterni.
Semplicemente la Symbol Table serve al linker per conoscere i nomi e i tipi di parametri delle funzioni contenute in quel file oggetto.
Per le librerie statiche i riferimenti ai simboli vengono risolti a compile time, invece per le librerie dinamiche la risoluzione dei simboli viene effettuata quando una libreria viene caricata su richiesta di un processo.
Le informazioni di rilocazione invece servono a descrivere gli indirizzi relativi a livello di singolo opcode, quindi servono per determinare gli indirizzi dei branch assoluti e di altri indirizzi assoluti (gli indirizzi di variabili statiche o di costanti, ad esempio).
Ricapitolando, la relocation table serve ad organizzare gli indirizzi a livello di singolo opcode, mentre la Symbol Table altro non è che un Indice Analitico di tutti i simboli esportati da quell'object file, quindi funzioni, variabili globali e costanti esportate ad esempio.
Postato originariamente da f.l.c.r: I file oggetto di questo tipo sono tipici di Unix con architettura mips oppure sono i file oggetto che vengono prodotti idipendentemente dall'architettura dellelaboratore.
A parte alcune differenze implementative, a livello di piccoli dettagli, questa struttura viene usata su quasi tutti i sistemi operativi e quasi tutte le architetture di CPU.
Testo quotato
Cosa intendi, nello specifico, per risolvere un informazione(un indirizzo ad esempio)?
Risolvere, come nel senso di "risolvere un'equazione". Nella risoluzione degli indirizzi l'incognita è l'indirizzo di destinazione, l'equazione è del tipo: x = indirizzo_base + reloc_offset
Per "risoluzione dei simboli" si intende la ricerca degli indirizzi delle entità associate ai simboli. Puoi pensarlo come un indice analitico, cioè una tabella di elementi Key-Value, dove la chiave di ricerca è il nome del simbolo opportunamente adornato dai vari attributi di tipo, e il Value è l'indirizzo assoluto (non rilocato) di quell'entità (funzione o variabile), relativa a quell'object file.
Praticamente sono operazioni che faccio già in presenza, ad esempio, di una beq , in cui sommo al pc 4 + offset così da determinare l'indirizzo di salto, o di una j in cui prendo i 4 bit più significativi del pc e li metto davanti all'offset del'istruzione su 26 bit, che siccome dev essere allineato alla word, non vengono considerati i primi 2 bit(quelli meno significativi).
Tutte queste sono risoluzioni di indirizzi?
Semplicemente la Symbol Table serve al linker per conoscere i nomi e i tipi di parametri delle funzioni contenute in quel file oggetto.
Per le librerie statiche i riferimenti ai simboli vengono risolti a compile time, invece per le librerie dinamiche la risoluzione dei simboli viene effettuata quando una libreria viene caricata su richiesta di un processo.
Le informazioni di rilocazione invece servono a descrivere gli indirizzi relativi a livello di singolo opcode, quindi servono per determinare gli indirizzi dei branch assoluti e di altri indirizzi assoluti (gli indirizzi di variabili statiche o di costanti, ad esempio).
Ricapitolando, la relocation table serve ad organizzare gli indirizzi a livello di singolo opcode, mentre la Symbol Table altro non è che un Indice Analitico di tutti i simboli esportati da quell'object file, quindi funzioni, variabili globali e costanti esportate ad esempio.
Ok, chiarissimo.
I file oggetto di questo tipo sono tipici di Unix con architettura mips oppure sono i file oggetto che vengono prodotti idipendentemente dall'architettura dellelaboratore.
Cosa intendi, nello specifico, per risolvere un informazione(un indirizzo ad esempio)?
Praticamente sono operazioni che faccio già in presenza, ad esempio, di una beq , in cui sommo al pc 4 + offset così da determinare l'indirizzo di salto, o di una j in cui prendo i 4 bit più significativi del pc e li metto davanti all'offset del'istruzione su 26 bit, che siccome dev essere allineato alla word, non vengono considerati i primi 2 bit(quelli meno significativi).
Tutte queste sono risoluzioni di indirizzi?