Subversion Repositories Kolibri OS

Rev

Rev 903 | Blame | Compare with Previous | 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.  
  39. inline fastcall memmov( EDI, ESI, ECX)
  40. {
  41.   asm {
  42.     MOV EAX, ECX
  43.     CMP EDI, ESI
  44.     JG L1
  45.     JE L2
  46.     SAR ECX, 2
  47.     JS L2
  48.     REP MOVSD
  49.     MOV ECX, EAX
  50.     AND ECX, 3
  51.     REP MOVSB
  52.     JMP SHORT L2
  53. L1: LEA ESI, DSDWORD[ ESI+ECX-4]
  54.     LEA EDI, DSDWORD[ EDI+ECX-4]
  55.     SAR ECX, 2
  56.     JS L2
  57.     STD
  58.     REP MOVSD
  59.     MOV ECX, EAX
  60.     AND ECX, 3
  61.     ADD ESI, 3
  62.     ADD EDI, 3
  63.     REP MOVSB
  64.     CLD
  65. L2:
  66.   }
  67. }
  68.