Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. #code32 TRUE
  2.  
  3. inline fastcall dword malloc(dword ECX){
  4.         dword   size, heap;
  5.         #speed
  6.         size = ECX;
  7.         EAX = 68;
  8.         EBX = 11;
  9.         $int 0x40;
  10.         heap = EAX;
  11.         IF (size<=heap)
  12.         {
  13.                 EAX = 68;
  14.                 EBX = 12;
  15.                 ECX = size;
  16.                 $int 0x40;
  17.         }
  18.         ELSE EAX=-1;
  19.         #codesize
  20. }
  21.  
  22. inline fastcall dword free(dword ECX){
  23.         #speed
  24.         EAX = 68;
  25.         EBX = 13;
  26.         $int 0x40;
  27.         #codesize
  28. }
  29.  
  30. inline fastcall dword realloc(dword ECX, EDX){
  31.         #speed
  32.         EAX = 68;
  33.         EBX = 20;
  34.         $int 0x40;
  35.         #codesize
  36. }
  37.  
  38. inline fastcall memmov( EDI, ESI, ECX)
  39. {
  40.   asm {
  41.     MOV EAX, ECX
  42.     CMP EDI, ESI
  43.     JG L1
  44.     JE L2
  45.     SAR ECX, 2
  46.     JS L2
  47.     REP MOVSD
  48.     MOV ECX, EAX
  49.     AND ECX, 3
  50.     REP MOVSB
  51.     JMP SHORT L2
  52. L1: LEA ESI, DSDWORD[ ESI+ECX-4]
  53.     LEA EDI, DSDWORD[ EDI+ECX-4]
  54.     SAR ECX, 2
  55.     JS L2
  56.     STD
  57.     REP MOVSD
  58.     MOV ECX, EAX
  59.     AND ECX, 3
  60.     ADD ESI, 3
  61.     ADD EDI, 3
  62.     REP MOVSB
  63.     CLD
  64. L2:
  65.   }
  66. }
  67.