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
1
Lowlevel-Coding / Re: nur 2 GiB trotz 64 bit
« am: 23. February 2008, 18:26 »
schade schade... hab grade schon in den gcc manuals nach nem compiler-switch gesucht, aber --long-calls gibt nur für Mips oder so... nix für normale x86-64er... nagut, dann organisier ich meinen Speicher mal nen bissl um, dann wird das wohl. Danke für die Hilfe
2
Lowlevel-Coding / Re: nur 2 GiB trotz 64 bit
« am: 23. February 2008, 15:45 »
Aha, also ist es praktisch eine Beschränkung des elf formats? Oder anders gesagt, gibt es ein Objekt-Format mit richtigen 64bit Relocations?

Achja, das Problem an sich lässt sich so lösen:
mov rax, KernelMain
call rax
Bei solchen Relocs, wo ld nicht weiß, dass es ein Funktions-Pointer ist, funktioniert es  :roll:
3
Lowlevel-Coding / Re: nur 2 GiB trotz 64 bit
« am: 23. February 2008, 12:21 »
hm, und ich dachte immer, diese 2GiB Beschränkungen wären nur bei 32 bit (bzw halt 31 bit + sign). Einen Effekt hat -mcmodel bei gdc für mein Problem nicht. Nagut, dann schiebe ich erstmal den Kernel halt etwas nach unten, auch wenn es mein Speicher-Layout auseinander wirft. Baer warum gibt es diese Begrenzungen überhaupt, wenn alle Zeiger (und auch size_t) 64 Bit breit sind?

Und nochwas: Wenn ich zur Laufzeit manche Daten nach weit oben mappe (48 Bit virtuelle Addressen sollte man schließlich ausnutzen :) ), funktioniert das?

achja, aber danke schonmal für die Hilfe...
4
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?
5
Lowlevel-Coding / Re: Wo ist mbchk?
« am: 23. February 2007, 23:12 »
kannst ja mal einfach deinen code für den header herzeigen ;) sollte ja nicht alzu lang oder unübersichtlich sein
6
Offtopic / Re: D
« am: 27. January 2007, 16:35 »
Wofuer brauchst du das denn?
Aus dem selben Grund, wofür man das bei C/C++ macht (gcc kann ja mit -M sowas generieren). Damit, wenn man ein Sourcefile ändert, automatisch festgestellt wird, was neu compiled werden muss. Aber Bud müsste die Lösung sein, thx :)
7
Offtopic / Re: D
« am: 26. January 2007, 19:03 »
Wollte es auch mal ausprobieren, und so vom ersten eindruck gefällts mir einfach gut :) . Besonders *.d files direkt wie shell scripts auszuführen (mit #!/bin/xyz inner ersten zeile) find ich genial. Aber mir fehlt die Möglichkeit, Abhängigkeits Dateien (gibts für die nen Namen? xD) für make zu generieren... oder weiß jemand ob es das doch gibt?
8
Offtopic / Re: problem mit loop device
« am: 28. December 2006, 00:24 »
das war ja einfach  :-) kannte sync noch gar nich.... Danke!
9
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)
10
Offtopic / Re: Welches Betriebssystem verwendet ihr zum proggen?
« am: 27. December 2006, 16:00 »
Ich benutze Ubuntu Linux. Suse funktionierte nicht richtig mit meiner Netzwerkkarte, Debian war mir (damals, ich ichs versucht hatte zumindest) zu kompliziert, und Ubuntu funktionierte einfach, also bin ich geblieben :) .
Von Windows bin ich weg (habs noch zum zocken installiert), einerseits weil mir das alles-ist-eine-datei-in-einem-einzigen-baum unter linux so gut gefällt, weil die meisten meiner programme auf linux "nativer" laufen (gcc, ld etc), und wegen der Konsole (obwohl mir unter windows natürlich net klar war, das nen graphischer explorer nich das praktischste is^^)
11
Offtopic / Re: ein Jahr endet, ein neues beginnt, 2007?
« am: 23. December 2006, 18:31 »
Zitat
Was erwartet ihr euch vom neuen Jahr?

Von Vista war ich schon 2006 mit der RC1 begeistert (von Inkompatibität zu alten Sachen mal abgesehen). Eigentlich zwar nur wegen des Optischen, aber das sollte ja auch wichtig sein, wenn man viele Stunden täglich damit zubringt. Aber da ich kurze Zeit später vollständig auf Linux gewechselt bin erwarte ich am meisten Ubuntu 7.04 mit xgl/compiz, d.h. 3D Desktop mit wenigen Mausklicks einrichten, da kann nichtmal Aero was gegensetzen. Achja, und nen 64bit Prozessor, den ich mir im Laufe des Jahres wohl endlich zulegen werde :)
12
Lowlevel-Coding / Re: Möglichkeiten des Textmodes??
« am: 19. December 2006, 21:49 »
kann das von FalShen nich so stehen lassen  :-D
Grub kann nichtnur Mode 12h/13h, sondern jeden vesa Modus (über vbe) initialisieren. Nur is das in der offiziellen version noch nicht implementiert, gibt aber nen patch (den ich auch benutze). Grub gibt dir auch gleich nen Info Block mit FarbTiefe/Auflösung/BufferAdresse.
13
Lowlevel-Coding / Re: Bootloader der C Kernel lädt
« am: 08. November 2006, 09:52 »
C Kernel heißt (fast) immer, dass es 32-bit protected Mode sein soll (gcc kann keinen 16bit Code erstellen). Also sollte die Reihenfolge ungefähr so aussehen:

1. Bootloader lädt (mithilfe von Bios-Interrupts) den Kernel
2. Bootloader schaltet in den PMode (falls Speicher über 1MB benutzt werden soll, auch noch das A20 Gate aktivieren)
3. main() wird aufgerufen

Tutorials würde ich dir TeeJays empfehlen: www.jay-code.de. Am wichtigsten natürlich "protected mode" und "c kernel tutorial".

ps: oder du nimmst einfach Grub als Bootloader. Der lädt deinen Kernel aus praktisch jedem Dateisystem, schaltet PMode und A20 gate an, und kann bei Bedarf sogar in Grafik-Modus schalten (was im PM sonst schwierig ist)
14
Lowlevel-Coding / Re: Printing numbers
« am: 25. October 2006, 22:20 »
einen kleinen Fehler seh' ich: das
if (num >= exp)verhindert nicht nur die Ausgabe führender Nullen, sondern so wie ich das sehe auch jede weitere Null in der Mitte der Zahl.

Die meisten Implemtierungen sehen ungefähr so aus (das hier ist natürlich nicht getestet^^):
void printnum (int n)
{
char tmp[20];
int i = 0;
if (n == 0) printch('0');
else
{
while (n > 0)
{
tmp[i++] = '0' + n % 10;
n = n / 10;
}
while (i-- > 0)
{
printch(tmp[i]);
}
}
}

Und wegen dem printf()... es erleichtert die Ausgabe enorm, und so viel Aufwand ist das auch nicht, zumindest wenn man nur %d und sowas unterstützt und keine zusätzlichen Format-Angaben zwischen % und d.
Aber falls du C++ benutzt, könntest du noch einen Schritt weiter gehen und einen Stream basteln mit überladenem "<<"-Operator und so. Wenn man sich in die Syntax für Operator-Überladungen erstmal herreingefunden hat, sind die wirklichen Routinen sogar einfacher (kein printf, sondern nur eine Überladung für int, einen für uint, etc...).
Aber printf oder stream is wohl Geschmacksfrage :)

edit: da war jemand schneller mit'm schreiben  :-D
15
Offtopic / Re: grub mit vbe patch
« am: 24. September 2006, 16:29 »
juhu :-D  es funktioniert mit dem spoon image (und nebenbei hab ich noch nen ext2 windows treiber, vll kann man's ja nochmal gebrauchen^^). Danke euch
16
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?
17
Lowlevel-Coding / Module implementieren
« am: 04. August 2006, 13:14 »
Bei mir läuft der Tastatur Treiber als eigenständiges Programm, er kann also keinen Code vom Kernel mitbenutzen. Er registriert sich als erstes beim Kernel sodass er ab dann bei jedem IRQ eine Nachricht über das msg-system bekommt, in der aber keine daten stehen, den Tastatur-Port muss er selbst auslesen und auswerten.
Zusätzlich muss er sich noch die "Rechte" für die benötigten Ports von Kernel geben lassen. Das ist aber noch nicht implementiert (ATM darf noch jeder alle Ports benutzen).
Gemeinsam benutzen Code wird es nur irgentwann in Form von shared Librarys geben, aber einzelne Kernel-Module, wie du meintest hab ich nicht.

edit: alle Module, die Grub lädt werden als eigene Programme gestartet, insofern lädt Grub auch meine "Module", nur dass es eigenständige Tasks sind.
18
Lowlevel-Coding / PMode einschalten
« am: 11. June 2006, 22:23 »
19
Lowlevel-Coding / Grub - Kernel von Diskette laden?
« am: 29. April 2006, 14:52 »
ich benutz folgende menu.lst
title GalaxyOS
root (fd0)
kernel /sys/kernel.bin

das Problem ist abe glaub ich eher ext2... das wird von grub glaub ich nicht standartmäßig unterstützt. dazu brauchst du die passende stage1.5 ... weiß aber nicht wie genau das geht (benutze fat12)[/code]
20
Offtopic / C++ templates in anderer Objektdatei
« am: 28. April 2006, 18:46 »
nicht nur der compiler, auch der Linker und das Objekt-Datei-Format....
aber gut, dann mach ich es halt in in den Headerdateien....
dankeschön
Seiten: [1] 2

Einloggen