Oppure

Loading
10/01/11 14:35
f.l.c.r
Salve,

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.

Potreste fornirmi un esempio?
aaa
10/01/11 14:48
TheKaneB
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.
aaa
10/01/11 15:21
f.l.c.r
Postato originariamente da TheKaneB:

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)?
aaa
10/01/11 20:52
TheKaneB
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.

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.
aaa
10/01/11 21:04
f.l.c.r
Cavolo, ti devo una birra! :hail:

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?
aaa
11/01/11 13:34
TheKaneB
Postato originariamente da f.l.c.r:

Cavolo, ti devo una birra! :hail:

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?


esattamente :-)
aaa