http://www.freepascal.org/docs-html/rtl/system/move.html
I have a working function in assembler wich copys a memory block from sorce to destination.
Now I want it to do with the move function from unit system, but it does not work.
procedure wd_copy( s , d : pointer ; l : longint );
begin
move( s , d , l ); // does not work! Access violation errors
end;procedure wd_copy( s , d : pointer ; l : longint ); begin
if l > 0 then begin
if d < s then begin
asm
pushf
mov esi,s
mov edi,d
mov ecx,l
cld // vorwärts
rep movsb
popf
end['EAX','EBX','ECX','EDX','ESI','EDI'];
end
else begin
asm
pushf
mov esi,s
add esi,l
dec esi
mov edi,d
add edi,l
dec edi
mov ecx,l
std // rückwärts
rep movsb
popf
end['EAX','EBX','ECX','EDX','ESI','EDI'];
end;end;
end;
