Einzelnen Beitrag anzeigen

Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#5

Re: SetBit-Funktion verbessern?

  Alt 11. Jul 2004, 00:42
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
  Mit Zitat antworten Zitat