Guest User

Untitled

a guest
Oct 18th, 2018
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.92 KB | None | 0 0
  1. ;normalizace [edi] - mantisa nebude zaинnat ani konиit na nulu
  2. ;zmмnн esi,edi
  3. norm proc
  4. cmp dword ptr [edi-12],0
  5. jbe @@ret ;zlomek nebo nula
  6. call trim
  7. mov ecx,[edi-12]
  8. test ecx,ecx
  9. jz @@ret ;trim vэsledek vynulovalo
  10. xor edx,edx
  11. cmp [edi],edx
  12. jnz @@ret
  13. mov eax,edi
  14. @@lp: add eax,4
  15. dec dword ptr [edi-4]
  16. jo @@nul
  17. dec ecx
  18. jz @@nul
  19. cmp [eax],edx
  20. jz @@lp
  21. @@e: mov esi,eax
  22. mov [edi-12],ecx
  23. cld
  24. rep movsd
  25. @@ret: ret
  26. @@nul: mov dword ptr [edi-12],0
  27. ret
  28. norm endp
  29.  
  30. @NORMX@4: mov eax,ecx
  31. @normx proc uses esi edi
  32. mov edi,eax
  33. call norm
  34. ret
  35. @normx endp
  36.  
  37.  
  38. ;alokuje инslo s mantisou dйlky eax
  39. @ALLOCX@4: mov eax,ecx
  40. @allocx proc
  41. push eax
  42. lea eax,[eax*4+HED+RES] ;vиetnм hlaviиky a rezervovanйho mнsta
  43. push eax
  44. call Alloc ; вызывает функцию из C++ - void *Alloc(int size) { return operator new(size); }
  45. pop edx
  46. pop ecx
  47. test eax,eax
  48. jz @@ret
  49. add eax,HED
  50. mov [eax-16],ecx
  51. mov dword ptr [eax-12],0 ;inicializuj na nulu
  52. mov dword ptr [eax-4],1
  53. mov dword ptr [eax-8],0
  54. @@ret: ret
  55. @allocx endp
  56.  
  57. ALLOCN:
  58. ALLOCNX proc
  59. mov eax,[esp+8]
  60. lea eax,[eax*4+HED+RES] ;vиetnм hlaviиky a rezervovanйho mнsta
  61. push eax
  62. mul dword ptr [esp+8]
  63. push eax
  64. call Alloc
  65. pop edx
  66. pop ecx
  67. test eax,eax
  68. jz @@ret
  69. lea eax,[eax+edx+HED]
  70. @@lp:
  71. sub eax,ecx
  72. mov edx,[esp+8]
  73. mov [eax-16],edx
  74. mov dword ptr [eax-12],0 ;inicializuj na nulu
  75. mov dword ptr [eax-4],1
  76. mov dword ptr [eax-8],0
  77. mov edx,[esp+4]
  78. mov edx,[esp+4*edx+8]
  79. mov [edx],eax
  80. dec dword ptr [esp+4]
  81. jnz @@lp
  82. @@ret: ret
  83. ALLOCNX endp
  84.  
  85. ;uvolnмnн pamмti
  86. @FREEX@4: mov eax,ecx
  87. @freex proc
  88. test eax,eax
  89. jz @@ret
  90. sub eax,HED
  91. push eax
  92. call Free
  93. pop eax
  94. @@ret: ret
  95. @freex endp
Add Comment
Please, Sign In to add comment