Wie der Linker das Symbol im Assemblercode auflöst

8

Ich wollte wissen, wie Linker das printf-Symbol im folgenden Assembly-Code auflöst.

%Vor%

Bit der Low-Level-Erklärung wird sehr geschätzt.

Vielen Dank im Voraus.

    
mahesh 29.07.2009, 09:02
quelle

4 Antworten

17

Unter Annahme des ELF-Dateiformats erzeugt der Assembler eine nicht definierte Symbolreferenz in der Objektdatei. Das sieht dann so aus:

%Vor%

Es wird auch ein Verschiebungseintrag erstellt, der auf den Teil des Codebildes verweist, der vom Linker mit der korrekten Adresse aktualisiert werden muss. Es sieht so aus:

%Vor%

Die Aufgabe des Linkers ist es dann, durch die Verschiebungstabelle zu gehen und das Codebild mit den endgültigen Symboladressen zu reparieren.

Es gibt ein ausgezeichnetes Buch, aber ich kann die Details gerade nicht finden (und es ist vergriffen). Dies scheint jedoch nützlich zu sein: Ссылка

Dave.

    
DaveS 29.07.2009, 09:08
quelle
1

Für ein tolles Buch über den Linking-Prozess, siehe Linkers & amp; Lader von John Levine. Sie können die Manuskriptkapitel im HTML-Format hier erhalten.

>     
anon 29.07.2009 09:15
quelle
1

Eine weitere gute Quelle für Linker ist diese Artikelserie: Ссылка .

    
Bastien Léonard 29.07.2009 12:08
quelle
1

Ein Papier, das Ihnen helfen könnte, ist Schreiben freigegebener Bibliotheken von Ulrich Drepper. Ulritch der Linux-Glibc-Betreuer und er ist eine Autorität auf ELF.

Auch wenn es in diesem Dokument darum geht, wie man gemeinsam genutzte Bibliotheken schreibt und wie man Symbole exportiert oder nicht exportiert, wird erklärt, wie diese Symbole in einem Exefile mit ELF-Format dynamisch aufgelöst werden.

Ich denke, es könnte deine Frage beantworten.

    
javier-sanz 29.07.2009 11:37
quelle

Tags und Links