Stimmt, habe mich da im Assembler vertan und bin darauf reingefallen das ich momentan mit RISC MCUs arbeite
BTR/BTS/BT/BTC sind auf Intel CPUs sehr langsam und eine Kombination aus SHL/SHR/AND/OR/XOR ist wesentlich effizienter:
Delphi-Quellcode:
function BitSet(Value: Cardinal; State: Boolean;
Index: Cardinal): Cardinal;
asm
test
dl,
dl
mov edx, 1
jz @@1
shl edx, cl
or eax, edx
ret
@@1:
shl edx, cl
not edx
and eax, edx
end;
function BitSet(Value: Cardinal; State: Boolean;
Index: Cardinal): Cardinal;
begin
if State
then Result := Value
or (1
shl Index)
else Result := Value
and not (1
shl Index);
end;
Gruß Hagen