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

Seiten: [1] 2
1
Offtopic / Re: Windows vs. Linux - eine Geschichte
« am: 29. October 2009, 12:22 »
glaube zu mich zu erinnern das schon mal gelesen zu haben, eine quelle anzugeben wäre nett.
2
Das Wiki / Re: Umstrukturierung des Forums
« am: 12. October 2009, 23:13 »
ich habe die eine oder andere anfängerfrage gestellt und werde dies wohl noch öfters tun, und eine abteilung für anfängerfragen wäre echt super^^
finde ich zumindestens

mfg ika
3
Lowlevel-Coding / [solved] GDT nach 0x0000
« am: 11. October 2009, 14:44 »
ja, danke, ist noch einfacher
4
Lowlevel-Coding / [solved] GDT nach 0x0000
« am: 11. October 2009, 14:29 »
ich kann kann dir echt nicht sagen warum das so ist, aber es ist die richtige adresse, habs nochmal debuggt um sicher zu gehen:
mov ax,0x7c09
steht dann in der entsprechenden Zeile, und wenn ich mir danach den regdumps anschaue, dann ist auch der entsprechende wert dring.
5
Lowlevel-Coding / [solved] GDT nach 0x0000
« am: 11. October 2009, 13:56 »
Danke für den Hinweis...

Erstmal zusammenfassend:

"Problem" gelöst!

Problem:
in dem oben angegebenen Tutorial verschiebt der Autor die GDT (siehe Code) an dem Anfang des Arbeitsspeichers. Dies sollte vermieden werden da dieser Bereich nicht benutzt werden sollte.

Lösung:
cli

;Das Auskommentierte kann man löschen
;mov ax, cs ; Code-Segment holen
;mov ds, ax ; Daten-Segment gleichsetzen
;xor eax, eax ; ax = 0
;mov es, ax ; Extra-Segment auf Null setzen
;mov si, GDT ; Quelle : GDT
;xor di, di ; Ziel : 0x0000
;mov cx, 6 ; 6 DoubleWords kopieren (ganze GDT)
;rep movsd

mov ax,GDT                      ; <- neu eingefügt
mov [GDTS+2],ax             ; <- neu eingefügt

lgdt [GDTS]
Hier wird die Adresse des Anfangs der GDT in GDTS -> base eingetragen. Jetzt kann die GDT geladen werden.

mfg ika
6
Lowlevel-Coding / Re: GDT nach 0x0000
« am: 11. October 2009, 13:14 »
Danke,

wie gesagt ich habe das Beipiel des Autors genommen, weil es funktioniert. Ich bin dabei mit den code auseinanderzunehmen (wirds überhaupt zusammen geschrieben?), also learning bei doing...
Ich werde mal gleich versuchen, das Offset von GDTS (also dem Anfang der GDT) zur Laufzeit zu setzen. Das wäre eine elegantere lösung wie ich finde.
7
Lowlevel-Coding / [solved] GDT nach 0x0000
« am: 11. October 2009, 01:36 »
hallo leute,

hier ist ein ausschnitt aus dem bootloader den ich verwende (funktioniert alles wunderbar):
(Quelle: http://www.cheebi.de/c-kernel-tutorial.pdf)
cli
mov ax, cs       ; Code-Segment holen
mov ds, ax       ; Daten-Segment gleichsetzen
xor eax, eax     ; ax = 0
mov es, ax       ; Extra-Segment auf Null setzen
mov si, GDT      ; Quelle : GDT
xor di, di       ; Ziel : 0x0000
mov cx, 6        ; 6 DoubleWords kopieren (ganze GDT)
rep movsd
Ich frage mich schon die ganze Zeit warum die GDT an die Adresse 0x0000 im Arbeitsspeicher verschoben wird. Vor allem weil immer dachte der Bereich ist für mich tabu. Kann mich jemand aufklären?

[edit]
Reine Spekulation: wenn man die GDT nach 0x0000 lädt, dann muss man base nicht setzen [ base dd (0) ] dabei ist base doch das offset der GDT ? (bitte kurz abnicken).
[/edit]
8
Das Wiki / Re: Umstrukturierung des Forums
« am: 10. October 2009, 19:22 »
Hab mal diesen Thread gelesen und würde eins gern sagen: Ich bin hier neu, und das Thema OS-Design (größtenteils auch asm) ist mir genau so neu, aber ich habe mich auf Anhieb in dem Forum sehr gut zurechtgefunden. Daher wäre meine Bitte (falls es jemanden interessiert): verändert nicht zu viel.

[edit] obwohl ich bei der Anzahl der einträge im "Lowlevel-Coding" nichts gegen eine unterteilung hätte (k.A. wie diese aussehen soll) [/edit]

mfg ika
9
Offtopic / Re: Intel Manuals
« am: 09. October 2009, 17:54 »
Wenns auch ein wenig AMD für x64 und ein bisschen Ballast sein dürfen dann schau auch mal hier: http://files.asxsoft.de/public/nuke/manuals.tar.gz
Schon die Intel manuals überfordern mich z.T.^^ habe aber mal in zwei pdfs reingeselen, sehr interessante sachen. Danke.
10
Offtopic / Re: Disassembler
« am: 07. October 2009, 18:30 »
hallo leute :-D

ich muss mit Grinzen feststellen, dass einige sich sogar zu meinem Kommentar geäußert haben. xD so geil. Nun ja, was ich zur Sprache bringen wollte (mal als Klartext):
1. Mich würde mal interresieren, ob du vorhast soweit zu gehen, den Code in C oder andere Hochsprache zu überführen?
Das ist bestimmt ziemlich cool, aber ich halte das für unmachbar als Einmannprojekt. Aber auch ohne soweit zu gehen finde ich die Angelegenheit schwierig. Wobei die Idee sehr interresant ist (es gibt zwar genug disassembler, aber es gibt auch schon das eine oder andere funktionierende OS - na was sagt uns das?) und auf jeden Fall lohnenswert, wenn ich überlege was man da so alles dazulernt.
Mal eine Frage: wäre es nicht genauso interresant einen kleinen compiler für eine eigene sprache zu schreiben? also zunächst ohne Codeoptimierung u.ä.?

[offtopic]
PS: ich fand die Idee: überhaupt auf die Idee gekommen zu sein - Windows zu disassemblieren einfach nur lustig und da es schon etwas spät war, habe ich ein bisschen braingestormt (schlimmes Wort) :)
Ich kann euch beruhigen: ich finde die Idee nicht gut. Und um zuletzt auf die Frage einzugehen "warum ich ein OS entwickle (oder besser gesagt - es versuche)": weil ich das interessant finde und mir das spass macht.
[/offtopic]
11
Offtopic / Re: Intel Manuals
« am: 07. October 2009, 01:23 »
Danke sehr für die Übersicht :-)
12
Lyrisches Eck / Re: tyndur: Eine Büttenrede
« am: 07. October 2009, 01:16 »
ich glaube diese vorzügliche beschreibung muss in tyndur manual :)

[edit]
ich habe das gedicht zum 3. mal jetzt gelesen, finde es einfach geil, muss jedes mal grinzen (obwohl ich noch kurz davor am verzweifeln war, weil wieder mal was nicht klappte). :)
13
Offtopic / Re: Hosen runter! Zeigt eure OS ;)
« am: 07. October 2009, 01:03 »
mein os hat schon mal einen kernel der was in den video speicher schreiben kann (ja ich fühle mich jetzt wie gott 8-)). Hoffe mal dass ich bald mit den erten Erfolgen hier angeben kann :)
14
Offtopic / Re: Disassembler
« am: 07. October 2009, 00:40 »
ich sehe es schon kommen: "Das lowlevel OS ist nun fertig"
Problem: Was jetzt? Natürlich wird die nächstbeste Idee sein "Der lowlevel disassembler", sagt dann ein schlauer Kopf. "Was disassemblieren wir?", auch diese Frage scheint eher rhetorischer Natur: "Was wohl? Natürlich die exen von Windows". Wo die exen sind, da sind auch dll´s. Nun ja wenn das dann fertig ist was machen wir dann? Ich greife mal vor und sage einfach: wir verkaufen den Quelltext von Windows (Kernel + Restmüll) für 5$ an jeden, der bereit ist zu zahlen. Ein Teil spenden wir an wiki, den anderen Teil investieren wir in das nächste Projekt. Hier muss ich mal kurz nachdenken... ein OS haben wir, den Windows quelltext auch... hmm nun schlägt jemand vor "Wir korigieren jetzt die bugs, die unser disassembliertes Windows hat, also zumindestens so weit dass man die ganze Brühe wieder kompilieren kann". Doch der weitere Verlauf ist einem jeden klar: sogar die größten Optimisten wollen lieber realistisch bleiben und etwas anpacken was man auch schaffen kann. Wie die Geschichte weitergeht weiss ich im Moment auch nicht.

mfg ika
15
Offtopic / Intel Manuals
« am: 07. October 2009, 00:21 »
ja die alten guten manuals ^^ jeder kennt sie, jeder liebt sie (oder auch nicht).
Auf dieser Seite kann man eine CD mit allen Manuals anfordern:
http://www.intel.com/products/processor/manuals/order.htm
mir scheint es wäre kostenlos, habe das noch nicht versucht. Nicht das die wirklich dem Max Mustermann in die Musterstrasse die CD schicken und der nix mit anfangen kann. Habt ihr zufällig mal probiert sich so ne CD zu bestellen?
Und hat jemand von euch alle relewanten Manuals zusammen, bzw welche sind ein muss und welche sind auch nur am rande empfehlenswert? Ich blicke da noch nicht ganz durch mit den Versionen und dann Volume1 und dann ist es die Version 2 oder die 3A, da komm ich schon mal durcheinander, welcher intel kenner kann mir mal den weg weisen?
16
Lowlevel-Coding / Re: Problem mit textausgabe
« am: 06. October 2009, 21:30 »
Hallo,
also zumindestens bei der Textausgabe kann ich dir weiterhelfen:
void printf(char *text);
int main()
{
printf("Mega hammer geil, die Textausgabe funzt :)");
for(;;);
}
void printf(char *text)
{
char *ptr;
for ( ptr = (char *)0xb8000; *text != 0; text++ )
{
*(ptr++) = *text;
*(ptr++) = 0xe;
}
}
das hier funktioniert bei mir. Probier mal aus.

[edit]
// Print text on the screen
void kprintf(char* chBuffer, const unsigned int iXPos, const unsigned int iYPos)
{
    VGAMem = (char*) 0xB8000;
    while(*chBuffer)
    {

        *VGAMem = *chBuffer;
        VGAMem++;
        *VGAMem = 0x07;
        VGAMem++;
        chBuffer++;
    }
}
(auch wenn es wohl nichts mitt dem problem zutun hat)
was ich mich noch frage, wozu die beiden letzteren parameter da sind. oder soll mit denen später die Funktion SetCorsorPosition aufgerufen werden?
17
OS-Design / [solved] Confirm-Bit
« am: 06. October 2009, 21:05 »
das bringt schon mal mehr licht in die sache^^ finde es für meinen jetzigen stand vorerst ausreichend, danke! Mal sehen ob ich mal nen Artikel "Das Geheimnis des Conforming Codesegments" schreibe.

eine kleinigkeit noch:
Es heißt übrigens nicht confirm, sondern conform, was hier wohl übersetzt sowas wie "übereinstimmen" bedeutet.
Hmm, ich bin mir da nicht sicher aber: "confirm-bit" und "comforning code segment" aber nicht "conform-bit". confirm (Verb) ="übereinstimmen", conform (Adj.) ="übereinstimmend".
Wie gesagt, ich lasse mich gern eines besseren belehren. Habe immer "confirm-bit" geschrieben, weil ich das hier gelesen habe: http://www.fh-zwickau.de/doc/prmo/pmtutor/text/p_all3.htm (Abb. 2.5).

[edit] wie dem auch sei, ich finde meine beiden fragen sind beantwortet, an dieser stelle nochmal danke an alle :)
18
OS-Design / Re: Deskriptor Confirm-Bit
« am: 06. October 2009, 20:14 »
hmm das ganze könnte sogar sinn machen, man setzt das confirm-bit wenn man genau diesen code allen progs sowieso zugängig machen will und die ohne weiteres darauf zugreifen können sollen (war das ein satz <.<). Und dem kernel soll es aus sicherheitsgründen nicht möglich sein, zum programm code von apps zu springen, denn so müsste entweder der kerner auf ring 3 wechseln, was schwachsinn ist oder er müsste den code mit Sicherheitsstufe 0 ausführen (und das bedeutet gefahr). Werde mir mal bei gelegenheit dieses manual laden und die erwähnten stellen gründlich durchlesen. Heute wird es erstmal wohl nix, aber ganz sicher in den nächsten tagen, falls nicht jemand da auf anhieb weiterhelfen kann
19
OS-Design / Re: Deskriptor Confirm-Bit
« am: 06. October 2009, 19:56 »
danke, insbesondere für die zitate (ah einen zitat tag gibts auch^^)
Wenn in ein Codesegment gewechselt wird MIT Call Gate (egal ob Conforming oder nicht), dann geht das ganze nur wenn CPL >= DPL (Weniger Rechte als Segment).

hier heisst es also:
Zitat
Conforming code segments can be accessed from any privilege level that is equal
to or numerically greater (less privileged) than the DPL of the conforming code
segment. Also, the CPL is not changed when the processor accesses a conforming
code segment that has a different privilege level than the CPL.
"Auf ein "Conforming code segment" kann vom jeden  privileglevel zugegriffen werden, der entweder gleich oder nummerisch grösser ist (weniger privilegien hat) als der DPL [Zielsegment]."
Für mich bedeutet das also das auf Codesegment(Ring 0) von jedem anderen Ring ->ohne<- weiteres zugegriffen werden kann, dabei ist nicht notwendig das CPL zu ändern es kann 1 oder 2 oder 3 sein und es bleiben während des zugriffs.
Wenn ich etwas durcheinander gebracht habe, bitte berichtigen.

Zitat
Conforming code segment and nonconforming code segment
accessed through a call gate — The DPL indicates the numerically lowest
privilege level that a program or task can have to be allowed to access the
segment. For example, if the DPL of a conforming code segment is 2,
programs running at a CPL of 0 or 1 cannot access the segment.
<- zu meiner Schande muss ich zugeben, dass ich das nicht ganz vestehe, heisst es: "Zum Beispiel: wenn das DPL[Ziel Privileg Level] eines Codesegments 2 ist, dann können programme die auf CPL[Aktueller Privileg Level] 0 oder 1 laufen NICHT auf dieses Codesegment zugreifen"
Das find ich ja nun eine sehr interessante aussage (fall es richtig übersetzt ist) oO

[edit] mal kurz offtopic: sind schon igendjemanden hier intel manuals auf deutsch in die hände gekommen, nur melden wenn ja^^ und wenn nicht umso besser: passiv meine englisch verbessern wird sicherlich nicht schaden.
20
OS-Design / Re: Deskriptor Confirm-Bit
« am: 06. October 2009, 18:06 »
Das bedeutet also es im groben so läuft:
1. Ein Programm der Stufe 3 will ein Code aus dem Kernel ausführen der ist natürlich Sicherheitsstufe 0 deswegen springt das Prog durch ein Call Gate (klingt wie die Zahnpasta^^) zu diesem Code
2. Der Prozessor prüft das Confirm-Bit, wenn es auf:
  * 1 ist ("Confirming"-Codesegment) -> Prog bleibt auf der Stufe 3
  * 0 ist (=Codesegment), dann erhält das Programm vorrübergehend die Stufe 0.
Ändert der Prozessor die Sicherheitsstufe des Programms in diesem Moment, oder der Kernel?

[edit]
wahrscheinlich ist diese frage trivial, und wird noch erklärt wenn ich das Thema Deskriptoren zuende gelesen habe. Wenn ja, werde ich den Vorgang des Sprungs durch son Gate hier nochmal wiedergeben (ich vermute da die antwort auf meine frage).
Was aber noch bleibt ist die Frage 1 (-> siehe ganz oben), die aber keine einfache zu sein scheint.
PS: ups, habe auf benachrichtigen geklickt, sry =D
[/edit]
Seiten: [1] 2

Einloggen