3
votes

The word has it FillChar is about the fastest way to fill a patch of memory with bytes of the same value (not zero, for that there's ZeroMemory), but is there an equivalent to fill memory with a sequence of the same (four byte) integer or cardinal value? Something like FillInt or FillLongWord?

1
Note that ZeroMemory is not faster than FillChar. Look at the implementation of ZeroMemory in Windows.pas to immediately understand why.Rob Kennedy

1 Answers

4
votes

FillDWord is in some Pascal implementations (FreePascal here), don't know if it's in Delphi.

Maybe some simple assembler implementation?

procedure FillDWord( var Destination; Count: Integer; Value: DWord ); 
assembler; register;
asm
  push edi
    mov  edi, eax  // assign Destination
    mov  eax, ecx  // assign Value
    mov  ecx, edx
    rep  stosd
  pop edi
end;

... or some asm expert could give a better one...

You could also look at the implementation in FreePascal.