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

Seiten: 1 ... 12 13 [14] 15
261
OS-Design / Kernel an virtuelle Adresse laden
« am: 22. May 2005, 14:28 »
erwischt ;-) Da hat doch jemand die Specs nicht richtig gelesen. Near Calls (Opcode 0xe8) und Near Jumps (Opcodes 0xeb und 0xe9) nehmen nur relative Angaben an! Es gibt noch absolute Angabemöglichkeiten (Opcode 0xff), nur da wird die Zieladdresse aus einem angegebenen Register oder einer angegebenen Speicherstelle geladen, sprich indirekt.
Wo immer absolute Addressen angegeben werden sind Far Jumps und Calls, sprich wenn noch der Segment Selector angegeben wird. Short Jumps sind ja nur eine Kurzform der NearJumps, die allerdings auch nur 127 bytes vor oder zurück im code springen können.

Aber das mit den nicht existenten ShortCalls stimmt :)
262
OS-Design / Kernel an virtuelle Adresse laden
« am: 21. May 2005, 22:45 »
Der Prozessor nimmt die Addressen die reincompiliert sind, welche bei 0xc0000000 liegen, die physische Addresse ist nur im elf-binary vermerkt, damit GRUB weis, wo es das elf-binary hinladen soll; dort wird es auch ausgeführt! Das Problem ist nur, dass der Code bei 0x100000 läuft und alle Referenzen im Code auf 0xc0000000 zeigen, deswegen muss man auch in dieser Zeit auf alle Variablenzugriffe achten und die Addressen wenn nötig per Hand umrechnen lassen. Für Near-Jumps und -Calls ist das kein Problem, weil deren Sprungaddressen relative Werte sind und demnach unabhängig vom momentanen Instruction Pointer sind. D.h. kannst du beruhigt irgendwelche Funktionen aufrufen, solange alle Variablenzugriffe in diesen angepasst sind.
263
OS-Design / Kernel an virtuelle Adresse laden
« am: 21. May 2005, 20:05 »
Hi,

du musst eigentlich nur 2 Dinge machen: 1. dein Linkfile so umändern, das es die physische Addressen für dein Coding (0x100000) UND die virtuellen Addressen (ab 0xc0000000) angibt,

Hier ein Bsp:

ENTRY(start)

g_virt = 0xc0000000;
g_phys = 0x00100000;

SECTIONS
{
    .text g_virt : AT(g_phys)
    {
g_code = .;_g_code = .;
*(.text)
*(.gnu.linkonce.t*)
*(.gnu.linkonce.r*)
*(.rodata*)
. = ALIGN(4096);
    }
    .data : AT(g_phys + (g_data - g_code))
    {
g_data = .;_g_data = .;
*(.data)
*(.gnu.linkonce.d*)
. = ALIGN(4096);
    }
    .bss : AT(g_phys + (g_bss - g_code))
    {
g_bss = .;_g_bss = .;
*(.bss)
*(COMMON)
*(.gnu.linkonce.b*)
. = ALIGN(4096);
g_end = .;_g_end = .;
    }
}


Als zweites musst du dafür sorgen, das dein Kernel als erstes das Paging hochfährt, sprich eine PageDirectory aufsetzen und Paging anschalten. Am besten du machst das im Assembler Coding, da weis man noch am besten was am ende rauskommt. Immer von Vorteil ist es dabei 4MB Pages zu verwenden, da du dir dadurch die PageTables ersparst.
264
Offtopic / Danger !
« am: 18. May 2005, 19:36 »
T-Head hat folgendes geschrieben:

Zitat

 Wasserstoff im verhältnis 1:1 mit Sauerstoff gemischt ergibt übrigens Lachgas, was warscheinlich eh jeder weiß!


*lol*
ja wenn das einer atmet das kann es passieren, dass alle anderen lachen, weil dieses Gemisch in eingeweihten Kreisen auch als Knallgas bezeichnet wird. Diese Kreise sehen übrigens N2O sprich Stickstoff mit Sauerstoff als Lachgas an, und es wirkt :lol:
265
Offtopic / Danger !
« am: 18. May 2005, 19:24 »
magnesium
266
tyndur / [KERNEL] Aufgaben/Verteilung
« am: 18. May 2005, 18:32 »
Fürs erste mach ich mal die Verwaltung der physischen Speicherseiten, da ohne die ja eh nix anderes läuft ;-) . Denk mal das es ein Buddy-System-Allocator wird. Wer andere Vorstellung hat, bitte an mich wenden :)
267
Lowlevel-Coding / Komische Linkerfehlermeldung
« am: 17. May 2005, 21:00 »
hi togi,

also der linker meckert weil du zwar _start definiert hast, aber ihm nur start als einstiegspunkt übergeben hast, am besten du entscheidest dich für eines von beiden ;-).
für die 2te fehlermeldung: hast du [bits32] in deinem assembler file drin stehen?wenn nicht solltest du das reinschreiben.

gruß

n3Ro
268
tyndur / Fragen zu: SDK Release Milestone 0
« am: 17. May 2005, 20:40 »
ja, schau am besten mal in der andere milestoneforum ;-) . 2 files und am ende die nachricht glaub ich.
269
tyndur / Fragen zu: SDK Release Milestone 0
« am: 17. May 2005, 20:08 »
okay, die neuen sources funktionieren bei mir auch ohne probleme. (sowohl die vorkompilierten sachen als auch die selbstkompilierten)
@ ddr-ram: was ist denn der fehler?
270
tyndur / Fragen zu: SDK Release Milestone 0
« am: 17. May 2005, 19:32 »
so, nachdem ich jetzt die warscheinlich einzige diskette gefunden habe, die ich noch habe (ja ja die guten alten disketten ;-) ) hab ich mal schnell das image draufgespielt und meinen athlon rechner neu gebootet ==> und es geht.
jetzt bleibt nur die frage ob wir auch alle das gleiche SDK benutzen, meines ist von gestern 22:16.
was habt ihr für athlon kerne? ich hab nen barton.
271
tyndur / Fragen zu: SDK Release Milestone 0
« am: 17. May 2005, 19:18 »
auf meinem PII - 350Mhz 96MB Ram funktioniert es auch, allerdings auch von HDD und mit grub 0.95. ich würd fast sagen das image ist corrupt, der grub ist buggy oder der compiler haut was falsches ins executable
272
tyndur / Fragen zu: SDK Release Milestone 0
« am: 17. May 2005, 19:07 »
hi, also ich würde dass problem nicht im coding suchen, da es bei mir funktioniert! btw. ich habe einen Athlon XP 3000+ mit 1,5 GB Ram und da läuft es! allerdings hab ich es mit meinem eigenen grub 0.95 von der festplatte laden lassen, und ich hab es mit meinem gcc compiliert, der sich ja scheinbar leicht von der windows version unterscheidet.
an welcher stelle tritt denn der fehler genau auf ?
273
tyndur / [KERNEL] SDK Release Milestone 0
« am: 16. May 2005, 17:27 »
ich benutze nur linux und werd mir deswegen meine eigenen scripts dafür bauen, aber wenn noch jemand unter linux arbeitet kann ich diese gerne zur verfügung stellen :-)
274
tyndur / [KERNEL] SDK Release Milestone 0
« am: 16. May 2005, 17:21 »
kleine Frage, benutzt ihr alle ein viel verwendetes Betriebssystem von M$. weil mir nur grad aufgefallen ist dass das build system in diesem Archiv nur für W*nd*ws ausgelegt ist?
275
mit db,dw und dd kannst du den assembler(-compiler) umgehen und direkt daten bzw. code in deine ausführbare Datei reinschmeißen; der zweite Buchstabe steht dabei nur für die Länge des Datenworts:

b = byte / 8bit
w = word / 16bit
d = doubleword / 32bit

in deinem Fall gibst du damit direkt den Opcode für deinen Sprungbefehl an, welcher da wäre 0xea. Dieser verlangt dann noch, je nach Modus der CPU, zuerst ein Offset   (neue Addresse im Segment) und danach den Selector in deiner GDT oder LDT (halt das neue Segment).
276
Zitat


   db      0xea            ;FAR-JUMP zum Codesegment
   dw      PMODE
   dw      0x8



probier doch mal ein dd PMODE, du springst doch schließlich in ein 32 bit Segment, da muss natürlich auch der Offset 32 bit sein ;-)
277
tyndur / Namens-Abstimmung zum CommOS
« am: 16. May 2005, 16:39 »
Bei LOST fühlt sich wenigstens jeder Anwender geborgen :D
278
Lowlevel-Coding / C++ Pointer auf Funktionen
« am: 15. May 2005, 13:04 »
Funktional betrachtet macht es Sinn, aber nicht Objektorientiert. Du brauchst die Funktionen auch nicht beim compilieren drin haben. Das Programm muss nur wissen, wie die abgeleitete Klasse die es dazu lädt angesprochen werden muss, und dass sagst du dem Programm indem du es als einen Pointer auf seine Oberklasse defninierst.
279
Lowlevel-Coding / C++ Pointer auf Funktionen
« am: 15. May 2005, 12:50 »
Hi Roshl,

wenn du für dein Programm keine wirkliche Objektorientierung verwendest, dann solltest du C für das Programm benutzen, denn da geht es so wie du denkst.
In C++ macht es keinen einzelne Methoden während der Laufzeit auszutauschen. Dafür hast du aber die Möglichkeit eine ganze Klasse auszutauschen. Du kannst ja in deinem Programm eine Dummy oder auch abstrakte Klasse für deine Funktionalität implementieren und dann davon abgeleitete, voll funktionsfähige Klassen zur Laufzeit nachladen. Das funktioniert auf jeden Fall, ich weis nur nicht ob dein -problem so designt ist, dass es sich damit lösen lässt.

Gruß
n3Ro
280
tyndur / KERNEL-Team
« am: 14. May 2005, 21:50 »
Hi,

also mich mich verwirrt Paging kein Stück 8) . Würde beim Kernel Design/Coding mitmachen (CoreTeam).

Gruß
n3Ro
Seiten: 1 ... 12 13 [14] 15

Einloggen