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

Seiten: 1 2 3 [4] 5 6
61
Lowlevel-Coding / Re: cls in Assembler
« am: 31. October 2009, 11:34 »
02d = 02h   :wink:

Daran wirds nicht liegen  :-D

Edit: Also bei mir funktioniert folgendes (exakt dein Code) ohne Probleme

[ORG 0x7C00]
mov ax, 40h
mov ds, ax
mov ah, 06h
mov al, 0   ; Alle Zeilen scrollen
mov bh, 7  ; Schriftfarbe
mov ch, 0   ; Zeile
mov cl, 0   ; Splate
mov di, 84h
mov dh, [di]
mov di, 4ah
mov dl, [di]
dec  dl     
int 10h

mov bh, 0   ; Bildschirmpage
mov dl, 0   ; Reihe
mov dh, 0   ; Zeile
mov ah, 02
int 10h

jmp $

times 510 - ($-$$) db 0
dw 0xAA55
62
Offtopic / Re: Windows vs. Linux - eine Geschichte
« am: 29. October 2009, 22:16 »
Musst dich ja nicht entschuldigen und ich bin dir ja nicht böse deswegen aber der Text ist in meinen Augen weder lustig noch entspricht er der Wahrheit ^^

Von daher kann ich nicht viel damit anfangen ;)
63
Offtopic / Re: Windows vs. Linux - eine Geschichte
« am: 26. October 2009, 18:02 »
Lol , ich wollte nur zeigen wie der normale Tag eines Windowsnutzers und eines Linuxnutzers aussieht , Flame ist noch nicht entstanden  :-D

Dann fang ich mal an  :-D

Benutze Windows. Und das was du da über Windows schreibst/"berichtest" finde ich ziemlich übertrieben.. Und objektiv isses jedenfalls auch nicht. Die Nachteile/Probleme von Linux werden nicht genannt oder geschickt überspielt.

Also ich kann deinen Post nicht ernst nehmen.
64
Lowlevel-Coding / Re: char nach int umwandeln
« am: 22. October 2009, 21:15 »
Naja an so etwas sollte man eigentlich nicht verzweifeln (müssen).

Zuerst den kompletten Code den du für diese Funktion geschrieben hast wegwerfen, damit du nicht beeinflusst wirst. Du fängst jetzt ganz von vorne an.

Guck mal. Nehmen wir mal die Zahl 12345.

durch 10 teilen:
1234 R 5
durch 10 teilen
123 R 4
durch 10 teilen
12 R 3
durch 10 teilen
1 R 2
durch 10 teilen
0 R 1

*) R = Rest

Wie du siehst ergeben die unterstrichenen Zahlen von unten nach oben gelesen deine ursprüngliche Zahl.

Was haben wir also gemacht?

1) Wir haben die Zahl genommen die wir umwandeln wollten und solange durch 10 geteilt bis das Ergebnis 0 war.
2) Wir haben jeweils den Rest jeder Division genommen und ihn in einen Char umgewandelt.

Wie macht man das? Nunja..

Die "0" hat den Ascii-Code 0x30
die "1" 0x31, die "2" 0x32 usw.

Wir können also einfach 0x30+R rechnen und haben dann den Ascii-Code der aktuellen Ziffer (R = der Rest der aktuellen Division)

den AsciiCode in einen Char umwandeln kannst du durch

(char)code
also in unserem Fall:

(char)(0x30+R)
3) Von hinten nach vorne gelesen ergeben diese Chars dann die gewünschte Zahl als String.

Wenn du dir das mal so durchgehst und evtl auch mal auf nem Blatt ausprobierst, dann schreibt sich der Code fast von alleine ;)

Lg
Cjreek
65
Lowlevel-Coding / Re: No bootable device.
« am: 01. September 2009, 02:53 »
Mit Flat binaries funktioniert es soweit ich weiß auch gar nicht oder?
66
OS-Design / Re: Idee zum Thema Prozessverwaltung
« am: 30. August 2009, 00:36 »
Mein Beitrag sollte zeigen, dass 100% CPU Auslastung keine gute Heuristik ist.

... was ich so übrigens auch nie behauptet habe ;)
67
OS-Design / Re: Idee zum Thema Prozessverwaltung
« am: 22. August 2009, 19:30 »
Ah jo man muss halt reagieren BEVOR es zu spät ist und nicht erst wenn speicher = 0^^
68
OS-Design / Re: Idee zum Thema Prozessverwaltung
« am: 22. August 2009, 18:07 »
Jedoch wird es nervt�tent wenn man immer gefragt wird
"Programm frisst zu viel.
Wollen sie es beenden?".

Dass nervt.
Ich finde das der normale User auch die m�glichkeit haben sollte diesen Programmen zu erlauben so viel Speicher in anspruch zu nehmen.

Das das möglich sein soll, stand ja schon in meinem ersten Post ;)

Und wie gesagt. Es wird ja nicht oft vorkommen. Nur wenn ein Programm wirklich fast das ganze OS lahmlegt durch sein verhalten.
69
OS-Design / Re: Process Emulation
« am: 22. August 2009, 16:52 »
Ein Prozess Emulator hat aber trotzdem noch einen Vorteil:

man kann Programme von anderen Systemem mit ein bisschen trixerei auch auf seinem eigenen Betriebssystem einfacher zum laufen bringen, oder sehe ich das falsch?

Gruss DaCodaaa

Ich glaube du siehst das falsch. Hauptproblem ist ja dass jedes OS seine eigene API hat. Und daran ändert so ein Emulator auch nichts.
70
OS-Design / Re: Idee zum Thema Prozessverwaltung
« am: 22. August 2009, 15:15 »
Hi,

Ich bin mir nicht sicher ob die meisten hier richtig verstanden haben was ich gemeint habe. Es geht nicht darum direkt Alarm zu schlagen wenn ein Prozess mal 100% erzeugt. Aber wenn er das auffällig lange tut oder so viel Speicher anfordert, dass der Kernel absehen kann, dass dieser Speicherverbrauch auf Dauer nicht gut geht. DANN soll der Kernel das Programm kurz pausieren und den Benutzer fragen, ob das so in seinem Sinn ist. Eben um zu verhindern, dass der Benutzer in so eine Situation gerät dass er nichts mehr tun kann.

Ich konnte z.B. Warcraft 3 nicht mehr minimieren, der Taskmanager ist nicht aufgetaucht etc. In so Situationen fände ich sinnvoll wenn der Kernel Warcraft3 unterbricht und den User fragt ob das so in Ordnung ist oder der Kernel diesen Prozess für den User beenden soll.

Sowas in der Art gibt es in Windows ja schon. Manchmal gibt es ja dieses
----------------------------------------------------------------------
  Programmtitel  (reagiert nicht mehr)                    [-] [ ] [x]
----------------------------------------------------------------------

und wenn man dann auf das Fenster klickt ploppt auch ein Dialog auf in dem man gefragt wird ob man dieses Programm beenden möchte.

Lg
Cjreek
71
Lowlevel-Coding / Re: C - Kernel wird nicht geladen
« am: 20. August 2009, 14:04 »
Hi,

versuch doch mal folgendes:

void v_print(char *msg) {
  char *vidmem = (char *) 0xB8000;
  int i = 0;
  int j = 0;
  while ((byte)msg[i] != 0)
  {
     vidmem[j] = msg[i];
     j++;
     vidmem[j] = (char)0x07
     j++;
     i++;
  }
}

Für Syntaxfehler übernehme ich keine Haftung. Bin kein C-ler  :-D
72
Hi,

Habe jetzt mal einen Artikel über binäre Datentypen erstellt:

http://lowlevel.brainsware.org/wiki/index.php/Binäre_Datentypen

Ist noch nicht fertig. Freue mich über (Änderungs-)Vorschläge und Kritik.

Lg
Cjreek
73
OS-Design / Idee zum Thema Prozessverwaltung
« am: 19. August 2009, 02:47 »
Hi,

Folgende Geschichte:

Habe eben mal wieder Lust gehabt mit dem Editor von Warcraft III eine Map zu basteln. Bzw nur etwas damit rumzuspielen. Mir kam die Idee eine Einheit zu basteln, die bei ihrem Tod 2 weitere ihres Typs spawnt.

Habe damit etwas rumexperimentiert.. Diese Experimente sind z.T. etwas nach hinten losgegangen und haben meinen PC nach wenigen Sekunden in die Knie gezwungen und ich war gezwungen den Resetknopf zu drücken, da ich es nicht geschafft habe Warcraft 3 zu beenden.

Idee:

Nun kam mir eine Idee. Ich dachte mir, dass es doch ganz nützlich wäre wenn der Kernel eine Funktion bereitstellen würde, die den angeforderten Speicher und die benutzte CPU-Power eines jeden Prozesses überwacht. Sollte nun ein Prozess (über Sekunden hinweg) eine ungesund hohe CPU Auslastung erzeugen oder auffällig/übertrieben viel Speicher anfordern (Speicherleck?), dann unterbricht der Kernel das auffällige Programm und fragt den Benutzer ob dieses Verhalten so in Ordnung/erwünscht ist und nun darf der Benutzer dann entscheiden ob er das Programm beenden möchte oder ob alles seine Richtigkeit hat und das Programm fortgeführt werden soll.

Was haltet ihr von der Idee? Natürlich sollte dieses Feature abgestellt werden können und ggf. Ausnahmen hinzugefügt werden können etc. falls einem User das zu lästig werden sollte.

Lg
Cjreek
74
Lowlevel-Coding / Re: Kleiner Assembler Thread
« am: 14. August 2009, 15:26 »
Hi,

Ich habe das Gefühl dass du alle Zeichen auf die gleiche Stelle schreibst.

Zeig mal deine Funktion um Strings auszugeben. Ich glaube du schreibst alle Chars "übereinander" wodurch nur der letzte sichtbar ist.

Lg
Cjreek
75
Lowlevel-Coding / Re: Kleiner Assembler Thread
« am: 13. August 2009, 12:47 »
Hi,

Also wenn du im 32-Bit Modus bist und alle deine Parameter über den Stack übergibst, dann musst du am Ende deiner Funktion folgendes schreiben

ret ParamCount*4 ; <-- 4 Byte(32 Bit) pro Parameter
also als Bsp:

push 20
push 50
call addieren
jmp $

addieren:
     push ebp
     mov ebp, esp
     
     mov eax, [ebp+0x08]
     mov edx, [ebp+0x10] 

     add eax, edx

     pop ebp
     ret 8   ; = ret + add esp, 8

Lg
Cjreek
76
Lowlevel-Coding / Re: Kurze Frage zu GRUB
« am: 12. August 2009, 15:59 »
hallo,

wie wär's denn wenn du den Videospeicher von hinten her durchsuchst und auf Nullen prüfst. Sobald du keine Null mehr hast weist du hier geht's weiter.

Nur ne Idee keine Ahnung ob das klappt!

Das wird eher nicht klappen, weil normalerweise da wo "nichts" steht Leerzeichen sind. Und zwar graue Leerzeichen^^

Das heißt alles wo "nix" steht da steht 0x0720. Man könnte eventuell versuchen deine Methode eben mit 0x0720 zu versuchen statt mit 0. Das könnte evtl gehn.
77
Hey,

War ja letzte Woche nicht da aber freut mich dass das Wiki jetzt erweitert wird. Hab jetzt im Moment grad keine Zeit aber ich überlege mir noch Sachen die rein könnten ;-)

Lg
Cjreek
78
Lowlevel-Coding / Re: Frage zu Segmentregistern
« am: 14. July 2009, 22:57 »
Hi,

Naja in der zweiten Zeile wird das was an Adresse

0x7FFDD000 + 0x30 = 0x7FFDD030

steht ins eax geladen. Sonst nix.

Gruß
Cjreek
79
Lowlevel-Coding / Re: Sektoren von Floppy Disk laden
« am: 11. July 2009, 15:05 »
Hi,

Also ich kopiers einfach mal hier rein. Vielleicht hilfts dir ja:

  floppy_reset:
      xor ax,ax
      xor dl,dl
      int 13h
      jc floppy_reset ; wenns nicht geklappt hat nochmal versuchen
    ret
   
    ;[DESC]  Konvertiert eine LBA Sektorangabe in das CHS Format
    ;        Siehe --> http://lowlevel.brainsware.org/wiki/index.php/LBA
    ;
    ; [IN]     #1 = Linearer Sektor (#1 = 1. Stackparameter)
    ; [OUT]  ax = Pointer zu einer CHS struktur
    lba_to_chs:
      push bp
      mov bp, sp
   
      mov ax, [bp+0x04]
   
      xor dx,dx
      mov cx,36
      div cx
      mov [0xD000],ax ; = C
     
      mov ax,dx
      xor dx,dx
      mov cx,18
      div cx
      mov [0xD002],ax ; = H
     
      inc dx
      mov [0xD004],dx ; = S
       
      mov ax,0xD000
      pop bp
    ret 2

    ; [IN]    #1  = Startsektor (LBA Format => linear)
    ;         #2 = Anzahl der zu lesenden Sektoren
    ;       
    ;         #3  = Zieldatensegment
    ;         #4  = Offset
    _floppy_read: 
      push bp
      mov bp, sp
   
      floppy_reset
   
      lba_to_chs word [bp+0x04]
       
      mov ch, byte [0xD000]    ; Zylinder nach ch
      mov dh, byte [0xD002]    ; Kopf nach dh
      mov cl, byte [0xD004]    ; Sektor nach cl 
   
      mov al,byte [bp+0x06]    ; Anzahl der Sektoren die gelesen werden sollen nach AH
   
      mov dl, 0    ; Diskettenlaufwerk = 0
   
      mov bx, word [bp+0x08]
      mov es, bx
   
      mov bx, word [bp+0x0A]
   
      mov ah, 0x02 
      int 13h     
   
      pop bp
    ret 8

Ich habe mir dann für floppy_read ein Makro definiert:

%macro floppy_read 4
    push %4  ; Offset
    push %3  ; Zielsegment
    push %2  ; Count
    push %1  ; Sektor  (LBA)
    call  _floppy_read
%endmacro

Das ganze kann man dann so aufrufen:

floppy_read 0, 1, 0xFFFF, 0x0010 ; Sektor 0 an Adresse 0x100000 (1MB) lesen 
das ganze kann man natürlich auch inne schleife packen.. muss halt immer den ersten parameter hochzählen und die Adresse um 512 Bytes erhöhen..

Lg
Cjreek
80
Lowlevel-Coding / Re: Sektoren von Floppy Disk laden
« am: 10. July 2009, 07:52 »
Mh die Sache klingt interessant. Ich werd mich am Wochenende mal damit befassen.  :-)
Seiten: 1 2 3 [4] 5 6

Einloggen