Einzelnen Beitrag anzeigen

Amateurprofi

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.041 Beiträge
 
Delphi XE2 Professional
 
#8

Re: Delphi Compiler - Mengen und Aufzählungstypen?? [INTERN]

  Alt 20. Feb 2010, 22:52
Oder man macht das in Assembler

Sei EAX=@Data und EDX=count.

Delphi-Quellcode:
bt [eax],edx // setzt CF=1 wenn das Bit count = 1 ist
bts [eax],edx // setzt CF=1 wenn das Bit count = 1 ist und setzt dann das Bit=1
btr [eax],edx // setzt CF=1 wenn das Bit count = 1 ist und setzt dann das Bit=0
btc [eax],edx // setzt CF=1 wenn das Bit count = 1 ist und "dreht es dann um"
Das schöne an diesen Befehlen ist, daß edx (also count) im Bereich −2^31 bis 2^31 − 1 sein darf.
Entsprechende Funktionen könnte man so gestalten:

Delphi-Quellcode:
FUNCTION IsBitSet(p:pointer; count:integer):Boolean;
asm
   bt [eax],edx
   setc al
end;

FUNCTION SetBit(p:pointer; count:integer):Boolean;
asm
   bts [eax],edx
   setc al
end;

FUNCTION ClearBit(p:pointer; count:integer):Boolean;
asm
   btr [eax],edx
   setc al
end;

FUNCTION ToggleBit(p:pointer; count:integer):Boolean;
asm
   btc [eax],edx
   setc al
end;
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat