Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Altri Linguaggi - Architettura MIPS, domanda teorica su file oggetto UNIX
Forum - Altri Linguaggi - Architettura MIPS, domanda teorica su file oggetto UNIX

Avatar
f.l.c.r (Normal User)
Rookie


Messaggi: 29
Iscritto: 05/01/2011

Segnala al moderatore
Postato alle 15:35
Lunedì, 10/01/2011
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?  

PM
Avatar
TheKaneB (Member)
Guru^2


Messaggi: 1792
Iscritto: 26/06/2009

Up
5
Down
V
Segnala al moderatore
Postato alle 15:48
Lunedì, 10/01/2011
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.

PM
Avatar
TheKaneB (Member)
Guru^2


Messaggi: 1792
Iscritto: 26/06/2009

Up
1
Down
V
Segnala al moderatore
Postato alle 21:52
Lunedì, 10/01/2011
Testo quotato

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.

PM
Avatar
TheKaneB (Member)
Guru^2


Messaggi: 1792
Iscritto: 26/06/2009

Up
1
Down
V
Segnala al moderatore
Postato alle 14:34
Martedì, 11/01/2011
Testo quotato

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 :-)

PM
Avatar
f.l.c.r (Normal User)
Rookie


Messaggi: 29
Iscritto: 05/01/2011

Up
0
Down
V
Segnala al moderatore
Postato alle 16:21
Lunedì, 10/01/2011
Testo quotato

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)?

PM
Avatar
f.l.c.r (Normal User)
Rookie


Messaggi: 29
Iscritto: 05/01/2011

Up
0
Down
V
Segnala al moderatore
Postato alle 22:04
Lunedì, 10/01/2011
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?

PM