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

Seiten: [1] 2 3 ... 7
1
Lowlevel-Coding / Re: delphi, array und cpuid
« am: 10. April 2009, 20:02 »
Hi,
Vor allem wegen der internen Verwaltung durch den Compiler sollten Strings nie per Hand/Inline Assembler erstellt werden. Hier empfieht es sich, einfach einen null-terminierten String (PChar/Char-Array) zu verwenden und dann umwandeln zu lassen:
(Falls Delphi 2009+ verwendet wird, muss man direkt AnsiChar und PAnsiChar verwenden)

program Project1;
{$APPTYPE CONSOLE}

var str : Array[0..12] of Char;
    VendorStr : String;

begin
  asm
    mov eax,0
    cpuid
    mov dword[str],ebx
    mov dword[str+4],edx
    mov dword[str+8],ecx
    mov byte[str+12],0
  end;

  VendorStr := str;                       // Delphi sollte erkennen, dass es sich um ein Array[..] of Char fester Größe handelt und es dementsprechend umwandeln, alternativ als PChar beschreiben: "PChar(@str)"
  Writeln('Vendor-String: ',VendorStr);
  Readln;
end.

Grüße,
Stefan
2
Lowlevel-Coding / Re: Struktur auf beliebigen Speicher anwenden
« am: 31. January 2009, 19:12 »
Ups, Problem mit else gelöst.  :-D

Ja, du irrst dich. return beendet die Funktion und führt dementsprechend auch den Rücksprung durch.
Nein, tut es nicht. Der Befehl return kopiert nur einen Wert - in meinem Fall nach -0x39(%ebp). Und das letzte "}" kopiert -0x39(%ebp) dann nach eax, führt ein leave und ein ret aus. ätsch

bitmaster

EDIT: Bzw. wenn das return ganz unten steht habt ihr recht. Aber wenn nicht, dann habe ich recht,  :-P

wie kommst du überhaupt darauf, dass return nur einen Wert in ein Register kopiert und nicht zurückspringt? Und die Assemblerbefehle ("-0x39(%ebp) ") und so sagen mir eigentlich nichts ohne zusammenhang, und wenn schon, wenn du schon C disassemblierst, solltest du wenigstens Assembler (lesen) können  :-)

Grüsse,
Stefan
3
Lowlevel-Coding / Re: Problem mit Textausgabe
« am: 28. June 2008, 11:00 »
Hi,
ich habe da mal ein wenig rumgespielt und nachgelesen. Der NTLDR hat eine Option eingebaut, um einen Bootsektor von der Partition nachzuladen, worauf der NTLDR selber liegt. Diese Partition wird wohl einfach mit C:\ bezeichnet. Dieser wird dann an die Adresse 0x7C00 geladen.

Grüße,
Stefan
4
Lowlevel-Coding / Re: Problem mit Textausgabe
« am: 27. June 2008, 15:59 »
hi,
darf ich mal den Eintrag in deiner boot.ini sehen ? :)

Danke,
Stefan
5
Das Wiki / Re: Sinkende Aktivität
« am: 01. May 2008, 17:24 »
6
Offtopic / Re: OS dev Tree
« am: 02. December 2007, 20:33 »
hi,
also das mit CheckBoxen zu realisieren ist schon sehr seltsam, respekt dass man auf sowas überhaupt kommen kann  :-D

normalerweise sind dafür wenn dann RadioButtons angebracht, in diesem fall passen aber eher Tab- oder PageControls oder normale Buttons (evt SpeedButtons in Delphi).

Grüsse,
Stefan
7
Offtopic / Re: OS dev Tree
« am: 26. November 2007, 20:16 »
hi,
ich meine, dass wenn du schon die Informationen zusammensuchst, diese dann lieber auf einer website unterbringen solltest als in einem Windows-only-unhandlichen Programm :)

Resourcen machen die EXE Datei so groß, lager sie lieber zur Laufzeit in eine extra Datei aus, wenn du dich für das Windows-Format entscheidest.

hmm die GUI schaut irgendwie nicht schön aus, da kann man keine richtige Kritik geben, aber es ist unhandlich wenn sich extra Fenster öffnen und kein Schließen/Minimieren-Button oben ist, ect.

Grüsse,
Stefan
8
Offtopic / Re: OS dev Tree
« am: 26. November 2007, 16:07 »
hi,

hmm ich hab keine eigenständige Dateien sondern nur eine .exe gefunden, aber vielleicht liegts daran, dass ich nur die erste Version angeguckt hab :)

mich würde aber dennoch interessieren, wieso du ein Windows-Programm vor einer Website-basierenden Informationsquelle stellst? Welchen Vorteil hat dies denn ?

Grüsse,
Stefan
9
Offtopic / Re: OS dev Tree
« am: 26. November 2007, 08:25 »
hi,
hmm ob so ein Programm wirklich besser ist als eine Website-ähnliche Informationsquelle haben wir ja schon früher mal diskutiert  ... :-)

Aber mit Delphi könnte man die GUI wesentlich eleganter gestalten und auch die Informationen im selben Fenster anzeigen anstatt in einem neuen.

Wieso speicherst du die Informationen als Resourcen und nicht als eigenständige Datei/Dateien ?

Grüsse,
Stefan
10
Lowlevel-Coding / Re: Drucken
« am: 13. October 2007, 19:22 »
Hi,
ich hab mich damit noch nie beschäftigt, aber z.B. Windows hat ja duzende von Druckertreiber mitgeliefert, von fast allen Herstellern für jedes Modell, insofern denke ich nicht, dass es da Standards gibt (zumindest nicht für moderne Sachen mit Grafik, ect...; bei nur gleichgroßem Text könnte das natürlich anders sein).

Grüsse,
Stefan
11
Lowlevel-Coding / Re: V86 Modus
« am: 04. September 2007, 10:34 »
hi,

probier es doch erstmal mit Befehlen, die weniger machen wie z.B. "jmp $" (= 0xEB, 0xFE).

für Interrupts im V86 Mode brauchst du soweit ich mich erinnern kann einen V86-Handler (im Kernel, der im ProtectedMode im GPF-Handler sitzt), da ein "int 0x10" ein GPF (Exception 13) hervorruft. In dem Handler musst du die Adresse und das Segment dann selbst "hineinschreiben" als Rücksprungsadresse. (im V86-Handler musst du auch DS,ES,.. neu laden, da diese vom V86-Task erhalten bleiben (und DS = 0 im PMode ist ungültig).

Grüsse,
Stefan
12
OS-Design / Re: Wie ist der Weg von den Ideen zum System?
« am: 05. August 2007, 22:35 »
klar  :-D
13
OS-Design / Re: Wie ist der Weg von den Ideen zum System?
« am: 05. August 2007, 20:36 »
hi,
je nach dem was du machen willst. Wenn du bei einem Dual- bzw QuadCore CPU nur einen Core nutzen willst, musst du gar nichts machen, ansonsten musst du die anderen Cores per APIC aktivieren und initialisieren.

mfg,
Stefan
14
Lowlevel-Coding / Re: Cursorposition aendern?
« am: 03. August 2007, 10:36 »
hi,

ups ja du hast Recht *g*

Grüsse,
Stefan
15
Lowlevel-Coding / Re: Cursorposition aendern?
« am: 02. August 2007, 23:45 »
hi,
auf der von dir geposteten Webseite wird ja geschrieben, dass die Steuerregister 14 und 15 von Bedeutung sind (die je 8-Bit, also 1 Byte groß sind).
Du steuerst das Steuerregister 14 an und schreibst dort aber ein DWord rein (4 Bytes), das geht nicht.

Mein alter Assemblercode schaut so aus:

; Steuerregister 14 auswählen
mov dx,0x3D4
mov al,14
out dx,al
; In Steuerregister 14 das LowByte des Cursorwertes reinschreiben
mov dx,0x3D5
mov al,[LowByte]
out dx,al
; Steuerregister 15 auswählen
mov dx,0x3D4
mov al,15
out dx,al
; In Steuerregister 15 das HighByte des Cursorwertes reinschreiben
mov dx,0x3D5
mov al,[HighByte]
out dx,al

Grüsse,
Stefan
16
Offtopic / Re: ToasterOS
« am: 08. July 2007, 19:22 »
und Free-Space !

na ja man hätte halt auf seiner Seite mal spenden sollen ...  :-D

Grüsse,
Stefan
17
Lowlevel-Coding / Re: Wieso rebootet bei diesem Code Bochs?
« am: 17. June 2007, 18:25 »
hi
achso, na ja ich denke das jmp 0x8:0x68 kommt von dem Code:

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

du hast ja keine Offsetadresse ala [ORG 0x???] angegeben, dann assembliert der Assembler das so als wenn der Code an Adresse 0x00 liegt.
Zwar hast du das cs und ds segment richtig gesetzt, aber wenn es um ein direkten Wert von einem Label geht, so nützt dir das nix mehr  :-D

Grüsse,
Stefan
18
Lowlevel-Coding / Re: Wieso rebootet bei diesem Code Bochs?
« am: 17. June 2007, 17:49 »
jmp      0x8:0x10000 + PMODE2   ;Sprung in das "neue" Codesegment
0x10000 ist kein 16-Bit Wert mehr, auch wenn noch was dazu addiert wird *g*

Grüsse, Stefan
19
Lowlevel-Coding / Re: Cursor setzen
« am: 13. May 2007, 22:42 »
hi,
an der Stelle, wohin der Cursor hin soll, was steht da denn für ein Farbwert/Attributewert/"ka wie man das nennt"-Wert ?
Es sollte zumindest kein Schwarz auf Schwarz dastehen (0x00) :)

mfg,
Stefan
20
Lowlevel-Coding / Re: V86 Tasks
« am: 03. May 2007, 17:43 »
hi,
ja ein V86 Task *muss* im Ring 3 laufen.
Daher müssen die Segmentregister CS und SS auf Deskriptoren vom Ring 3 zeigen.

mfg,
Stefan
Seiten: [1] 2 3 ... 7

Einloggen