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

Seiten: 1 [2] 3 4 5
21
Offtopic / SDL unter DevC++ laufen lassen
« am: 02. May 2005, 16:06 »
Hallo,

wie der Titel schon sagt will ich SDL mal unter dem neusten DevCPP laufen lassen. Hab mir schon die neusten Bibliotheken geholt usw. ich sitze jetzt hier 3 Std. und versuche immer wieder, das zum laufen zu bringen. Alle tuts, die ich bisher fand waren für die alten versionen und nichmal da gings... meine is irgendwie 4.9.9.2 oder sowas und die SDL 1.2.8. Hab schon ~5 mal die Päckchen extrahiert usw. und jedesmal dann DevCPP wieder deinstalliert, damit das keine auswirkungen hat... ich hoffe jemand kann mir helfen,

J!N
22
Das Wiki / Ausgabe 8
« am: 30. April 2005, 15:53 »
Sodalla, da simma wieder!

Nachdem Roshl mir wieder die Erlaubniss gegeben hat, auch diese Ausgabe zu managen fangen wir also wieder an ;)

Gesucht werden Vorschläge! Was wollt ihr sehen?

Außerdem werden noch Leute gesucht, die was machen wollen! Meldet euch, mitmachen!


0. Inhalt - joachim_neu
1. Die Redaktion - joachim_neu
2. News
3. Thema der Ausgabe
4. Designtechnisches
5. Architekturtechnisches
6. Hardwaretechnisches
7. Software- & Treibertechnisches
8. Tipps & Tricks
9. Codeschnippsel
10. OS-Showcase
11. Interview
12. Kolumne
13. Bericht ausm Forum
14. Vermischtes
15. Schluss & Impressum - joachim_neu


J!N

(ich hab nen vorschlag bekommen, dass wir doch mal was über booten von CD machen könnten! kennt sich damit jemand aus?)
23
Das Wiki / Magazinsteam
« am: 16. April 2005, 20:53 »
So,

nun, nachdem die 7. Ausgabe raus ist, ist wieder ein bisschen Luft, um zu versuchen, den zweiten Teil meines Konzeptes zu verwirklichen. Dieser besteht aus der Teambildung. Ich suche also Leute, die jede Woche ein bisschen Zeit übrig haben, etwas für Lowlevel zu tun, und sich da gerne einbringen möchte.
Ich stelle mir das so vor (Vorstellung != Realität; Konzept lässt sich anpassen!), dass wir für jeden Themenbereich zwei leute haben, die dann untereinander ausmachen, wer den nächsten artikel schreibt. (es können auch mehrere sein)
Bei dem ganzen geht es darum, immer fest leute zu haben, die verlässlich das eine oder andere einbringen können, sodass nicht noch zeit bei dem planen der leute vergeht, sondern jeder geregelt seinen teil tun kann. Da geht es nicht drum, euch zu stressen! Ich werde versuchen, dass wir das so halten, dass ihr die artikel angenehm schreiben könnt und genug zeit habt, etwas zu tun, sodass einer RL-Leben nicht zu kurz kommt.

Nun, ich suche also "mitkämpfer" für das magazin in folgenden teilen:


2. News
3. Thema der Ausgabe
4. Designtechnisches
5. Architekturtechnisches
6. Hardwaretechnisches
7. Software- & Treibertechnisches
8. Tipps & Tricks
9. Codeschnippsel
10. OS-Showcase
11. Interview
12. Kolumne
13. Bericht ausm Forum
14. Vermischtes


Wer also kann, solle sich bitte melden. ich denke z.B. bei "Vermischtes" an BlueB ;)

(es geht nicht um vorschläge für die nächste ausgabe, dazu wirds nen eigenen thread geben)

J!N
24
Das Wiki / Ausgabe 7
« am: 05. April 2005, 18:21 »
so, die neue ausgabe soll also gemacht werden.
ich werde einfach mal mein konzept versuchen zu verwirklichen, jedoch den team-part außen vor lassen, da es darum geht, eine ausgabe zu schreiben und nicht zuerst ein team zu bilden und noch viel zeit ins land gehen zu lassen. hier nochmal mein konzept:


KONZEPT:
--------

Das Konzept stützt sich größten Teils auf 2 Teile, einen festen Aufbau und ein festes Team.

Aufbau:
-------

Das Magazin wird in folgende Bereiche gegliedert:
0. Inhalt
1. Die Redaktion
2. News
3. Thema der Ausgabe
4. Designtechnisches
5. Architekturtechnisches
6. Hardwaretechnisches
7. Software- & Treibertechnisches
8. Tipps & Tricks
9. Codeschnippsel
10. OS-Showcase
11. Interview
12. Kolumne
13. Bericht ausm Forum
14. Vermischtes
15. Schluss & Impressum
Jeder dieser Bereiche hat eine Aufgabe:
- Inhalt: ein normales Inhaltsverzeichniss in dem die Gliederung und der Inhalt der einzelnen Punkte festgehalten ist
- Die Redaktion: kurzer Bericht über die Ausgabe und deren Entstehung
- Thema der Ausgabe: beinhaltet den Artikel, der sich um das Thema der Ausgabe (z.B. DMA, FDD,...) kümmert
- Designtechnisches: beschreibt verschiedene Designmöglichkeiten zu einem Thema (z.B. Multitasking)
- Architekturtechnisches: beschreibt Besonder- oder Eigenheiten einer CPU (z.B. BigEndian)
- Hardwaretechnisches: beschreibt ein bisschen Hardware, wie z.B. PIT oder PIC
- Software- & Treibertechnisches: beschreibt ein FS oder derartiges
- Tipps & Tricks: beschreibt kleine Programmier- oder Hardwarekniffe
- Codeschnippsel: ein Stück kommentierter Code ohne viel drum rum, z.B. für Reboot
- OS-Showcase: stellt ein OS und dessen Features vor
- Interview: ein Interview mit einem aus der OS-Dev-Szene
- Kolumne: ein paar Worte über Gott und die (Computer-)Welt
- Bericht ausm Forum: ein Bericht über die aktuellen Machenschaften und Themen im Forum
- Vermischtes, alles, was sonst nirgends reinpasst (z.B. Gedichte, Witze, Bilder,...)
- Schluss & Impressum: Schlussworte und Daten der Redakteure

Team:
-----

Es wurd eub Team zusammengestellt, in welchem jedes Teammitglied einem oder mehreren Bereichen zugeordnet ist (immer zwei Personen pro Bereich) und für diesen Bereich oder diese Bereiche schreibt das Mitgleid dann entweder alleine oder mit dem anderen zusammen Artikel. Es ist jedem Mitglied selbst überlassen, wie viele Beiträge es schreibt, es muss nur pro Ausgabe einer da sein, von wem ist im Prinzip egal. Je nach Themengebiet dauert das Schreiben zwischen 3 Std. und 30 Min., sodass kein Mitglied überlastet ist. Dadurch ergibt sich die Möglichkeit, sehr häufig eine Ausgabe anzufertigen, weshalb die Erscheinungsperiode auf 2 Wochen gesetzt werden können müsste.


es gibt also diese punkte, zu denen beiträge geschrieben werden müssen:


0. Inhalt
1. Die Redaktion
2. News
3. Thema der Ausgabe
4. Designtechnisches
5. Architekturtechnisches
6. Hardwaretechnisches
7. Software- & Treibertechnisches
8. Tipps & Tricks
9. Codeschnippsel
10. OS-Showcase
11. Interview
12. Kolumne
13. Bericht ausm Forum
14. Vermischtes
15. Schluss & Impressum


die inhaltsangabe werde ich wohl schreiben, den redaktionsteil und den schluss sowie das impressum auch. architurtechnisches hab ich auch schon und zwar über big und littleendian. bei designtechnischem hab ich schon was über soft- und hardwaremultitasking geschreiben, das können wir verwenden. und wenn wir schon bei multitasking sind könnte ich auch was über multitasking schreiben fürs thema der ausgabe, oder aber was über den sprung in den PM, wofür ich allerdings noch nix hab. was wollt ihr lieber? für folgendes ist also schon gesorgt:


0. Inhalt - joachim_neu
1. Die Redaktion - joachim_neu
2. News
3. Thema der Ausgabe - joachim_neu : tss _ ?
4. Designtechnisches - joachim_neu : soft- & hardwaretasking
5. Architekturtechnisches - joachim_neu : big- & littleendian
6. Hardwaretechnisches - joachim_neu : pc speaker
7. Software- & Treibertechnisches - Kyoko12 : ext2
8. Tipps & Tricks
9. Codeschnippsel
10. OS-Showcase
11. Interview
12. Kolumne
13. Bericht ausm Forum
14. Vermischtes
15. Schluss & Impressum - joachim_neu


mit einem interview könnte ich vll. auch noch dienen, einem mit dem coder von menuetOS. kolumne will ich nicht schreiben, weil ichs net kann. sonst is auch noch bericht ausm forum, os-showcase, codeschnippsel und tipps & tricks. und noch was über die news, wobei da glaub ich schon genug änderungen sind, um da was zu schreiben.

ALSO! ETZ SEIT IHR DRAN! ÜBERWINDET EUCH UND SETZT EUCH 20 MIN HIN UND SCHREIBT NEN ARTIKEL FÜRS NEUE MAGA!!!

und damit das ganze auch schnell passiert denke ich peilen wir als ausgabedatum 24. april 2005 an.

J!N

EDIT: hab die neuen punkte mit eingebaut!!!
25
Lowlevel-Coding / HDD
« am: 31. March 2005, 14:41 »
hallo,

nachdem mein DMA und FDD halbwegs läuft wage ich mich nun an HDD.
dazu hab ich ein paar fragen und probleme, die trotz langer recherchen und stundenlangem lesen von tuts nicht zu beseitigen waren:

1. wie macht man das alles mit DMA? hat dazu jemand ein tut?
2. braucht man nun einen seek-command zwangsläufig oder nicht? die einen sagen "ja", die anderen "nein".
3. wenn man bootet befindet sich ja in dl das bootlaufwerk. ist damit ein physisches oder ein logisches gemeint (also laufwerk oder auch schon partitionen?)
4. auf welche form (physisch,logisch) gehen bios-ints? würd ich gerne wissen, da ich sonst meinen bootloader ggf. umschreiben muss.

vielen dank für antworten auf meine fragen,

J!N
26
Lowlevel-Coding / FDD
« am: 31. March 2005, 14:29 »
hallo,

wie finde ich beim Datentransfair von Daten zum oder vom FDC via DMA heraus, wann der FDC alle Daten erhalten und gesendet hat, also mit seiner Aufgabe komplett fertig ist? Bisher habe ich drei Möglichkeiten, von denen eine geht ;):

1. 200 Millisekunden warten. (geht)
2. Auf ein IRQ warten. (geht nicht, IRQ kommt nie)
3. Warten bis er die Results in den Ports zur Verfügung stellt. (geht nicht, sobald man sie ausließt stoppt er den Transfair, sodass etwas fehlt)

danke für antworten und ideen,

J!N
27
Das Wiki / Community-OS
« am: 31. March 2005, 14:26 »
So,

lasst hier mal eure Vorschläge und Anregungen übers Comm-OS raus. ;)

J!N
28
Lowlevel-Coding / Geradengleichungen
« am: 28. March 2005, 10:56 »
hiho,

mein post hat äußerst wenig mit os-coding selber zu tun, denke ich, aber ich brauchs trotzdem für mein OS. ich versuche gerade eine Funktion zu schreiben, die mir eine strecke zeichnet. dazu habe ich mich der mathematik und deren gleichungen bedient. ich hab zuerst ne funktion geschrieben, die mir bei nem X-Wert und 2 koordinaten den Y-Wert gibt. die funktion ergibt sich aus der Formel f(x) = x*a. Aufgelöst mit den Koordinaten ergibt sich f(x) = x*((y2-y1)/(x2-x1)). Die funktion zum zeichnen ließt etz immer schön die werte aus, addiert die koordinaten und malt dann den punkt. 2 aussetzer hat die funktion.
1. wenn der Y-Abstand größer ist als der X-Abstand, die linie also nach unten verlaufen müsste (beispiel):

X
 X
 X
  X
   X
   X

wird nur das hier gezeigt:

X
 X

  X
   X


und wenn die koordinaten etwas ungleiches haben, also etwa so:
Y1=21h
Y2=20h
X1=40h
X2=41h
dann spinnt das ding und gibt nur den startpunkt aus.

deshalb wollte ich fragen, ob schonmal jemand eine solche gleichung implementiert hat, die dann auch geht, und wie er das gemacht hat (C oder ASM is wurscht, geht nur um die theorie!)

danke,
J!N
29
Offtopic / Frohe Ostern
« am: 28. March 2005, 10:49 »
tja, der titel sagt es schon: "Frohe Ostern und besinnliche Festtage wünsch ich allen!"
30
Lowlevel-Coding / Pagefault bei TSS-Switch
« am: 22. March 2005, 10:44 »
hallo,

ich code momentan agressiv an TSS ;) hab etz routinen geschrieben, die mir 1024 TSS in der GDT und 1024 TSSGates in der GDT anlegen. hab etz das problem, dass ich von einem zum anderen task wechseln muss.
dazu hab ich einen systemtask (idle) und testweise noch einen 2. idle. der 2. hat als TSS-Werte (er ist ja inaktiv) das cr3 des kernels und die segmente des kernels und keine registerinhalte (0). wenn ich etz diesen starten will (mit "jmp 0x30:0x0000") dann bekomme ich ein pagefault mit dem errordword "0x1563". kA, weshalb. sieht so aus, als trete ein zugriffsfehler auf, deshalb handelt mein handler das auch so... ich verstehe nicht, warum das nicht geht, ich hoffe jemand kennt dieses phänomen...

mfg

J!N
31
Lowlevel-Coding / TSS Tutorial
« am: 21. March 2005, 09:42 »
hallo,

ich wollte mal fragen, ob jemand ein gutes tut über TSS kennt, welches sich um das hardwarebasierende und nicht um das softwarebasierende MT kümmert. bin im moment im urlaub, und da brauch ich lesestoff, hab zum glückn inet gefunden  8) und etz hab ich schon gegoogled und auf nondot.org und osdever.net usw geschaut, aber nirgends ist ein tut, welches sich mit mehr als nur dem TSS-aufbau beschäftigt. ich bräuchte ein paar beispiele und erklärungen, wie ich den taskwechsel auslöse, und was passiert, wenn der task gewechselt wird usw.
deswegen wollte ich fragen, ob jemand ein solches tut kennt. wenn ja, dann bitte posten.

mfg

J!N
32
Lowlevel-Coding / I'm getting confused about GDT and IDT...
« am: 18. March 2005, 07:48 »
hallo,

ich werde solangsam a bisserl verwirrt... heute hab ich mir gedacht, meine IDT und GDT im Speicher zu erzeugen, sodass ich net die fetten Tabellen im Kernel rumschleppe, sie aber trotzdem erweitern kann. Da treffe ich auf das werte Problem, dass ich nichtmehr weiß, wie groß diese Dinger werden  :oops: ... Ich weiß, dass ein eintrag 8 Bytes groß ist und man 8192 Einträge machen kann... Muss es ja, weil diese Segmentdinger nur 16 Bit sind und maximal 0xFFFF als Index aufnehmen könnten... Sind diese Tabellen dann also maximal 0x10000 groß, oder wie? Ich meine, die IDT ist ja die InterruptTabelle, und da es nur 256 Interrupts gibt... Allerdings kommen da ja noch die anderen Dinger (Call-Gates, ...) rein. Und wie zegt man dann an, welches dieser Einträge etz für welches Interrupt gut ist?

Danke für die Antworten auf diese äußerst peinliche Frage.  :oops:  Also bei der Größe bin ich mir fast sicher, würd mich aber trotzdem freuen, wenn mich einer bestätigen oder zurückweisen könnte...

J!N
33
Lowlevel-Coding / 32 Bit beim Flagregister
« am: 15. March 2005, 15:16 »
hallo,

seid wann ist eigendlich das flag-register 32bit groß? bei google hab ich nix anständiges gefunden, aber es müsste ja eigendlich schon mit dem 286er so geworden sein, dank PM... allerdings wurde 32bit erst mit dem 386er eingeführt...

danke für eine antwort,

J!N
34
OS-Design / Softwaretasking <> TSS
« am: 06. March 2005, 13:10 »
hallo,

ich wollte wissen, ob Softwaretasking komplett ohne TSS auskommt, oder nicht. ich hab gehört, man bräuchte trotzdem noch ein TSS für den kernel bei systemcalls... was is daran, stimmt das, was muss ich sonst noch so beachten, und hat hier jemand (außer Roshl) das implementiert und kann noch genaueres sagen?

danke,

J!N
35
Lowlevel-Coding / KeyboardTreiber
« am: 06. March 2005, 10:18 »
hallo,

so, jetzt hab ich mich auchmal dazu durchgerungen, einen KeyboardTreiber zu bauen. hat bisher auch sehr gut funktioniert, bin gerade dabei, das mit den Lämpchen zu machen... ich hab mir ein byte geschaffen, dass die werte der steuertasten (alt, strg, shift, scroll und num) aufnimmt und im oberen teil (den restlichen 3 bits) die flags für die kleinen lämpchen... das ganze is so aufgebaut:

(7) CapslockLight | (6) NumLight | (5) ScrollLight | (4) Strg | (3) Scroll | (2) Num | (1) Alt(Gr) | (0) Shift

es funktioniert alles wunderbar, er switcht zwischen den tastensets (normal, shift, alt(gr)) und soweiter. nun will ich also die lämpchen schalten und mache das hiermit:

irq0x01_waitforkeyb1:
in al,0x64
and al,0x02
jnz irq0x01_waitforkeyb1
mov al,0xED
out 0x60,al
irq0x01_waitforkeyb2:
in al,0x64
and al,0x02
jnz irq0x01_waitforkeyb2
mov al,[io_keyboard_status]
shr al,0x05
out 0x60,al    

problem is, dass er das garnet mag. bochs sagt:
Zitat
00014900021p[KBD  ] >>PANIC<< internal keyboard buffer full (imm)
mein echter PC reagiert einfach nichtmehr. der code schaut, ob der buffer leer is, wenn ja schreibt er seinen command rein, schaut wieder, ob er leer is, und schreibt dann die parameter rein. es funktioniert auch, in real wird das capslocklämpchen angeknipst, wenn ich auf capslock drück, aber leider halt nur einmal und danach regiert er nimmer. wo liegt mein problem? ich hab die infos aus einem buch und einem tut (http://www.nondot.org/sabre/os/files/HCI/keyboard2.txt) wo es exakt so drinne steht...

danke für hilfe,

J!N[/url]
36
Lowlevel-Coding / Shared Memory
« am: 01. March 2005, 19:45 »
hallo zusammen,

ich hab mir gedacht, dass es bei mir im system shared memory gibt. dazu hab ich mir gedacht, dass es eine tabelle gibt, in der dann alle shared memorys und deren eigentümer drin sind und ne id. bei der erzeugung bekommen dann die tasks die id und können darauf zugreifen. hab mir also gedacht, jeder shared memory is mit paging gemacht und hat sein eigenes PD und PTs. und wenn ein task darauf zugreifen will, muss er sich den zugriff sichern und dann wird einfach sein cr3 geändert. jetzt hab ich aber das problem mit dem code. wenn ich einfach das cr3 ändere, dann is ja der code vom task nimmer da, weil der is ja im anderen segment. demzufolge müsste das dann doch einen crash erzeugen... aber genauso frag ich mich wie das bei dem taskwechseln mit software is, denn da ändere ich ja auch cr3 und ab da dürfte kein code mehr da sein und das ding crashen. is mir bisher noch net kapiert. deswegen meine frage:

WARUM GEHT DAS? is der code unabhängig von paging? wie mache ich das dann im speicher? kann ich den code net mit paging behandeln, muss der also immer da sein, oder wie? danke für hilfe.

mfg
J!N
37
Lowlevel-Coding / HDD
« am: 27. February 2005, 02:08 »
hallo,

mich würd mal gerne interessieren, wie ich eine festplatte benutze. is das wie bei FDC, dass ich erstmal darauf scharfmachen muss, und motor an, und irq abwarten und co. oder is das leichter? arbeitet man da auch mit DMA oder läuft das mit portbefehlen ab? für hilfe und links währe ich sehr dankbar (ich hab schon gegoogled und so, aber vll. kennt ja jemand ein tut, das er besonderst empfehlen kann oda so!)

mfg

J!N
38
Lowlevel-Coding / lodsX und stosX in Paging und ein Problem
« am: 22. February 2005, 19:35 »
hallo,

1. kann ich mit eingeschaltetem paging überhaupt noch lodsb und stosb benutzen? wenn ja: welche adresse benutzt das dann? phys. oder virt.?? und gibbet ein befehlspaar, dass nur ein offset verwendet ohne einen selektor?

2. baue ich gerade an meinem pagefaultint. ich wills so haben, dass jedes programm kein speicher mallocen muss, sondern einfach darauf zugreifen, und das system stellt diesen dann zur verfügung. damit mein OS weiß, ob eine page auslagerbar is und ob sie ausgelagert ist hab ich noch 2 von 3 freien bits in den pageeinträgen benutzt. das sind jetzt die ehmals freien:

+-+-+-+
|0|F|S|
+-+-+-+
S zeigt an, ob eine Seite ausgelagert (1) ist oder nicht (0)
F zeigt an, ob eine Seite auslagerbar (0) ist oder nicht (1)


dann hab ich mir einen stack für freie pages gemacht und eine funktion (GetPageOffset) gemacht, die mir das offset im speicher des pageeintrages gibt, der für die addy in cr2 zuständig is. in cr3 steht das pagedir. alles sieht dann so aus:

int0x0E:
;page-fault-exception
push eax
push edi
push esi
call GetPageOffset ;offset holen
mov esi,eax ;einstellen
mov edi,eax ;einstellen
lodsd ;alten eintrag holen
push eax ;sichern
shl eax,0x16 ;auf ausgelagert prüfen
shr eax,0x1F
cmp eax,0x01
je int0x0E_swapped
pop eax ,wieder holen

mov [paging_save_esp],esp ;esp sichern
mov esp,[paging_esp] ;pagestack esp holen
pop eax ;seite holen
mov [paging_esp],esp ;neuen esp sichern
mov esp,[paging_save_esp] ;alten esp holen
add eax,0x00000003 ;stati richtig stellen
stosd ;eintragen

pop esi
pop edi
pop eax
iret ;fertig
int0x0E_swapped:
;kommt noch
                 


problem: geht nicht! bochs:

Zitat

00005008698p[CPU  ] >>PANIC<< fetch_raw_descriptor: LDTR.valid=0
00005008698i[SYS  ] Last time is 1109097285
00005008698i[CPU  ] protected mode
00005008698i[CPU  ] CS.d_b = 32 bit
00005008698i[CPU  ] SS.d_b = 32 bit
00005008698i[CPU  ] | EAX=000000ff  EBX=1000174d  ECX=ffff0c00  EDX=00000300
00005008698i[CPU  ] | ESP=0009ffef  EBP=00000000  ESI=0009ffff  EDI=01000000
00005008698i[CPU  ] | IOPL=0 NV UP DI PL NZ NA PE NC
00005008698i[CPU  ] | SEG selector     base    limit G D
00005008698i[CPU  ] | SEG sltr(index|ti|rpl)     base    limit G D
00005008698i[CPU  ] |  DS:0030( 0006| 0|  0) 00000000 000fffff 1 1
00005008698i[CPU  ] |  ES:0030( 0006| 0|  0) 00000000 000fffff 1 1
00005008698i[CPU  ] |  FS:0030( 0006| 0|  0) 00000000 000fffff 1 1
00005008698i[CPU  ] |  GS:0030( 0006| 0|  0) 00000000 000fffff 1 1
00005008698i[CPU  ] |  SS:0010( 0002| 0|  0) 00000000 00000c00 1 1
00005008698i[CPU  ] |  CS:0008( 0001| 0|  0) 00000000 00000c00 1 1
00005008698i[CPU  ] | EIP=000009f8 (000009f7)
00005008698i[CPU  ] | CR0=0xe0000011 CR1=0x00000000 CR2=0x01000000
00005008698i[CPU  ] | CR3=0x00003000 CR4=0x00000000
00005008698i[     ] restoring default signal behavior
00005008698i[CTRL ] quit_sim called with exit code 1


danke für hilfe,

J!N
39
Lowlevel-Coding / Paging
« am: 19. February 2005, 22:10 »
hallo,

ich hab mich nun entschlossen, gleich paging zu benutzen. ich hab mir also gedacht, einfach mal den ganzen speicher zu mappen, sodass alles geordnet ist. ich erstelle also ein pagedir an 0x3000 und ein paar tabellen an 0x100000. das mache ich hiermit:


mov eax,0x00003000
mov cr3,eax
mov edi,eax
mov ecx,0x00000400
mov eax,0x00100005
SetUpPageDir:
stosd
add eax,0x00001000
loop SetUpPageDir
mov edi,0x00100000
mov eax,0x00000005
mov ecx,0x00100000
SetUpPageTable:
stosd
add eax,0x00001000
loop SetUpPageTable
mov eax,cr0
or eax,10000000000000000000000000000000b
mov cr0,eax                        

danach ist also paging aktiv und der speicher gepaged. jetzt merke ich aber, dass das ding bei einem funktionscall nicht das macht, was es soll... könnte es an [org 0x500] liegen, und wie kann man das wieder aus machen?

danke,
J!N
40
Lowlevel-Coding / Ints und Paging
« am: 19. February 2005, 14:41 »
hallo,

ich hab ein problem. ich will softwaretasking machen. ich hab mir gedacht, dass ich das interface zwischen treibern einfach so mache, dass ein treiber ein freies interrupt belegen kann, und der kernel das dann auf eine routine vom treiber umbiegt. jetzt bin ich aber zu dem problem gekommen, dass ich 1. nicht weiß, wie ich angeben soll, wo sich der speicher befindet, weil der treiber ja dank paging zerstückelt werden kann und verschoben wird, und die idt is ja mit physikalischen adressen. dann müsste ich ja alles umbiegen... außerdem würde ja dann nicht auf die neue table gewechselt, sodass die ausführung total verschoben würde... wie könnte man das noch machen? ich hab überlegt, ob mein system ein eigenes "treiberaufrufsystem" bereitstellen sollte, so wie die ints mit einer tabelle, in der alles eingetragen ist, dann könnte ich das umschalten der tabellen machen, und alles würde richtig verlaufen.

mfg

J!N
Seiten: 1 [2] 3 4 5

Einloggen