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 - Krox

Seiten: 1 [2]
21
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*
22
Lowlevel-Coding / In Bochs die RTC richtig laufen lassen.
« am: 16. April 2006, 15:06 »
:lol:  stimmt, meine Uhr läuft ja wirklich zu schnell. Habs jetzt geändert, so gehts jetzt wirklich:
clock: sync=slowdown, time0=local
23
Lowlevel-Coding / In Bochs die RTC richtig laufen lassen.
« am: 16. April 2006, 01:12 »
hier:clock: sync=realtime, time0=local bei mir gehts so...
24
Offtopic / C-Calling Convention verbessern
« am: 14. April 2006, 23:20 »
hm... kleiner wird das Programm, da ja das "sub 2" nur einmal auftaucht, und nicht bei jedem Aufruf der Funktion. Aber ausgeführt wird es doch trotzdem jedes mal und ergo wird es nicht schneller....

Oder steh' ich jetzt auf'm Schlauch?
25
Offtopic / C-Calling Convention verbessern
« am: 14. April 2006, 22:09 »
Abgesehen davon, dass die Methode wohl kaum schneller ist (ändert sich ja nur die Reihenfolge der Befehle).... der Fehler is schon lustig  :lol:
26
Lowlevel-Coding / eine Datei - verschiedene Adressen
« am: 13. April 2006, 22:30 »
Ja, so (ähnlich) funktioniert's. :) danke für die schnelle Hilfe

mein Endresultat sieht jetzt so aus:SECTIONS
{
loader 0x00100000 : AT(0x00100000)
{
_loader = .;
obj/loader.obj
_loaderEnd = .;
}

kernel 0xC0100000 + SIZEOF(loader) : AT(0x00100000 + SIZEOF(loader))
{
_kernel = .;
obj/*.obj
_kernelEnd = .;
}
}
27
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
28
Lowlevel-Coding / Ports
« am: 13. April 2006, 17:39 »
umgekehrt. in ließt daten in den prozessor (die register) ein, und out schickt sie raus
29
Offtopic / Kleine Umfrage
« am: 02. April 2006, 22:10 »
Ich lasse von VFD ein Diskettenlaufwerk simulieren und starte Bochs dann mit "floppya: 1_44=b:". Die einzelnen Schritte sind dann in einem Makefile und im Editor sind kurztasten auf die verschiedenen Make-scripte gesetzt. Zum testen brauch ich also nur noch:

F9: compilen
F10: linken
F11: auf (virtuelle) dieskette kopieren (per copy, da ein FAT12 darauf existiert)
F12: Bochs starten

Extratasten giebts dann noch für den bochs-debugger, tmp dateien löschen und vfd starten und beenden. Zusammengenommen also schon fast so komfortabel wie Anwendungsentwicklung in einer passenden IDE  :D
30
Lowlevel-Coding / Grub - Format Problem
« am: 31. March 2006, 22:51 »
arg, der Fehler lag ganz woanders. Der Label "MultiBoot" steht vor der align Anweisung und verweist deswegen auf eine Hand voll Null-Bytes.... und dafür hab ich jetzt fast ne Woche gebraucht das zu bemerken  ](*,)  ](*,)  ](*,)  ](*,)  ](*,)  ](*,)  ](*,)  ](*,)  ](*,)  ](*,)  ](*,)  ](*,)  ](*,)
31
Lowlevel-Coding / Aufbau des Betriebssystem?
« am: 28. March 2006, 22:54 »
Mein Aufbau sieht zur Zeit so aus. Grub lädt den Kernel der zum einen aus init Routinen und zum anderen aus einer api besteht. In der Kernel API sind aber nur funktion für Speicherverwaltung, Taskverwaltung und ein Nachrichtensystem für die Tasks. Also keinerlei Funktionen zum Textausgeben oder für Floppy Zugriffe. Das alles über Treiber, die als normale Tasks laufen, realisiert. Da der Kernel also von sich aus keine weiteren tasks von der Festplatte/Diskette laden kann, werden eine Shell (die direkt auf den Video-speicher zugreift) und ein Floppy Treiber von Grub mitgeladen (als Module). Der Kernel richtet es so ein, dass jedes Modul direkt als Task gestartet wird. Man könnte also auch gleich die GUI oder sein E-Mail Programm vom Bootloader laden lassen  8)  .

(Auch wenn ich noch nicht bei einer GUI bin... vom Design her würde das so reinpassen)

@PorkChicken: 512 Byte  :shock:  find ich schon beeindruckend
32
Lowlevel-Coding / Lowlevel-Coding lernen?!
« am: 28. March 2006, 21:22 »
Hast du schon die ersten paar Ausgaben vom Magazin gelesen? Da wird der Anfang eigentlich sehr schön beschrieben. Vom Assembler Bootloader an...
33
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
34
Offtopic / Zeichenbegrenzung in der shell
« am: 17. March 2006, 13:46 »
ld script benutze ich auch. Aber was meinst du mit mehrfach aufrufen? Um den Kernel zu compilieren rufe ich gcc so auf gcc -Wall -c --no-builtin -nostartfiles -nostdlibs -fno-rtti -fno-exceptions -I e:\galaxyOS\common\src -o ..\obj\kernel.obj kernel.cpp kann man das in mehrere aurufe aufteilen?

Krox
35
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
36
Lowlevel-Coding / Problem beim Linken
« am: 27. February 2006, 11:29 »
da ich das mit dem selbst compilieren nich so ganz hinbekomme, benutze ich jetzt djgpp und es funktioniert. Aber seltsam isses schon, das mingw kein a.out unterstützt, djgpp aber schon..... hauptsache es funktioniert, danke
37
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
38
tyndur / Lagebesprechung
« am: 27. April 2005, 15:06 »
Name: Krox
Sprache(n): C/(C++), Assembler, Pascal
Erfahrung: 1 Jahr Erfahrung in OS-Dev
Zeit: ca 1 Stunde pro Tag
bevorzugter Aufgabenbereich: Programme oder Nebenaufgaben
CommOS: Microkernel, auf Sicherheit ausgelegt, Grub-kompatibel (nicht so wichtig)
Seiten: 1 [2]

Einloggen