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

Seiten: [1] 2 3
1
Lowlevel-Coding / Re: IDT in C?
« am: 22. March 2007, 15:32 »
OK Than ks!
2
Lowlevel-Coding / IDT in C?
« am: 22. March 2007, 14:57 »
Hallo Leute, kann man eine IDT in C schreiben?
Wenn ja, passt das mit folgendem Code?
:

void IDT
{
short int Limit;
int Base;
char IDT[255*8];
Limit=255*8;
Base=&IDT;
return
}
3
Lowlevel-Coding / Re: Code som richtig?
« am: 01. February 2007, 22:18 »
Nun, siehts schon besser aus !danke Jetzt werd ich den Code mal testen und das was nicht funktioniert posten!(Ist sehr wahrscheinlich)
bits 16
jmp Start
GDT:
GDTSTRUC STRUC
Limit dw 24d
BaseAdr  dw 10000h+Null_Deskriptor
GDTSTRUC ENDS
Null_Deskriptor:
Code_Deskriptor:
Stack_Deskriptor:
gdt_adr GDTSTRUC ?
Start:
cli
LGDT gdt_adr
mov eax,cr0
or eax,1 ; setzt PE-Bit (Bit 0)
mov cr0,eax
jmp 8h:Protected_Mode
bits 32
Protected_Mode:
jmp Protected_Mode
4
Lowlevel-Coding / Re: Code som richtig?
« am: 01. February 2007, 21:41 »
Jetz besser?
Ach übrigens, das da oben war ziemlicher Blödsinn. Ich verwende eh einen Bootloager der den Kernel nach 10000h fervrachtet und ds und soweiter initialisiert!

bits 16
jmp Start
GDT:
GDTSTRUC STRUC
Limit dw 24d
BaseAdr  dw 10000h+Null_Deskriptor
GDTSTRUC ENDS
Null_Deskriptor:
Code_Deskriptor:
Stack_Deskriptor:
gdt_adr GDTSTRUC ?
Start:
LGDT gdt_adr
mov eax,cr0
or eax,1 ; setzt PE-Bit (Bit 0)
mov cr0,eax
jmp 8h:Protected_Mode
bits 32
Protected_Mode:
jmp Protected_Mode
5
Lowlevel-Coding / Code som richtig?
« am: 01. February 2007, 21:16 »
Also, ich hab hier schon lang nix mehr geschrieben, weil keine Zeit für OS-Coding. Allerdings werde ich jetz bald wieder Zeit haben und auch einen Testrechner! :-o
Jetz hab ich mal schnelleinen Kernelzusammengefrickelt, der zumindest mal den Pmode einschaltet und sich dann aufhängt. Nur hab ich wie gesagt lang nix mehr gemacht und auch nochkeinen Testrecheneer. Daher wäre es sehr nett, wenn einer der Experten mal schnell prüft, ob der Code zumindestens in der Theorie, so richtig ist!

org 0x7C00
bits 16
jmp Start
GDT:
GDTSTRUC STRUC
Limit dw 24d
BaseAdr  dw ?
GDTSTRUC ENDS
Null_Deskriptor:
dw 0
dw 0
dw 0
dw 0
Code_Deskriptor:
Stack_Deskriptor:
gdt_adr GDTSTRUC ?
Start:
Adresse:
xor eax,eax
mov ax,seg Null_Deskriptor
shl eax,4
add ax,offset Null_Deskriptor
mov [gdt_adr.BaseAdr],eax

P Mode Einschalten:
LGDT gdt_adr
mov eax,cr0
or eax,1 ; setzt PE-Bit (Bit 0)
mov cr0,eax
db 0EAh
dw Protected_Mode
dw 1h
bits 32
Protected_Mode:
jmp Protected_Mode
Is nur das Grundgerüst, also last euch nicht stören, das da noch die Bootsektor Signatur und so weiter fehlen!
6
Offtopic / Das Ende von bitmaster...
« am: 19. August 2006, 00:51 »
Hey ich bin kein Rotz, nur weil ich noch nicht sehr weit bin... :roll:  :evil:
7
Lowlevel-Coding / Qemu eine Video-Modus Datei zuweisen?!
« am: 12. August 2006, 19:56 »
Benenn die Datei in den Standardnamen für das Videobios um. Müsste klappen! :wink:
8
Offtopic / KDE unter Windows
« am: 11. August 2006, 15:46 »
Von Blackbox, gibts ja schon nen nativen Port!
9
OS-Design / OpenGL für GUI?
« am: 06. August 2006, 01:26 »
*schäm* Ich kann einfach nicht anders! :cry:
Achja, offensichtlich gibt es in diesem Forensystem keine Smiliebegrenzung? Oder? :?
10
OS-Design / OpenGL für GUI?
« am: 05. August 2006, 21:42 »
Ich glaube er meinte die Profi-OpenGL-Grakas. Die kosten rund 1000-3000€, sind mordsmäßig schnell in der OpenGL-Berechnung usw. . Ich nehme mal an, er wollte darauf hinaus, das diese Grakas die OppenGL-Instruktionen direktverarbeiten können, weiss aber net, ob das irgendwie geht :? Sähe in den Mindestanforderungen fütr sein OS auch n bissle komisch auis:
    CPU: 80386 oder kompatibel.
    RAM: 2MB
    Graka: Profi-OpenGL-Karte. Damit das OS läuft muss sie mindestens 1500€ gekostet haben
    [/list:u] :lol:  :lol:
11
Argh! Das gibts doch nicht! Ich hab jetzt den Bootloader dr Ersten Ausgabe und den Kernel von TeeJays Tutorial unverändert übernommen! Ergebnis: Das gleiche! Am Prozessor kanns aber nicht liegen, isn Pentium 2, hat also auf jeden Fall alles was man für nen guten Sprung in den Protected Mode braucht!
12
Ja, der Kernel liegt an der Adresse 0x1000. Ich hab also 0x10000 addiert, das Ergebnis ist allerdings das gleiche. Ich habs auch schon in Qemu probiert. Der bleibt einfach stehen. Also laut "info registers" ist GDT noch null, also dürfte er dort oder früher hängen bleiben. CS und so weiter hat allerdi gs schon die richtigen Werte, woraus ich schließe, das er irgendwo mitten im Kernel steht, ich weiss nur nicht, wo genau! Kann man mit Qemu vielleicht wie mit Bochs in einen Debug-Mode schalten. Oder zumindest die aktuelle Assembleranweiszung auslesen? Ich komm nähmlich nicht dahinter, wo der Fehler liegt!
13
Also den Bootsektor hab ich von der ersten Ausgabe übernommen. Das ist ein "Kernel". Das heisst, Base ist NULL_DESCRIPTOR+CS oder? In meinem Fall aber dann NULL_DESCRIPTOR+0x1000
14
Offtopic / Re: Andere C++ Compiler ausser g++?
« am: 28. July 2006, 18:11 »
Zitat von: taljeth
Zitat von: Legend
Gibt es noch andere freie, gute C++ Compiler ausser g++? Ich finde da nicht so viel ...


Überlesen :oops: !
15
Also ich hab jetz meine ersten Zeilen Programmcode geschrieben. Sie sollen ein den PM schalten und ein Zeichen ausgeben. Nun rebootet mein Testrechner aber immer gleich, wenn ich von der Diskette boote. Ich hab den Bootloader unverändert von der ersten Ausgabe übernommen und die Deskriptoren mit Teejays Programm berechnet ( Nur vorrübergehend, ich werd die Werte der Deskriptoren später selber berechnen ! ).
Hier der Code:

[Bits 16]
jmp start

NULL_DESCRIPTOR:

dd 0
dd 0

KERNEL_DESCRIPTOR:

dw 6FFFh
dw 1000h
db 0
db 98
db 40
db 0

DATEN_DESCRIPTOR:

dw 0x1FFF
dw 0x8000
db 0
db 96
db 40
db 0

GDT:

Limit dw 23
Base  dd NULL_DESCRIPTOR+0x10000

start:
cli
lgdt [GDT]
mov eax, cr0
or eax, 1
mov cr0, eax
db 0eah
                dw Protected_Mode_Test_Ausgabe_Viel
                dw 8
[Bits 32]
Protected_Mode_Test_Ausgabe_Viel:
mov [0xB8000] , byte "A"
mov [0xB8001] , byte 7
jmp Protected_Mode_Test_Ausgabe_Viel
16
Offtopic / Andere C++ Compiler ausser g++?
« am: 28. July 2006, 13:27 »
VC++6.0 wenn du die Lizenz bezahlst. Oder schau mal auf die Borland Webseite! :wink:
17
Lowlevel-Coding / Positionen ?
« am: 28. July 2006, 13:25 »
Also, wenn ich Multitasking mache, möchte ich für jedes Programm drei Bereiche anlegen: Einen Hauptbereich wo das Programm hingeladen wird, einen Stack und einen frei benutzbaren Bereich. Da muss ich dann ja jedesmal 3 Deskriptoren anlegen, denn ich möchte ja nicht alle Programme wild durcheinander in einem einzelnen Deskriptor-Bereich haben. Das Kernel Datebnsegment zur Laufzeit verändern ist aber nicht so einfach! Ich könnte das natürlich auch über Paging lösen, also jedes Programm bekommt bestimmte Pages.
18
Lowlevel-Coding / Positionen ?
« am: 27. July 2006, 19:08 »
Zitat von: bluecode
Zitat von: Noobtotal
Kernel: 1000-7FFF

edit: Ich würd keine feste Größe für den kernel erzwingen.  (btw. du könntest ruhig angeben, dass die Angaben ist hex sind ;) )

Zitat von: Noobtotal
Für jeden Bereich gibts einen passeneden Deskriptor.

Ich würd das nicht machen. Ich würd die Deskriptoren bei 0 beginnen lassen und bis zum ende des speichers gehen lassen. Dann brauchst nur 2 stück: einen dpl0 code und einen dpl0 data. Ich würd außerdem die GDT & IDT ins kerneldatensegment einbauen und nicht extra Platz irgendwo fest zu reservieren.


Ich meinete eigentlich eh, das es zu den von mir angegebenen Bereicheneinen Deskriptor gibt: Kernel und Stack.
Deskriptor im Kernel-Datensegment: Wär nett, wenn du mir dann einen Beispielcode gibst, wie ich dann die Deskriptoren später für Multitasking dynamisch anlegen soll!
19
Lowlevel-Coding / Positionen ?
« am: 27. July 2006, 16:00 »
Lineare Adressen. Wie ist das:
    Kernel: 1000-7FFF
    Stack vom Kernel: 8000-9000
    Tabellen (GDT,IDT,usw.): 0-0FFF
    [/list:u]?
    Für jeden Bereich gibts einen passeneden Deskriptor.
20
Lowlevel-Coding / Positionen ?
« am: 27. July 2006, 15:14 »
Also ich hab mir nun für den PM mal überlegt, wie ich die Deskriptoren setze. Ich hab also mal gedacht. 1000-1FFF istder Kernel-Bereich, mehr als genug! 2000 -9000 ist der Stack 0 ist der Anfang wo ich dann GDT, IDT und so weiter reinschreibe. Ist diese Aufteilung sinnvoll? Der Bereich über 9000 soll später für Programme Module und Treiber und deren Stacks und andere Speicherungen bereitgestellt werden!
Seiten: [1] 2 3

Einloggen