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.


Themen - Krox

Seiten: [1]
1
Lowlevel-Coding / nur 2 GiB trotz 64 bit
« am: 22. February 2008, 21:20 »
Nach langer Zeit dacht ich mir, mein altes OS wieder rauszukramen, wieder mit Grub, jetzt aber in echten 64 bit. Das Umschalten klappt auch ganz gut, doch danach soll ein Sprung in den Hochsprachen-Kernel folgen (nicht C/C++, sondern D... aber das ist hier egal^^).

Doch sobald ich diesen Kernel per ld-Script über die 2 GiB marke bewege, meldet der Linker:
relocation truncated to fit: R_X86_64_PC32 against `KernelMain'Der Nasm-Sprungcode ist sehr einfach:
extern KernelMain
[BITS 64]
jmp KernelMain

Achja, ich arbeite hier unter 64bit Ubuntu Linux, also sollte jeder Compiler/Linker nativ 64Bit benutzen.

kann mir jemand helfen?
2
Offtopic / problem mit loop device
« am: 27. December 2006, 20:21 »
Folgendes: Ich benutze um mein OS zu testen ein (Fat12 formatiertes) Floppy Image, welches ich mit mount floppy.img mnt -o loop wieder einbinde, um den kernel und sowas drauf zu kopieren. Wenn ich aber nach einer Änderung der Dateien auf der Floppy Bochs mit floppy.img aufrufe, hat dieser noch die alte Version. Die neuen Dateien scheinen erst bei umount "übernommen" zu werden.
Ich vermute einfach, dass das Dateisystem an irgenteiner Stelle cashed, aber wie kann ich das umgehen?

krox

edit: Ich benutze Ubuntu Linux 6.10 (Kernel 2.6.17 is das)
3
Offtopic / grub mit vbe patch
« am: 24. September 2006, 13:06 »
hi

Nachdem ich jezt MT, paging und noch einiges anderes Grundlegendes in mein OS implementiert habe, wollte ich jezt mit Grafik anfangen. Im PMode kann ich allerdings nur den mode 13h und änliches anmachen, welcher aber nicht wirklich schön ist. Deshalb suche ich jezt ein Grub, welches mir direkt beim starten einen Grafik Modus setzten kann. Das "normale" Grub unterstützt das nicht, und ein eigenes kompilieren kann ich unter Windows (und sogar mit cygwin) nicht.... Lange Rede, kurzer Sinn: Weiß jemand wo man ein fertiges disk image mit grub und vbe patch herbekommt?
4
Offtopic / C++ templates in anderer Objektdatei
« am: 28. April 2006, 18:16 »
nach dem ich jetzt angefangen habe, mich mit templates zu beschäftigen, tuen sich noch einige Fragen auf: Wie wird das gemacht, wenn ich in einer (*.cpp) Datei ein (Klasse-)Template habe, das zu einer eigenen Objekt-Datei kompiliert wird, und ich in einem anderen eine Klasse damit erstelle..... das kann doch eigentlich nicht gehen beim zusammenlinken. Der linker versteht doch nichts von templates....   oder doch?

ich hoffe, ihr versteh was ich meine  :lol:

edit: bei inline-Funktionen müsste es doch das selbe Problem geben.. *kopfkratz*
5
Lowlevel-Coding / eine Datei - verschiedene Adressen
« am: 13. April 2006, 17:57 »
Nachdem ich es nicht in der Doku von ld gefunden habe (obwohl es bestimmt drin steht) nun hier meine Frage: Wie kann ich verschiedene Sections einer Datei an verschiedene Stellen linken? Ich benutze nämlich einen loader, der paging anschaltet und dann die ersten paar MB sowohl nach 0x00 als auch nach 0xC0000000 mappt. Der restliche Kernel soll dann aber in diesem hohen  Speicherbereich ausgeführt werden (ich hoffe, ihr versteht was ich meine :roll: ). ich habe jetzt schon so etwas ausprobiert: SECTIONS
{
.loader 0x100000 : { loader.o }
.kernel 0xC0000000 : { kernel.o }
}
So füllt ld allerdings die Datei mit viiiieelen Nullen aus, und sie wird fast 3 GB groß  :? . Ich möchte aber, das ld die Symbole behandelt, als ob sie an diesen Adressen wären. ld soll sie nicht wirklich dahin legen  :D

ich hoffe, ihr könnt mir helfen
6
Lowlevel-Coding / Grub - Format Problem
« am: 27. March 2006, 16:04 »
Hallo,

ich habe ein Problem mit Grub. Und zwar versteht er das Format meines Kernels nicht. Ich benutze Flat Binary und habe dort per "dd" und co. einen Multiboot header hereingeschrieben, den ein Tool namens multiboot_checker übrigens auch für richtig hält. Sogar Grub liest richtig: Multiboot-kludge, Loadaddr: 0x100000, text-and-data: 0x1900 bricht aber in der nächsten Zeile mit "invalid or unsupportet executable Format" ab.

Weiß jeamand was da falsch sein könnte?

edit: das ist der code:
; Macros for Multi Boot Header
MULTIBOOT_PAGE_ALIGN equ 1 << 0
MULTIBOOT_MEMORY_INFO equ 1 << 1
MULTIBOOT_AOUT_KLUDGE equ 1 << 16
MULTIBOOT_HEADER_MAGIC equ 0x1BADB002
MULTIBOOT_HEADER_FLAGS equ MULTIBOOT_PAGE_ALIGN | MULTIBOOT_MEMORY_INFO | MULTIBOOT_AOUT_KLUDGE
MULTIBOOT_CHECKSUM equ -(MULTIBOOT_HEADER_MAGIC + MULTIBOOT_HEADER_FLAGS)

MultiBoot: ; Multiboot header
ALIGN 4
dd MULTIBOOT_HEADER_MAGIC
dd MULTIBOOT_HEADER_FLAGS
dd MULTIBOOT_CHECKSUM
   
; AOUT kludge
dd MultiBoot ; multiboot header
dd text ; code/data segment
dd bss ; bss segment
dd end ; bss end
dd start ; entrypoint for the OS
7
Offtopic / Zeichenbegrenzung in der shell
« am: 16. March 2006, 23:11 »
hallo....

Wie ich eben feststellte, giebt es in der dos box oder Eingabeaufforderung, wie es ja heißt eine Zeichenbegrenzung (bei ca 128 Zeichen). Das genügt aber nicht, um einen Compiler mit entsprechend vielen Parametern aufzurufen.... er teilt mir dann nur noch freundlich mit "Das angegebene Programm kann nicht ausgeführt werden". Ist schon einmal jemand auf dieses Problem gestoßen, und kann man diese Begrenzung umgehen?

danke schonmal,
Krox
8
Lowlevel-Coding / Problem beim Linken
« am: 26. February 2006, 23:30 »
Nach langer Zeit wollte ich mein OS mal wieder weiterführen, habe mir also die neusten Versionen von nasm, mingw und ein paar anderen Sachen geholt, musste aber feststellen, das ld meinen Kernel nicht linken will.
Zitat
startup.obj: file not recognized: File format not recognized
Das passiert bei jeder Objekt Datei die mit nasm erstellt ist (a.out Format). Wenn ich aber das Format auf elf, coff oder irgentwas umstelle bricht er auch ab, diesmal aber mit
Zitat
ld.exe: PE operation at not PE object
oder so änlich.

Hatte das Problem schon mal jemand? Hab irgentwie das Gefühl, was ganz einfaches übersehen zu haben... :roll:

danke schonmal,
Krox
Seiten: [1]

Einloggen