Beiträge anzeigen

Diese Sektion erlaubt es dir alle Beiträge dieses Mitglieds zu sehen. Beachte, dass du nur solche Beiträge sehen kannst, zu denen du auch Zugriffsrechte hast.


Nachrichten - ThinkPad

Seiten: [1]
1
Bekomme beim erzeugen der Objekt Datei von kernel.asm folgende Fehler:

W:\ASM\TestOS\src>nasm -f aout -o kernel_asm.o kernel.asm
kernel.asm:21: error: symbol `code' undefined
kernel.asm:22: error: symbol `edata' undefined
kernel.asm:23: error: symbol `end' undefined
kernel.asm:33: error: phase error detected at end of assembly.
2
Mein Linkerscript ist das aus dem Tutorial und sieht wie folgt aus:

ENTRY (loader)

SECTIONS
{
  . = 0x00100000;

  .text :
  {
    *(.text)
  }

  .rodata ALIGN (0x1000) :
  {
    *(.rodata)
  }

  .data ALIGN (0x1000):
  {
    *(.data)
  }

  .bss :
  {
    _sbss = .;
    *(COMMON)
    *(.bss)
    _ebss = .;
  }
}


Grüße
3
Danke für eure Hilfe,
meine Kenntnisse in Assemlber sind derzeit aber noch sehr stark begrenzt und ich weiss nicht was ich genau in meine kernel.asm Datei schreiben muss.
Derzeit sieht meine kernel.asm wie folgt aus:

global loader ; loader für Linker sichtbar machen
extern main   ; main-Funktion des C-Kernels
 
FLAGS    equ 0
MAGIC    equ 0x1BADB002       ; Magicnumber - Erkennungsmerkmal für Grub
CHECKSUM equ -(MAGIC + FLAGS) ; Checksum
 
section .text
align 4
MultiBootHeader:
  dd MAGIC       ; Magic number
  dd FLAGS       ; Flags
  dd CHECKSUM    ; Checksum
 
loader:
  mov esp,0x200000 ; Stack an die 2MB-Grenze platzieren
  push eax         ; Multiboot Magicnumber auf den Stack legen
  push ebx         ; Adresse der Multiboot-Structure auf den Stack legen
  call main        ; main-Funktion des C-Kernels aufrufen
 
  cli ; falls der Kernel bis hier her kommt, CPU anhalten
  hlt

Wie genau muss denn jetzt die kernel.asm Datei aussehen (also wo muss der Code von http://osdev.berlios.de/grub.html#multiboot hin) ?
Wäre nett wenn jemand den richtigen kernel.asm code posten könnte, dann würde der kernel schonmal booten und ich könnte mich erstmal etwas mit der C Programmierung beschäftigen.
4
Die kernel_asm.o erzeuge ich wie im Artikel angegeben mit:

nasm -f elf -o kernel_asm.o kernel.asm

Was muss ich denn statt "-f elf" schreiben und wie schreibe ich dann mehr (und vorallem welche) Informationen in den Multiboot-Header ?

Grüße
5
Hallo,

ich habe noch nicht viel Ahnung von Assembler und arbeite mich gerade durch das "C-Kernel mit Grub" Tutorial.

Ich möchte erstmal auf Linux verzichten und haben mir deswegen djgpp auf meinem Windows XP installiert und eingerichtet.
Aus der Assembler Datei und der C Datei kann ich jeweils eine Objektdatei erzeugen.

Nur beim linken bekomme ich folgende Fehlermeldung:

W:\ASM\TestOS\src>ld -T link.txt -o kernel.bin kernel_asm.o k
kernel_asm.o: file not recognized: File format not recognized

Wäre dankbar, wenn mir da jemand weiterhelfen würde.
Seiten: [1]

Einloggen