
Textsegment
enthält Sprünge, die noch nicht ausgefüllt werden können, da Adresse von count()/print() nicht bekannt (Platzhalter: 0)
Stringtabelle:
enthält alle „sichtbaren“ Symbole (Namen von exportierten/importierten Prozeduren bzw. Datenstrukturen)
- jeweils durch Nullbytes abgeschlossen
- ermöglicht feste Länge von Symboltabelleneinträgen trotz variabler Stringlänge
Symboltabelle:
enthält Eintrag für jedes „sichtbare“ Symbol, bestehend aus:
- Name des Symbols durch Verweis auf Startbyte in Stringtabelle
- Typ (+Adresse):
- Text (Im Textsegment an angegebener Adresse definiert; hier: 0)
- Data (Im Datensegment an angegebener Adresse definiert)
- UNDEFINED (Extern definiert, muss noch dazu gebunden werden; hier: count/print)
Text/Data Relocation Tabelle:
enthält Relocation-Information für den Linker
-
Eintrag im Text-/Daten-Segment, der noch mit richtiger Adresse versehen werden muss
(hier: Instruktionen an Adressen 12 und 16 ⇒ call count/print) -
Angabe des zu ersetzenden Symbols über Verweis auf entsprechenden Symboltabelleneintrag
(hier: count ⇒ 1, print ⇒ 2) -
Angabe eines „Modus“, wie nachfolgende Adressinfo umgesetzt werden soll
(hier: „WDISP30“ ⇒ spezielle Form der pc-relativen Adressierung) -
Angabe eines „Adressmodifizierers“
(hier: pc befindet sich auf Adresse 12 bzw. 16, wenn Sprung erfolgt)
⇒ Adresse = Adr(count) – Adr(main) – 12
*(Bei Instruktion „call count“ einzutragende pc-relative Sprungadresse zu count ⇒ muss der Linker ausrechnen)