it-swarm.it

Cos'è una tabella dei simboli?

Qualcuno può descrivere cosa sia una tabella dei simboli nel contesto di C e C++?

78
jdt141

Ci sono due significati comuni e correlati delle tabelle dei simboli qui.

Innanzitutto, c'è la tabella dei simboli nei file oggetto. Di solito, un compilatore C o C++ compila un singolo file sorgente in un file oggetto con estensione .obj o .o. Questo contiene una raccolta di codice eseguibile e dati che il linker può elaborare in un'applicazione funzionante o in una libreria condivisa. Il file oggetto ha una struttura dati chiamata tabella dei simboli al suo interno che associa i diversi elementi nel file oggetto ai nomi che il linker può comprendere. Se chiami una funzione dal tuo codice, il compilatore non inserisce l'indirizzo finale della routine nel file oggetto. Invece, inserisce un valore di segnaposto nel codice e aggiunge una nota che indica al linker di cercare il riferimento nelle varie tabelle dei simboli da tutti i file oggetto che sta elaborando e vi configura la posizione finale.

In secondo luogo, c'è anche la tabella dei simboli in una libreria o DLL condivisa. Questo è prodotto dal linker e serve a nominare tutte le funzioni e gli elementi di dati che sono visibili agli utenti della libreria. Ciò consente al sistema di eseguire collegamenti di runtime, risolvendo i riferimenti aperti a tali nomi nella posizione in cui la libreria viene caricata in memoria.

Se vuoi saperne di più, ti suggerisco l'eccellente libro di John Levine "Linkers and Loaders" . link text

73
Ben Combee

In breve, è la mappatura del nome che assegni una variabile al suo indirizzo in memoria, inclusi tipo di metadati, ambito e dimensioni. È usato dal compilatore.

Questo è in generale, non solo C [++] *. Tecnicamente, non sempre include l'indirizzo di memoria diretto. Dipende da quale linguaggio, piattaforma, ecc. Il compilatore sta prendendo di mira.

22
Steve Landey

In Linux, puoi usare il comando: 

nm [file oggetto]

per elencare la tabella dei simboli di quel file oggetto.

13
hdn

La tabella dei simboli è la lista di "simboli" in un programma/unità. I simboli sono più spesso i nomi di variabili o funzioni. La tabella dei simboli può essere utilizzata per determinare dove si troveranno le variabili o le funzioni della memoria.

8
Joe Schneider

Controlla la voce wikipedia della tabella Symbol .

4
Allan Wind

La tabella dei simboli è un'importante struttura dati creata e gestita dai compilatori per memorizzare informazioni sull'occorrenza di varie entità come nomi di variabili, nomi di funzioni, oggetti, classi, interfacce, ecc.

0
rashedcs