Subversion Repositories Kolibri OS

Rev

Rev 1971 | Blame | Last modification | View Log | Download | RSS feed

  1. //mem.Init
  2. dword mem_Init()
  3. {
  4.         $push    ebx
  5.         $mov     eax, 68
  6.         $mov     ebx, 11
  7.         $int     0x40
  8.        
  9.         $pop     ebx
  10.         return  EAX;
  11. }
  12.  
  13. //mem.Alloc
  14. dword mem_Alloc(dword size)
  15. {
  16.         $push    ebx
  17.         $push    ecx
  18.         $mov     eax, 68
  19.         $mov     ebx, 12
  20.         $mov     ecx, size
  21.         $int     0x40
  22.        
  23.         $pop     ecx
  24.         $pop     ebx
  25.         return  EAX;
  26. }
  27.  
  28. //mem.ReAlloc
  29. stdcall dword mem_ReAlloc(dword mptr, size)
  30. {
  31.         //$push    ebx ecx edx
  32.         $push    ebx
  33.         $push    ecx
  34.         $push    edx
  35.         $mov     eax, 68
  36.         $mov     ebx, 20
  37.         $mov     ecx, size
  38.         $mov     edx, mptr
  39.         $int     0x40
  40.  
  41.         $pop     edx
  42.         $pop     ecx
  43.         $pop     ebx
  44.         //$pop     edx ecx ebx
  45.         return   EAX;
  46. }
  47.  
  48. //mem.Free
  49. void mem_Free(dword mptr)
  50. {
  51.         $push    eax
  52.         $push    ebx
  53.         $push    ecx
  54.         $mov     eax, 68
  55.         $mov     ebx, 13
  56.         $mov     ecx, mptr
  57.         $test    ecx, ecx
  58.         $jz      end0
  59.         $int     0x40
  60.    @end0:
  61.         $pop     ecx
  62.         $pop     ebx
  63.         $pop     eax
  64. }
  65.  
  66. //stdcall dword ??
  67. inline fastcall mem_Move( EDI, ESI, ECX)
  68. {
  69.   asm {
  70.     mov eax, ecx
  71.     cmp edi, esi
  72.     jg l1
  73.     je l2
  74.     sar ecx, 2
  75.     js l2
  76.     rep movsd
  77.     mov ecx, eax
  78.     and ecx, 3
  79.     rep movsb
  80.     jmp short l2
  81. l1: lea esi, dsdword[ esi+ecx-4]
  82.     lea edi, dsdword[ edi+ecx-4]
  83.     sar ecx, 2
  84.     js l2
  85.     std
  86.     rep movsd
  87.     mov ecx, eax
  88.     and ecx, 3
  89.     add esi, 3
  90.     add edi, 3
  91.     rep movsb
  92.     cld
  93. l2:
  94.   }
  95. }
  96.