Frage

Kann jemand beschreiben, was eine Symboltabelle im Rahmen von C und C ++?

War es hilfreich?

Lösung

Es gibt zwei gängige und damit verbundene Bedeutung von Symboltabellen hier.

Zunächst gibt es die Symboltabelle in Ihren Objektdateien. Üblicherweise wird ein C oder C ++ Kompilierer kompiliert eine einzelne Quelldatei in eine Objektdatei mit einem OBJ oder .O Erweiterung. Diese enthält eine Auflistung von ausführbaren Code und Daten, die der Linker in eine Arbeitsanwendung oder gemeinsam genutzte Bibliothek verarbeiten kann. Die Objektdatei hat eine Datenstruktur eine Symboltabelle darin genannt, die die verschiedenen Elemente in der Objektdatei Namen zuordnet, die der Linker verstehen kann. Wenn Sie eine Funktion aus dem Code aufrufen, wird der Compiler nicht die letzte Adresse der Routine in der Objektdatei setzen. Stattdessen ist es einen Platzhalter-Wert in den Code legt und fügt eine Note, die den Linker mit der Referenz in den verschiedenen Symboltabellen von allen Objektdateien suchen erzählt Verarbeitung es ist und die endgültige Lage dort haften bleiben.

Zweitens gibt es auch die Symboltabelle in einer gemeinsam genutzten Bibliothek oder DLL. Dies wird durch den Linker hergestellt und dient alle Funktionen und Datenelemente zu nennen, die für die Nutzer der Bibliothek sichtbar sind. Dadurch kann das System zur Laufzeit Verlinkung zu tun, die Lösung offene Verweise auf diesen Namen zu der Stelle, wo die Bibliothek in dem Speicher geladen wird.

Wenn Sie mehr erfahren möchten, schlage ich John Levine ausgezeichnetes Buch „Linkers und Lader“. link text

Andere Tipps

Kurz gesagt, ist es die Zuordnung des Namens Sie eine Variable an seine Adresse im Speicher zuweisen, einschließlich Metadaten wie Art, Umfang und Größe. Es wird vom Compiler verwendet.

Das ist in der Regel nicht nur C [++] *. Technisch gesehen, nicht dazu gehören immer direkte Speicheradresse. Es hängt davon ab, welche Sprache, Plattform etc. der Compiler zielt.

Unter Linux können Sie Befehl verwenden:

  

nm [Objektdatei]

die Symboltabelle des Objektdatei aufzulisten.

Die Symboltabelle ist die Liste der „Symbole“ in einem Programm / Einheit. Die Symbole sind am häufigsten die Namen von Variablen oder Funktionen. Die Symboltabelle verwendet werden kann, wo in Speichervariablen oder Funktionen zu bestimmen befinden wird.

Überprüfen Sie die Symboltabelle Wikipedia-Eintrag.

Symboltabelle ist eine wichtige Datenstruktur von Compilern, um geschaffen und erhalten Informationen über das Auftreten verschiedener Einheiten wie Variablennamen zu speichern, Funktionsnamen, Objekte, Klassen, Schnittstellen, etc.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top