kolibrios-gitea/programs/network/htmlv/lib/mem.h--

96 lines
1.6 KiB
Plaintext
Raw Normal View History

//mem.Init
dword mem_Init()
{
$push ebx
$mov eax, 68
$mov ebx, 11
$int 0x40
$pop ebx
return EAX;
}
//mem.Alloc
dword mem_Alloc(dword size)
{
$push ebx
$push ecx
$mov eax, 68
$mov ebx, 12
$mov ecx, size
$int 0x40
$pop ecx
$pop ebx
return EAX;
}
//mem.ReAlloc
stdcall dword mem_ReAlloc(dword mptr, size)
{
//$push ebx ecx edx
$push ebx
$push ecx
$push edx
$mov eax, 68
$mov ebx, 20
$mov ecx, size
$mov edx, mptr
$int 0x40
$pop edx
$pop ecx
$pop ebx
//$pop edx ecx ebx
return EAX;
}
//mem.Free
void mem_Free(dword mptr)
{
$push eax
$push ebx
$push ecx
$mov eax, 68
$mov ebx, 13
$mov ecx, mptr
$test ecx, ecx
$jz end0
$int 0x40
@end0:
$pop ecx
$pop ebx
$pop eax
}
//stdcall dword ??
inline fastcall mem_Move( EDI, ESI, ECX)
{
asm {
mov eax, ecx
cmp edi, esi
jg l1
je l2
sar ecx, 2
js l2
rep movsd
mov ecx, eax
and ecx, 3
rep movsb
jmp short l2
l1: lea esi, dsdword[ esi+ecx-4]
lea edi, dsdword[ edi+ecx-4]
sar ecx, 2
js l2
std
rep movsd
mov ecx, eax
and ecx, 3
add esi, 3
add edi, 3
rep movsb
cld
l2:
}
}