
- Код: Выделить всё
procedure FillSmallInt(p : PSmallInt; count : Integer; v : SmallInt); register;
// EAX contains p
// EDX contains count
// ECX contains v
var //патч
zz : PSmallInt; //патч
asm
// push edi //было
push zz //патч
// mov edi, p //было
mov zz, p //патч
mov ax, cx // expand v to 32 bits
shl eax, 16
mov ax, cx
mov ecx, edx // the "odd" case is handled by issueing a lone stosw
shr ecx, 1
test dl, 1
jz @even_nb
stosw
or ecx, ecx
je @fill_done
@even_nb:
rep stosd
@fill_done:
// pop edi //было
pop zz //патч
end;