Adressen... Adressen... Adressen
-
Hi ich hoffe ihr könnt mir weiterhelfen.
Bin grad in der Assembler-MidlifeCrisisNaja...hab ja erst angefangen mit ASM aber egal. Meine Frage:
Ich kenn mich ja etz schon a bisserl mit Assembler aus aber das mit den Adressen...ich meine was passiert wenn ich bei TASM ein neues Segment bzw. mehrere Segmente anlege ? Werden die 64-KB Segmente nur im Speicher (also zur Laufzeit im Arbeitsspeicher) angelegt oder auch in der Binary-DATEI(!) selbst ? Und ich hab mir vor kurzem ein Linker Script vom Linux Linker "ld" reingezogen, das wie folgt lautete (zu finden unter http://www.osdever.net/bkerndev/index.php?the_id=90, Seite 3 des Tutorials):OUTPUT_FORMAT("binary") ENTRY(start) phys = 0x00100000; SECTIONS { .text phys : AT(phys) { code = .; *(.text) . = ALIGN(4096); } .data : AT(phys + (data - code)) { data = .; *(.data) . = ALIGN(4096); } .bss : AT(phys + (bss - code)) { bss = .; *(.bss) . = ALIGN(4096); } end = .; }
Das Makefile sieht so aus:
nasm -f aout -o start.o start.asm ld -T link.ld -o kernel.bin start.o
So...bin ja net ganz blöd und hab mir die englische Beschreibung des ld Linker-Scripts durchgelesen- das meiste hoffentlich auch verstanden
- nur worin liegt hier der Unterschied zwischen ".text phys" und "AT (phys)" ? In der Beschreibung lese ich beide male etwas von einer Ladeadresse. Nur worin unterscheiden sich diese ?
Ach ja...die Variablen bss, code, end und data sind in einer .asm Quelldatei enthalten in der Form: "EXTERN code, bss, end"
nur 'data' fehlt ?!?!?! ...scheinbar ändert hier der Linker zur "Linkzeit" die Werte der Variablen. Nicht dass ihr euch am Ende fragen solltet woher die Variablen kommen.
Aber hier kommen wir schon zum weiten Problem. Wie kann der Scripter hier schreiben : "AT(phys + (data - code))" wenn die Variable data noch gar keinen Wert zugewiesen bekommen hat und nicht einmal in der .asm Quelldatei als EXTERN deklariert wird geschweige denn überhaupt auftaucht ?!
Lol...naja alles etwas wirr...kommt für euch etz warscheinlich total komisch rüber. Vielleicht gibts ja jemanden der das Tutorial kennt...=)Schönen Gruß von mir noch an alle
-
Ach vergisst es. Passt schon - krieg ich schon irgendwie raus.
Mein Fehler. Man sollte ja auch keine so langen Beiträge schreiben und noch dazu gleich 3 Fragen stellen. Wär mir ehrlich gesagt selbst zu blöd den ganzen Schwachsinn durchzulesen.Tschau und Gruß