Oh warte mal. (Alles wieder löschen...)
Deine MemoryAsString() ist auch fehlerhaft. Per CopyMemory kopierst du nicht einzelne Bits, sondern ganze Bytes. Deshalb ist diese Codesequenz auch falsch:
Delphi-Quellcode:
CopyMemory(@buffer, p, 1);
if buffer then
result := result + '1'
Dh. der Output ist womöglich auch inkorrekt!
Der Output müsste stimmen. Die Funktion war nur ein Überbleibsel von meinem weiteren Test und wird an keiner Stelle benutzt (hab sie jetzt auch gelöscht).
Den Assembler Code möchte ich momentan nicht entziffern, aber ich schätze mal, da sind auch welche Fehler. Und warum das Ganze in Assembler? Geht ja auch ganz normal?!
probier
Delphi-Quellcode:
procedure XorMemBlock(Source1, Source2, Destination: PByte; Count: Integer);
begin
while Count > 0 do
begin
Destination^ := Source1^ xor Source2^;
inc(Source1);
inc(Source2);
inc(Destination);
end;
end;
Assembler Code müsste eigentlich auch stimmen. Ich brauche Geschwindigkeit. Dein Code gibt leider einen Fehler. Ich schaue mal ob ich diesen finden kann!
Vielen Dank schon mal, auch wenn ich immer noch ganz am Anfang stehe.
Edit: Ok es fehlte wirklich nur das
decrease. Und mit deinem Code funktioniert es auch. Dann muss ich wohl noch mal den Assembler-Code anschauen.
Edit2: Vielen lieben Dank! Du hast mir sehr geholfen.