Einzelnen Beitrag anzeigen

Anthrox

Registriert seit: 4. Feb 2010
14 Beiträge
 
Delphi XE Architect
 
#12

AW: C++ Operator |= in Delphi

  Alt 22. Feb 2011, 21:19
Sei mir nicht böse. Aber du schriebst:

Ich versuche gerade ein Tutorial (C++) für Hardware Breakpoint Hooks nachzuvollziehen. (Wen es interessiert: Link)
... und weißt nichts mit bitweisen und logischen Operatoren anzufangen? Das sind Grundlagen! Ich empfehle dir ganz stark ein Buch mit derlei Grundlagenwissen zu konsultieren.

Bevor man nämlich mit Registern rumspielt, sollte man wissen wie die CPU funktioniert (zumindest aus Software-Perspektive) und dazu muß man schon mindestens die genannten Operatoren beherrschen, sowie einige weitere ...
Naja, da hast du wohl recht
Ich habe mir auch schon überlegt ein gutes Buch zuzutun. (grässliches Wort )
Du hast nicht zufällig einen guten Vorschlag?
Ich habe ein Buch aber da sind eben nur die grundlagigsten Grundlagen drinne
Naja, wie gesagt wenn du 'nen Vorschlag hast, her damit!

Ja, genau so, hab deinen neuen Beitrag beim Editieren nicht gesehn.

Zum Nutzen: Man kann das verwenden, um in jedem Bit ein Boolean zu speichern, also insgesamt 8 Pro Byte. Das wird gern in Sprachen wie C genutzt, die keinen nativen Set-Datentyp haben wie Delphi. Man verwendet dann Zweierpotenzen als Maske zum Auslesen und Setzen der einzelnen Bits.

Wenn ich z.B. das 4 Bit von rechts setzen will, rechne ich einfach OR 8 , weil 8 binär 00001000 ist. Auslesen geht dann umgekehrt mit and . Man gibt die Flags meist Hexadezimal an.
Und ich habe gar nicht gesehen dass du editiert hast
Also ist das sozusagen eine kompliziertere Version von einem booleschen Wert?
(beziehungsweise mehrere boolesche Werte)

Ich weiss ja nicht aber verstehst du rein zufällig wieso das bei dem Beispiel von vorher gemacht wird?
Delphi-Quellcode:
  //HW BP Nummer 1//
  ctx.Dr0:= $ADDRESSE1;
  ctx.Dr7:= $00000001;
  //HW BP Nummer 2//
  ctx.Dr1:= $ADDRESSE2;
  ctx.Dr7:= ctx.Dr7 or $00000004;
  //HW BP Nummer 3//
  ctx.Dr2:= $ADDRESSE3;
  ctx.Dr7:= ctx.Dr7 or $00000010;
  //HW BP Nummer 4//
  ctx.Dr3:= $ADDRESSE4;
  ctx.Dr7:= ctx.Dr7 or 00000040;
$1 = 1b
$4 = 100b
sind wieder 100 binär richtig?

100b
10000b
sind wieder 10000 binär

10000b
1000000b
auch das sind wieder 1000000 binär

Wieso werden denn da nicht einfach die Werte zugewiesen, das ist ja gar nicht nötig wenn es wieder das gleiche gibt wie wenn man nichts macht
  Mit Zitat antworten Zitat